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
 | 
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.
 |