Add more PM:App functions
This commit is contained in:
parent
487736c172
commit
edfa48d445
@ -47,3 +47,22 @@ Result PM_GetFIRMLaunchParams(u32 size, u8* out);
|
|||||||
* @param in Buffer to retrieve the launch parameters from.
|
* @param in Buffer to retrieve the launch parameters from.
|
||||||
*/
|
*/
|
||||||
Result PM_LaunchFIRMSetParams(u32 firm_titleid_low, u32 size, u8* in);
|
Result PM_LaunchFIRMSetParams(u32 firm_titleid_low, u32 size, u8* in);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Terminates the current Application
|
||||||
|
* @param timeout Timeout in nanoseconds
|
||||||
|
*/
|
||||||
|
Result PM_TerminateCurrentApplication(u64 timeout);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Terminates the specified Process
|
||||||
|
* @param pid Process-ID of the process to terminate
|
||||||
|
* @param timeout Timeout on nanoseconds
|
||||||
|
*/
|
||||||
|
Result PM_TerminateProcess(u8 pid, u64 timeout);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Unregisters a process
|
||||||
|
* @param tid TitleID of the process to unregister
|
||||||
|
*/
|
||||||
|
Result PM_UnregisterProcess(u64 tid);
|
@ -43,6 +43,66 @@ Result PM_LaunchTitle(u8 mediatype, u64 titleid, u32 launch_flags)
|
|||||||
return (Result)cmdbuf[1];
|
return (Result)cmdbuf[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Result PM_LaunchFIRMSetParams(u32 firm_titleid_low, u32 size, u8* in)
|
||||||
|
{
|
||||||
|
Result ret = 0;
|
||||||
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
|
cmdbuf[0] = IPC_MakeHeader(0x2,2,2); // 0x20082
|
||||||
|
cmdbuf[1] = firm_titleid_low;
|
||||||
|
cmdbuf[2] = size;
|
||||||
|
cmdbuf[3] = IPC_Desc_Buffer(size,IPC_BUFFER_R);
|
||||||
|
cmdbuf[4] = (u32)in;
|
||||||
|
|
||||||
|
if(R_FAILED(ret = svcSendSyncRequest(pmHandle)))return ret;
|
||||||
|
|
||||||
|
return (Result)cmdbuf[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
Result PM_TerminateCurrentApplication(u64 timeout)
|
||||||
|
{
|
||||||
|
Result ret = 0;
|
||||||
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
|
cmdbuf[0] = IPC_MakeHeader(0x3,2,0); // 0x30080
|
||||||
|
cmdbuf[1] = timeout & 0xffffffff;
|
||||||
|
cmdbuf[2] = (timeout >> 32) & 0xffffffff;
|
||||||
|
|
||||||
|
if(R_FAILED(ret = svcSendSyncRequest(pmHandle)))return ret;
|
||||||
|
|
||||||
|
return (Result)cmdbuf[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
Result PM_TerminateProcess(u8 pid, u64 timeout)
|
||||||
|
{
|
||||||
|
Result ret = 0;
|
||||||
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
|
cmdbuf[0] = IPC_MakeHeader(0x5,3,0); // 0x500C0
|
||||||
|
cmdbuf[1] = pid;
|
||||||
|
cmdbuf[2] = timeout & 0xffffffff;
|
||||||
|
cmdbuf[3] = (timeout >> 32) & 0xffffffff;
|
||||||
|
|
||||||
|
if(R_FAILED(ret = svcSendSyncRequest(pmHandle)))return ret;
|
||||||
|
|
||||||
|
return (Result)cmdbuf[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
Result PM_GetFIRMLaunchParams(u32 size, u8* out)
|
||||||
|
{
|
||||||
|
Result ret = 0;
|
||||||
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
|
cmdbuf[0] = IPC_MakeHeader(0x7,1,2); // 0x70042
|
||||||
|
cmdbuf[1] = size;
|
||||||
|
cmdbuf[2] = IPC_Desc_Buffer(size,IPC_BUFFER_W);
|
||||||
|
cmdbuf[3] = (u32)out;
|
||||||
|
|
||||||
|
if(R_FAILED(ret = svcSendSyncRequest(pmHandle)))return ret;
|
||||||
|
|
||||||
|
return (Result)cmdbuf[1];
|
||||||
|
}
|
||||||
|
|
||||||
Result PM_GetTitleExheaderFlags(u8 mediatype, u64 titleid, u8* out)
|
Result PM_GetTitleExheaderFlags(u8 mediatype, u64 titleid, u8* out)
|
||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
@ -76,31 +136,14 @@ Result PM_SetFIRMLaunchParams(u32 size, u8* in)
|
|||||||
return (Result)cmdbuf[1];
|
return (Result)cmdbuf[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
Result PM_GetFIRMLaunchParams(u32 size, u8* out)
|
Result PM_UnregisterProcess(u64 tid)
|
||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = IPC_MakeHeader(0x7,1,2); // 0x70042
|
cmdbuf[0] = IPC_MakeHeader(0xC,0,0); // 0xC0000
|
||||||
cmdbuf[1] = size;
|
cmdbuf[1] = tid & 0xffffffff;
|
||||||
cmdbuf[2] = IPC_Desc_Buffer(size,IPC_BUFFER_W);
|
cmdbuf[2] = (tid >> 32) & 0xffffffff;
|
||||||
cmdbuf[3] = (u32)out;
|
|
||||||
|
|
||||||
if(R_FAILED(ret = svcSendSyncRequest(pmHandle)))return ret;
|
|
||||||
|
|
||||||
return (Result)cmdbuf[1];
|
|
||||||
}
|
|
||||||
|
|
||||||
Result PM_LaunchFIRMSetParams(u32 firm_titleid_low, u32 size, u8* in)
|
|
||||||
{
|
|
||||||
Result ret = 0;
|
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
|
||||||
|
|
||||||
cmdbuf[0] = IPC_MakeHeader(0x2,2,2); // 0x20082
|
|
||||||
cmdbuf[1] = firm_titleid_low;
|
|
||||||
cmdbuf[2] = size;
|
|
||||||
cmdbuf[3] = IPC_Desc_Buffer(size,IPC_BUFFER_R);
|
|
||||||
cmdbuf[4] = (u32)in;
|
|
||||||
|
|
||||||
if(R_FAILED(ret = svcSendSyncRequest(pmHandle)))return ret;
|
if(R_FAILED(ret = svcSendSyncRequest(pmHandle)))return ret;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user