Handles for services are retrieved from the service manager port, "srv:". Services are an abstraction of ports, they operate the same way except regular ports can have their handles retrieved directly from a SVC(svcConnectToPort).
Service Manager Port "srv:"
Command Header
|
Description
|
0x00010002
|
Initialize
|
0x00020000
|
GetProcSemaphore (the handle from this gets signaled when notifications for this process gets triggered)
|
0x00030100
|
RegisterService (8-byte servicename, u32 strlen, u32 flags?)
|
0x000400C0
|
UnregisterService (8-byte servicename, u32 strlen)
|
0x00050100
|
GetServiceHandle (same input as RegisterService)
|
0x00090040
|
IsRegistered This enables the specified notificationID for the current process.
|
0x000B0000
|
This returns the notificationID which was triggered, if any(see GetProcSemaphore).
|
Notifications
ID
|
Description
|
0x100
|
This indicates that all processes must terminate: power-off, reboot, or FIRM-launch.
|
0x204
|
This indicates that the HOME button was pressed.
|