Services

From 3dbrew
Jump to navigation Jump to search

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.