Services are an abstraction of ports and are the commonly used way of inter-process communication outside of the kernel. While handles of regular ports are retrieved from svcConnectToPort, service handles are retrieved through the port srv: ("service manager").
When a service is registered, svcCreatePort is used without a port-name. This means that the port is inaccessible via the port SVCs outside of sm-module. See below for getting a session handle for sending commands to services.
Processes with PID less than or equal to the number of NATIVE_FIRM built-in modules (fs, sm, pm, pxi, ldr) have access to all services. This value is obtained from svcGetSystemInfo.
Service Manager Port "srv:"
Service Manager Process-Manager Port/Service "srv:pm"
|Command Header (port), prior to 7.0.0-13||Command Header (service), post 7.0.0-13||Description|
Prior to to 7.0.0-13, the commands listed for "srv:" were also accessible under this port with the same command-headers. Starting with 7.0.0-13, the "srv:pm" port was changed to a service. With this change, commandIDs for these commands were changed. "srv:pm" was originally vulnerable, this was fixed with 7.0.0-13, see here. Originally any process could use "srv:pm", however starting with 7.0.0-13 only the built-in NATIVE_FIRM sysmodules have access to it. The only system title which uses "srv:pm" is the Process Manager.
|0x100||This indicates that all processes must terminate: power-off, reboot, or FIRM-launch.|
|0x104||This indicates that the system is entering sleep mode. (PTM:NotifySleepPreparationComplete needed for this and the following?)|
|0x105||This indicates that the system has exited sleep mode.|
|0x107||Unknown. Subscribed to by CECD module.|
|0x108||error at boot?|
|0x110-0x11F||Unknown. See PM launch flags.|
|0x202||POWER button pressed|
|0x203||POWER button held long|
|0x204||HOME button pressed|
|0x205||HOME button released|
|0x206||This is signaled by NWMEXT:ControlWirelessEnabled and when the physical Wi-Fi slider is enabled|
|0x207||SD card inserted|
|0x208||Game cartridge inserted|
|0x209||SD card removed|
|0x20A||Game cartridge removed|
|0x20B||Game cartridge inserted or removed|
|0x302||Unknown. Signaled by nwm module.|
|0x303||Unknown. Subscribed to by CECD module.|
|0x304||Unknown. Subscribed to by CECD module.|