mirror of
https://github.com/switchbrew/libnx.git
synced 2025-06-21 04:22:50 +02:00
capsc: account for new command sizes
This commit is contained in:
parent
73d79d4a0f
commit
65c643f149
@ -9,6 +9,13 @@
|
|||||||
#include "../sf/service.h"
|
#include "../sf/service.h"
|
||||||
#include "../services/caps.h"
|
#include "../services/caps.h"
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
u64 application_id;
|
||||||
|
u8 unknown_08;
|
||||||
|
u8 unknown_09;
|
||||||
|
u8 reserved[6];
|
||||||
|
} CapsApplicationId;
|
||||||
|
|
||||||
/// Initialize caps:c
|
/// Initialize caps:c
|
||||||
Result capscInitialize(void);
|
Result capscInitialize(void);
|
||||||
|
|
||||||
@ -40,7 +47,7 @@ Result capscNotifyAlbumStorageIsUnAvailable(CapsAlbumStorage storage);
|
|||||||
* @param[in] appletResourceUserId AppletResourceUserId.
|
* @param[in] appletResourceUserId AppletResourceUserId.
|
||||||
* @param[in] application_id ApplicationId.
|
* @param[in] application_id ApplicationId.
|
||||||
*/
|
*/
|
||||||
Result capscRegisterAppletResourceUserId(u64 appletResourceUserId, u64 application_id);
|
Result capscRegisterAppletResourceUserId(u64 appletResourceUserId, const CapsApplicationId *application_id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Unregister an applet.
|
* @brief Unregister an applet.
|
||||||
@ -49,7 +56,7 @@ Result capscRegisterAppletResourceUserId(u64 appletResourceUserId, u64 applicati
|
|||||||
* @param[in] appletResourceUserId AppletResourceUserId.
|
* @param[in] appletResourceUserId AppletResourceUserId.
|
||||||
* @param[in] application_id ApplicationId.
|
* @param[in] application_id ApplicationId.
|
||||||
*/
|
*/
|
||||||
Result capscUnregisterAppletResourceUserId(u64 appletResourceUserId, u64 application_id);
|
Result capscUnregisterAppletResourceUserId(u64 appletResourceUserId, const CapsApplicationId *application_id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get an ApplicationId that corresponds to an AppletResourceUserId.
|
* @brief Get an ApplicationId that corresponds to an AppletResourceUserId.
|
||||||
@ -58,7 +65,7 @@ Result capscUnregisterAppletResourceUserId(u64 appletResourceUserId, u64 applica
|
|||||||
* @param[out] application_id ApplicationId.
|
* @param[out] application_id ApplicationId.
|
||||||
* @param[in] appletResourceUserId AppletResourceUserId.
|
* @param[in] appletResourceUserId AppletResourceUserId.
|
||||||
*/
|
*/
|
||||||
Result capscGetApplicationIdFromAruid(u64 *application_id, u64 aruid);
|
Result capscGetApplicationIdFromAruid(CapsApplicationId *application_id, u64 aruid);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Checks whether an ApplicationId is registered.
|
* @brief Checks whether an ApplicationId is registered.
|
||||||
@ -74,7 +81,7 @@ Result capscCheckApplicationIdRegistered(u64 application_id);
|
|||||||
* @param[in] contents \ref CapsAlbumFileContents
|
* @param[in] contents \ref CapsAlbumFileContents
|
||||||
* @param[out] file_id \ref CapsAlbumFileId
|
* @param[out] file_id \ref CapsAlbumFileId
|
||||||
*/
|
*/
|
||||||
Result capscGenerateCurrentAlbumFileId(u64 application_id, CapsAlbumFileContents contents, CapsAlbumFileId *file_id);
|
Result capscGenerateCurrentAlbumFileId(const CapsApplicationId *application_id, CapsAlbumFileContents contents, CapsAlbumFileId *file_id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Generate an ApplicationAlbumEntry based on parameters.
|
* @brief Generate an ApplicationAlbumEntry based on parameters.
|
||||||
|
@ -54,30 +54,38 @@ Result capscNotifyAlbumStorageIsUnAvailable(CapsAlbumStorage storage) {
|
|||||||
return _capscCmdInU8NoOut(&g_capscSrv, 2002, storage);
|
return _capscCmdInU8NoOut(&g_capscSrv, 2002, storage);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result capscRegisterAppletResourceUserId(u64 appletResourceUserId, u64 application_id) {
|
Result capscRegisterAppletResourceUserId(u64 appletResourceUserId, const CapsApplicationId *application_id) {
|
||||||
if (hosversionBefore(2,0,0))
|
if (hosversionBefore(2,0,0))
|
||||||
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
||||||
const struct {
|
const struct {
|
||||||
u64 appletResourceUserId;
|
u64 appletResourceUserId;
|
||||||
u64 applicationId;
|
CapsApplicationId applicationId;
|
||||||
} in = { appletResourceUserId, application_id };
|
} in = { appletResourceUserId, *application_id };
|
||||||
return serviceDispatchIn(&g_capscSrv, 2011, in);
|
return serviceDispatchIn(&g_capscSrv, 2011, in);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result capscUnregisterAppletResourceUserId(u64 appletResourceUserId, u64 application_id) {
|
Result capscUnregisterAppletResourceUserId(u64 appletResourceUserId, const CapsApplicationId *application_id) {
|
||||||
if (hosversionBefore(2,0,0))
|
if (hosversionBefore(2,0,0))
|
||||||
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
||||||
const struct {
|
const struct {
|
||||||
u64 appletResourceUserId;
|
u64 appletResourceUserId;
|
||||||
u64 applicationId;
|
CapsApplicationId applicationId;
|
||||||
} in = { appletResourceUserId, application_id };
|
} in = { appletResourceUserId, *application_id };
|
||||||
return serviceDispatchIn(&g_capscSrv, 2012, in);
|
return serviceDispatchIn(&g_capscSrv, 2012, in);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result capscGetApplicationIdFromAruid(u64 *application_id, u64 aruid) {
|
Result capscGetApplicationIdFromAruid(CapsApplicationId *application_id, u64 aruid) {
|
||||||
if (hosversionBefore(2,0,0))
|
if (hosversionBefore(2,0,0))
|
||||||
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
||||||
return serviceDispatchInOut(&g_capscSrv, 2013, aruid, *application_id);
|
|
||||||
|
if (hosversionAtLeast(19,0,0))
|
||||||
|
return serviceDispatchInOut(&g_capscSrv, 2013, aruid, *application_id);
|
||||||
|
|
||||||
|
u64 old_application_id=0;
|
||||||
|
Result rc = serviceDispatchInOut(&g_capscSrv, 2013, aruid, old_application_id);
|
||||||
|
if (R_SUCCEEDED(rc))
|
||||||
|
*application_id = (CapsApplicationId){ old_application_id, 0, 0 };
|
||||||
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
Result capscCheckApplicationIdRegistered(u64 application_id) {
|
Result capscCheckApplicationIdRegistered(u64 application_id) {
|
||||||
@ -86,13 +94,13 @@ Result capscCheckApplicationIdRegistered(u64 application_id) {
|
|||||||
return serviceDispatchIn(&g_capscSrv, 2014, application_id);
|
return serviceDispatchIn(&g_capscSrv, 2014, application_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result capscGenerateCurrentAlbumFileId(u64 application_id, CapsAlbumFileContents contents, CapsAlbumFileId *file_id) {
|
Result capscGenerateCurrentAlbumFileId(const CapsApplicationId *application_id, CapsAlbumFileContents contents, CapsAlbumFileId *file_id) {
|
||||||
if (hosversionBefore(2,0,0))
|
if (hosversionBefore(2,0,0))
|
||||||
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
||||||
const struct {
|
const struct {
|
||||||
u8 type;
|
u8 type;
|
||||||
u64 applicationId;
|
CapsApplicationId applicationId;
|
||||||
} in = { contents, application_id };
|
} in = { contents, *application_id };
|
||||||
return serviceDispatchInOut(&g_capscSrv, 2101, in, *file_id);
|
return serviceDispatchInOut(&g_capscSrv, 2101, in, *file_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user