#include <3ds/types.h>
#include <3ds/srv.h>
#include <3ds/svc.h>
+#include <3ds/ipc.h>
/*
u32* cmdbuf = getThreadCommandBuffer();
- cmdbuf[0] = 0x10002;
- cmdbuf[1] = 0x20;
+ cmdbuf[0] = IPC_MakeHeader(0x1,0,2); // 0x10002
+ cmdbuf[1] = IPC_Desc_CurProcessHandle();
if((rc = svcSendSyncRequest(g_srv_handle)))return rc;
Result rc = 0;
u32* cmdbuf = getThreadCommandBuffer();
- cmdbuf[0] = 0x50100;
- strcpy((char*) &cmdbuf[1], name);
+ cmdbuf[0] = IPC_MakeHeader(0x5,4,0); // 0x50100
+ strncpy((char*) &cmdbuf[1], name,2);
cmdbuf[3] = strlen(name);
cmdbuf[4] = 0x0;
Result srvRegisterService(Handle* out, const char* name, int maxSessions)
{
u32* cmdbuf = getThreadCommandBuffer();
- cmdbuf[0] = 0x30100;
- strcpy((char*) &cmdbuf[1], name);
+ cmdbuf[0] = IPC_MakeHeader(0x3,4,0); // 0x30100
+ strncpy((char*) &cmdbuf[1], name,2);
cmdbuf[3] = strlen(name);
cmdbuf[4] = maxSessions;
Result srvUnregisterService(const char* name)
{
u32* cmdbuf = getThreadCommandBuffer();
- cmdbuf[0] = 0x400C0;
- strcpy((char*) &cmdbuf[1], name);
+ cmdbuf[0] = IPC_MakeHeader(0x4,3,0); // 0x400C0
+ strncpy((char*) &cmdbuf[1], name,2);
cmdbuf[3] = strlen(name);
Result rc;
u32 *cmdbuf = getThreadCommandBuffer();
- cmdbuf[0] = 0x04030082; // <7.x
+ cmdbuf[0] = IPC_MakeHeader(0x403,2,2); // 0x4030082 // <7.x
cmdbuf[1] = procid;
cmdbuf[2] = count;
- cmdbuf[3] = (count << 16) | 2;
+ cmdbuf[3] = IPC_Desc_StaticBuffer(count*4,0);
cmdbuf[4] = (u32)serviceaccesscontrol;
if((rc = svcSendSyncRequest(g_srv_handle))) return rc;
u32 *cmdbuf = getThreadCommandBuffer();
- cmdbuf[0] = 0x04040040; // <7.x
+ cmdbuf[0] = IPC_MakeHeader(0x404,1,0); // 0x4040040 // <7.x
cmdbuf[1] = procid;
if((rc = svcSendSyncRequest(g_srv_handle))) return rc;