mirror of
https://github.com/switchbrew/libnx.git
synced 2025-07-04 10:32:15 +02:00
fix structs
expose overlay fix aruid un-/registration
This commit is contained in:
parent
4d973fc3be
commit
1132d6bac0
@ -88,9 +88,8 @@ typedef struct {
|
|||||||
CapsAlbumFileDateTime datetime; ///< \ref CapsAlbumFileDateTime
|
CapsAlbumFileDateTime datetime; ///< \ref CapsAlbumFileDateTime
|
||||||
u8 storage; ///< \ref CapsAlbumStorage
|
u8 storage; ///< \ref CapsAlbumStorage
|
||||||
u8 content; ///< \ref CapsAlbumFileContents
|
u8 content; ///< \ref CapsAlbumFileContents
|
||||||
u32 pad_x12; ///< Set to 0 by official software
|
u8 pad_x12[0x6]; ///< padding
|
||||||
u16 pad_x16; ///< Set to 0 by official software
|
} CapsAlbumFileId;
|
||||||
} PACKED CapsAlbumFileId;
|
|
||||||
|
|
||||||
/// AlbumEntry
|
/// AlbumEntry
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -104,14 +103,17 @@ typedef struct {
|
|||||||
u8 data[0x20]; ///< Data.
|
u8 data[0x20]; ///< Data.
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
u8 unk_x0[0x20]; ///< Unknown.
|
u8 unk_x0[0x20]; ///< aes256 with random key over \ref AlbumEntry.
|
||||||
} v0; ///< Pre-7.0.0
|
} v0; ///< Pre-7.0.0
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
u64 size; ///< size of the entry
|
u64 size; ///< size of the entry
|
||||||
u64 application_id; ///< ApplicationId
|
u64 hash; ///< aes256 with hardcoded key over \ref AlbumEntry.
|
||||||
CapsAlbumFileDateTime datetime; ///< \ref CapsAlbumFileDateTime
|
CapsAlbumFileDateTime datetime; ///< \ref CapsAlbumFileDateTime
|
||||||
u8 unk_x18[0x8]; ///< Unknown.
|
u8 storage; ///< \ref CapsAlbumStorage
|
||||||
|
u8 content; ///< \ref CapsAlbumFileContents
|
||||||
|
u8 pad_x1a[0x5]; ///< padding
|
||||||
|
u8 unk_x1f; ///< Set to 1 by official software
|
||||||
} v1; ///< [7.0.0+]
|
} v1; ///< [7.0.0+]
|
||||||
};
|
};
|
||||||
} CapsApplicationAlbumEntry;
|
} CapsApplicationAlbumEntry;
|
||||||
|
@ -19,13 +19,16 @@ void capscExit(void);
|
|||||||
Service* capscGetServiceSession(void);
|
Service* capscGetServiceSession(void);
|
||||||
Result capscNotifyAlbumStorageIsAvailable(CapsAlbumStorage storage);
|
Result capscNotifyAlbumStorageIsAvailable(CapsAlbumStorage storage);
|
||||||
Result capscNotifyAlbumStorageIsUnAvailable(CapsAlbumStorage storage);
|
Result capscNotifyAlbumStorageIsUnAvailable(CapsAlbumStorage storage);
|
||||||
Result capscRegisterAppletResourceUserId(u64 appletResourceUserId);
|
Result capscRegisterAppletResourceUserId(u64 appletResourceUserId, u64 application_id);
|
||||||
Result capscUnregisterAppletResourceUserId(u64 appletResourceUserId);
|
Result capscUnregisterAppletResourceUserId(u64 appletResourceUserId, u64 application_id);
|
||||||
Result capscGetApplicationIdFromAruid(u64 *application_id, u64 aruid);
|
Result capscGetApplicationIdFromAruid(u64 *application_id, u64 aruid);
|
||||||
Result capscCheckApplicationIdRegistered(u64 application_id);
|
Result capscCheckApplicationIdRegistered(u64 application_id);
|
||||||
Result capscGenerateCurrentAlbumFileId(u64 application_id, CapsAlbumFileContents contents, CapsAlbumFileId *file_id);
|
Result capscGenerateCurrentAlbumFileId(u64 application_id, CapsAlbumFileContents contents, CapsAlbumFileId *file_id);
|
||||||
|
Result capscGenerateApplicationAlbumEntry(CapsApplicationAlbumEntry *appEntry, const CapsAlbumEntry *entry, u64 application_id);
|
||||||
Result capscSaveAlbumScreenShotFile(CapsAlbumFileId *file_id, void* buffer, u64 buffer_size);
|
Result capscSaveAlbumScreenShotFile(CapsAlbumFileId *file_id, void* buffer, u64 buffer_size);
|
||||||
Result capscSaveAlbumScreenShotFileEx(CapsAlbumFileId *file_id, u64 unk_0, u64 unk_1, u64 unk_2, void* buffer, u64 buffer_size);
|
Result capscSaveAlbumScreenShotFileEx(CapsAlbumFileId *file_id, u64 unk_0, u64 unk_1, u64 unk_2, void* buffer, u64 buffer_size);
|
||||||
|
Result capscSetOverlayScreenShotThumbnailData(const CapsAlbumFileId *file_id, const void* image, u64 image_size);
|
||||||
|
Result capscSetOverlayMovieThumbnailData(const CapsAlbumFileId *file_id, const void* image, u64 image_size);
|
||||||
|
|
||||||
Result capscOpenAlbumMovieReadStream(u64 *stream, const CapsAlbumFileId *file_id);
|
Result capscOpenAlbumMovieReadStream(u64 *stream, const CapsAlbumFileId *file_id);
|
||||||
Result capscCloseAlbumMovieStream(u64 stream);
|
Result capscCloseAlbumMovieStream(u64 stream);
|
||||||
|
@ -56,23 +56,23 @@ Result capscNotifyAlbumStorageIsUnAvailable(CapsAlbumStorage storage) {
|
|||||||
return _capscCmdInU8NoOut(&g_capscSrv, 2002, inval);
|
return _capscCmdInU8NoOut(&g_capscSrv, 2002, inval);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result capscRegisterAppletResourceUserId(u64 appletResourceUserId) {
|
Result capscRegisterAppletResourceUserId(u64 appletResourceUserId, u64 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 version;
|
u64 appletResourceUserId;
|
||||||
u64 AppletResourceUserId;
|
u64 applicationId;
|
||||||
} in = { capsGetShimLibraryVersion(), appletResourceUserId };
|
} in = { appletResourceUserId, application_id };
|
||||||
return serviceDispatchIn(&g_capscSrv, 2011, in);
|
return serviceDispatchIn(&g_capscSrv, 2011, in);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result capscUnregisterAppletResourceUserId(u64 appletResourceUserId) {
|
Result capscUnregisterAppletResourceUserId(u64 appletResourceUserId, u64 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 version;
|
u64 appletResourceUserId;
|
||||||
u64 AppletResourceUserId;
|
u64 applicationId;
|
||||||
} in = { capsGetShimLibraryVersion(), appletResourceUserId };
|
} in = { appletResourceUserId, application_id };
|
||||||
return serviceDispatchIn(&g_capscSrv, 2012, in);
|
return serviceDispatchIn(&g_capscSrv, 2012, in);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -85,7 +85,6 @@ Result capscGetApplicationIdFromAruid(u64 *application_id, u64 aruid) {
|
|||||||
Result capscCheckApplicationIdRegistered(u64 application_id) {
|
Result capscCheckApplicationIdRegistered(u64 application_id) {
|
||||||
if (hosversionBefore(2,0,0))
|
if (hosversionBefore(2,0,0))
|
||||||
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
||||||
|
|
||||||
return serviceDispatchIn(&g_capscSrv, 2014, application_id);
|
return serviceDispatchIn(&g_capscSrv, 2014, application_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -94,11 +93,21 @@ Result capscGenerateCurrentAlbumFileId(u64 application_id, CapsAlbumFileContents
|
|||||||
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
||||||
const struct {
|
const struct {
|
||||||
u8 type;
|
u8 type;
|
||||||
u64 application_id;
|
u64 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Result capscGenerateApplicationAlbumEntry(CapsApplicationAlbumEntry *appEntry, const CapsAlbumEntry *entry, u64 application_id) {
|
||||||
|
if (hosversionBefore(2,0,0))
|
||||||
|
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
||||||
|
const struct {
|
||||||
|
CapsAlbumEntry entry;
|
||||||
|
u64 applicationId;
|
||||||
|
} in = { *entry, application_id };
|
||||||
|
return serviceDispatchInOut(&g_capscSrv, 2102, in, *appEntry);
|
||||||
|
}
|
||||||
|
|
||||||
Result capscSaveAlbumScreenShotFile(CapsAlbumFileId *file_id, void* buffer, u64 buffer_size) {
|
Result capscSaveAlbumScreenShotFile(CapsAlbumFileId *file_id, void* buffer, u64 buffer_size) {
|
||||||
if (hosversionBefore(2,0,0) || hosversionAtLeast(4,0,0))
|
if (hosversionBefore(2,0,0) || hosversionAtLeast(4,0,0))
|
||||||
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
||||||
@ -123,23 +132,23 @@ Result capscSaveAlbumScreenShotFileEx(CapsAlbumFileId *file_id, u64 unk_0, u64 u
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
static Result _capscSetOverlayThumbnailData(u32 cmd_id, CapsAlbumFileId *file_id, void* buffer, u64 size) {
|
static Result _capscSetOverlayThumbnailData(u32 cmd_id, const CapsAlbumFileId *file_id, const void* image, u64 image_size) {
|
||||||
return serviceDispatchIn(&g_capscSrv, cmd_id, *file_id,
|
return serviceDispatchIn(&g_capscSrv, cmd_id, *file_id,
|
||||||
.buffer_attrs = { SfBufferAttr_HipcMapTransferAllowsNonSecure | SfBufferAttr_HipcMapAlias | SfBufferAttr_In },
|
.buffer_attrs = { SfBufferAttr_HipcMapTransferAllowsNonSecure | SfBufferAttr_HipcMapAlias | SfBufferAttr_In },
|
||||||
.buffers = { { buffer, size }, },
|
.buffers = { { image, image_size }, },
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result capscSetOverlayScreenShotThumbnailData(CapsAlbumFileId *file_id, void* buffer, u64 size) {
|
Result capscSetOverlayScreenShotThumbnailData(const CapsAlbumFileId *file_id, const void* image, u64 image_size) {
|
||||||
if (hosversionBefore(2,0,0))
|
if (hosversionBefore(2,0,0))
|
||||||
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
||||||
return _capscSetOverlayThumbnailData(2301, file_id, buffer, size);
|
return _capscSetOverlayThumbnailData(2301, file_id, image, image_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result capscSetOverlayMovieThumbnailData(CapsAlbumFileId *file_id, void* buffer, u64 size) {
|
Result capscSetOverlayMovieThumbnailData(const CapsAlbumFileId *file_id, const void* image, u64 image_size) {
|
||||||
if (hosversionBefore(4,0,0))
|
if (hosversionBefore(4,0,0))
|
||||||
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
||||||
return _capscSetOverlayThumbnailData(2302, file_id, buffer, size);
|
return _capscSetOverlayThumbnailData(2302, file_id, image, image_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static Result _capscOpenControlSession(Service *srv_out) {
|
static Result _capscOpenControlSession(Service *srv_out) {
|
||||||
|
Loading…
Reference in New Issue
Block a user