libnx v4.9.0
Loading...
Searching...
No Matches
ncm.h
Go to the documentation of this file.
1/**
2 * @file ncm.h
3 * @brief Content Manager (ncm) service IPC wrapper.
4 * @author Adubbz & zhuowei
5 * @copyright libnx Authors
6 */
7#pragma once
8#include "../types.h"
9#include "../services/ncm_types.h"
10#include "../services/fs.h"
11#include "../sf/service.h"
12
13/// ContentStorage
14typedef struct {
15 Service s; ///< IContentStorage
17
18/// ContentMetaDatabase
19typedef struct {
20 Service s; ///< IContentMetaDatabase
22
23/// RightsId
24typedef struct {
25 FsRightsId rights_id;
26 u8 key_generation; ///< [3.0.0+]
27 u8 pad[7]; ///< [3.0.0+]
29
30/// Initialize ncm.
32
33/// Exit ncm.
34void ncmExit(void);
35
36/// Gets the Service object for the actual ncm service session.
38
39Result ncmCreateContentStorage(NcmStorageId storage_id);
40Result ncmCreateContentMetaDatabase(NcmStorageId storage_id);
41Result ncmVerifyContentStorage(NcmStorageId storage_id);
42Result ncmVerifyContentMetaDatabase(NcmStorageId storage_id);
43Result ncmOpenContentStorage(NcmContentStorage* out_content_storage, NcmStorageId storage_id);
44Result ncmOpenContentMetaDatabase(NcmContentMetaDatabase* out_content_meta_database, NcmStorageId storage_id);
47Result ncmCleanupContentMetaDatabase(NcmStorageId storage_id);
54
55void ncmContentStorageClose(NcmContentStorage* cs);
56Result ncmContentStorageGeneratePlaceHolderId(NcmContentStorage* cs, NcmPlaceHolderId* out_id);
57Result ncmContentStorageCreatePlaceHolder(NcmContentStorage* cs, const NcmContentId* content_id, const NcmPlaceHolderId* placeholder_id, s64 size);
58Result ncmContentStorageDeletePlaceHolder(NcmContentStorage* cs, const NcmPlaceHolderId* placeholder_id);
59Result ncmContentStorageHasPlaceHolder(NcmContentStorage* cs, bool* out, const NcmPlaceHolderId* placeholder_id);
60Result ncmContentStorageWritePlaceHolder(NcmContentStorage* cs, const NcmPlaceHolderId* placeholder_id, u64 offset, const void* data, size_t data_size);
61Result ncmContentStorageRegister(NcmContentStorage* cs, const NcmContentId* content_id, const NcmPlaceHolderId* placeholder_id);
62Result ncmContentStorageDelete(NcmContentStorage* cs, const NcmContentId* content_id);
63Result ncmContentStorageHas(NcmContentStorage* cs, bool* out, const NcmContentId* content_id);
64Result ncmContentStorageGetPath(NcmContentStorage* cs, char* out_path, size_t out_size, const NcmContentId* content_id);
65Result ncmContentStorageGetPlaceHolderPath(NcmContentStorage* cs, char* out_path, size_t out_size, const NcmPlaceHolderId* placeholder_id);
66Result ncmContentStorageCleanupAllPlaceHolder(NcmContentStorage* cs);
67Result ncmContentStorageListPlaceHolder(NcmContentStorage* cs, NcmPlaceHolderId* out_ids, s32 count, s32* out_count);
68Result ncmContentStorageGetContentCount(NcmContentStorage* cs, s32* out_count);
69Result ncmContentStorageListContentId(NcmContentStorage* cs, NcmContentId* out_ids, s32 count, s32* out_count, s32 start_offset);
70Result ncmContentStorageGetSizeFromContentId(NcmContentStorage* cs, s64* out_size, const NcmContentId* content_id);
71Result ncmContentStorageDisableForcibly(NcmContentStorage* cs);
72Result ncmContentStorageRevertToPlaceHolder(NcmContentStorage* cs, const NcmPlaceHolderId* placeholder_id, const NcmContentId* old_content_id, const NcmContentId* new_content_id); ///< [2.0.0+]
74Result ncmContentStorageReadContentIdFile(NcmContentStorage* cs, void* out_data, size_t out_data_size, const NcmContentId* content_id, s64 offset); ///< [2.0.0+]
77Result ncmContentStorageWriteContentForDebug(NcmContentStorage* cs, const NcmContentId* content_id, s64 offset, const void* data, size_t data_size); ///< [2.0.0+]
81Result ncmContentStorageGetSizeFromPlaceHolderId(NcmContentStorage* cs, s64* out_size, const NcmPlaceHolderId* placeholder_id); ///< [4.0.0+]
83Result ncmContentStorageGetRightsIdFromPlaceHolderIdWithCache(NcmContentStorage* cs, NcmRightsId* out_rights_id, const NcmPlaceHolderId* placeholder_id, const NcmContentId* cache_content_id, FsContentAttributes attr); ///< [8.0.0+]
84Result ncmContentStorageRegisterPath(NcmContentStorage* cs, const NcmContentId* content_id, const char *path); ///< [13.0.0+]
87
88void ncmContentMetaDatabaseClose(NcmContentMetaDatabase* db);
89Result ncmContentMetaDatabaseSet(NcmContentMetaDatabase* db, const NcmContentMetaKey* key, const void* data, u64 data_size);
90Result ncmContentMetaDatabaseGet(NcmContentMetaDatabase* db, const NcmContentMetaKey* key, u64* out_size, void* out_data, u64 out_data_size);
91Result ncmContentMetaDatabaseRemove(NcmContentMetaDatabase* db, const NcmContentMetaKey *key);
92Result ncmContentMetaDatabaseGetContentIdByType(NcmContentMetaDatabase* db, NcmContentId* out_content_id, const NcmContentMetaKey* key, NcmContentType type);
93Result ncmContentMetaDatabaseListContentInfo(NcmContentMetaDatabase* db, s32* out_entries_written, NcmContentInfo* out_info, s32 count, const NcmContentMetaKey* key, s32 start_index);
94Result ncmContentMetaDatabaseList(NcmContentMetaDatabase* db, s32* out_entries_total, s32* out_entries_written, NcmContentMetaKey* out_keys, s32 count, NcmContentMetaType meta_type, u64 id, u64 id_min, u64 id_max, NcmContentInstallType install_type);
95Result ncmContentMetaDatabaseGetLatestContentMetaKey(NcmContentMetaDatabase* db, NcmContentMetaKey* out_key, u64 id);
96Result ncmContentMetaDatabaseListApplication(NcmContentMetaDatabase* db, s32* out_entries_total, s32* out_entries_written, NcmApplicationContentMetaKey* out_keys, s32 count, NcmContentMetaType meta_type);
97Result ncmContentMetaDatabaseHas(NcmContentMetaDatabase* db, bool* out, const NcmContentMetaKey* key);
98Result ncmContentMetaDatabaseHasAll(NcmContentMetaDatabase* db, bool* out, const NcmContentMetaKey* keys, s32 count);
99Result ncmContentMetaDatabaseGetSize(NcmContentMetaDatabase* db, u64* out_size, const NcmContentMetaKey* key);
100Result ncmContentMetaDatabaseGetRequiredSystemVersion(NcmContentMetaDatabase* db, u32* out_version, const NcmContentMetaKey* key);
101Result ncmContentMetaDatabaseGetPatchContentMetaId(NcmContentMetaDatabase* db, u64* out_patch_id, const NcmContentMetaKey* key);
102Result ncmContentMetaDatabaseDisableForcibly(NcmContentMetaDatabase* db);
103Result ncmContentMetaDatabaseLookupOrphanContent(NcmContentMetaDatabase* db, bool* out_orphaned, const NcmContentId* content_ids, s32 count);
104Result ncmContentMetaDatabaseCommit(NcmContentMetaDatabase* db);
105Result ncmContentMetaDatabaseHasContent(NcmContentMetaDatabase* db, bool* out, const NcmContentMetaKey* key, const NcmContentId* content_id);
106Result ncmContentMetaDatabaseListContentMetaInfo(NcmContentMetaDatabase* db, s32* out_entries_written, void* out_meta_info, s32 count, const NcmContentMetaKey* key, s32 start_index);
107Result ncmContentMetaDatabaseGetAttributes(NcmContentMetaDatabase* db, const NcmContentMetaKey* key, u8* out);
FsContentStorageId
Definition fs.h:186
FsContentAttributes
FsContentAttributes.
Definition fs.h:370
Result ncmInvalidateRightsIdCache(void)
[9.0.0+]
Result ncmContentStorageRegisterPath(NcmContentStorage *cs, const NcmContentId *content_id, const char *path)
[13.0.0+]
Result ncmContentStorageGetRightsIdFromPlaceHolderIdWithCache(NcmContentStorage *cs, NcmRightsId *out_rights_id, const NcmPlaceHolderId *placeholder_id, const NcmContentId *cache_content_id, FsContentAttributes attr)
[8.0.0+]
Result ncmActivateContentStorage(NcmStorageId storage_id)
[2.0.0+]
Result ncmContentStorageGetTotalSpaceSize(NcmContentStorage *cs, s64 *out_size)
[2.0.0+]
Result ncmContentStorageClearRegisteredPath(NcmContentStorage *cs)
[13.0.0+]
Result ncmContentStorageRepairInvalidFileAttribute(NcmContentStorage *cs)
[4.0.0+]
Result ncmInactivateContentMetaDatabase(NcmStorageId storage_id)
[2.0.0+]
Result ncmContentStorageGetSizeFromPlaceHolderId(NcmContentStorage *cs, s64 *out_size, const NcmPlaceHolderId *placeholder_id)
[4.0.0+]
Result ncmContentStorageGetProgramId(NcmContentStorage *cs, u64 *out, const NcmContentId *content_id, FsContentAttributes attr)
[17.0.0+]
Result ncmContentStorageWriteContentForDebug(NcmContentStorage *cs, const NcmContentId *content_id, s64 offset, const void *data, size_t data_size)
[2.0.0+]
Result ncmContentMetaDatabaseGetPlatform(NcmContentMetaDatabase *db, u8 *out, const NcmContentMetaKey *key)
[17.0.0+]
Result ncmContentMetaDatabaseGetRequiredApplicationVersion(NcmContentMetaDatabase *db, u32 *out_version, const NcmContentMetaKey *key)
[2.0.0+]
Service * ncmGetServiceSession(void)
Gets the Service object for the actual ncm service session.
Result ncmContentStorageGetRightsIdFromContentId(NcmContentStorage *cs, NcmRightsId *out_rights_id, const NcmContentId *content_id, FsContentAttributes attr)
[2.0.0+]
Result ncmContentStorageRevertToPlaceHolder(NcmContentStorage *cs, const NcmPlaceHolderId *placeholder_id, const NcmContentId *old_content_id, const NcmContentId *new_content_id)
[2.0.0+]
Result ncmContentStorageFlushPlaceHolder(NcmContentStorage *cs)
[3.0.0+]
Result ncmCloseContentStorageForcibly(NcmStorageId storage_id)
[1.0.0]
Result ncmContentStorageSetPlaceHolderSize(NcmContentStorage *cs, const NcmPlaceHolderId *placeholder_id, s64 size)
[2.0.0+]
Result ncmActivateFsContentStorage(FsContentStorageId fs_storage_id)
[16.0.0+]
Result ncmContentStorageGetRightsIdFromPlaceHolderId(NcmContentStorage *cs, NcmRightsId *out_rights_id, const NcmPlaceHolderId *placeholder_id, FsContentAttributes attr)
[2.0.0+]
Result ncmContentStorageReadContentIdFile(NcmContentStorage *cs, void *out_data, size_t out_data_size, const NcmContentId *content_id, s64 offset)
[2.0.0+]
Result ncmCloseContentMetaDatabaseForcibly(NcmStorageId storage_id)
[1.0.0]
void ncmExit(void)
Exit ncm.
Result ncmInactivateContentStorage(NcmStorageId storage_id)
[2.0.0+]
Result ncmActivateContentMetaDatabase(NcmStorageId storage_id)
[2.0.0+]
Result ncmContentStorageGetFreeSpaceSize(NcmContentStorage *cs, s64 *out_size)
[2.0.0+]
Result ncmInitialize(void)
Initialize ncm.
Result ncmContentMetaDatabaseGetContentIdByTypeAndIdOffset(NcmContentMetaDatabase *db, NcmContentId *out_content_id, const NcmContentMetaKey *key, NcmContentType type, u8 id_offset)
[5.0.0+]
NcmStorageId
StorageId.
Definition ncm_types.h:12
NcmContentInstallType
ContentInstallType.
Definition ncm_types.h:57
NcmContentMetaType
ContentMetaType.
Definition ncm_types.h:34
NcmContentType
ContentType.
Definition ncm_types.h:23
Definition fs.h:23
ApplicationContentMetaKey.
Definition ncm_types.h:88
ContentId.
Definition ncm_types.h:69
ContentInfo.
Definition ncm_types.h:94
ContentMetaDatabase.
Definition ncm.h:19
Service s
IContentMetaDatabase.
Definition ncm.h:20
ContentMetaKey.
Definition ncm_types.h:79
ContentStorage.
Definition ncm.h:14
Service s
IContentStorage.
Definition ncm.h:15
PlaceHolderId.
Definition ncm_types.h:74
RightsId.
Definition ncm.h:24
u8 key_generation
[3.0.0+]
Definition ncm.h:26
Service object structure.
Definition service.h:14
int64_t s64
64-bit signed integer.
Definition types.h:28
uint64_t u64
64-bit unsigned integer.
Definition types.h:22
uint8_t u8
8-bit unsigned integer.
Definition types.h:19
u32 Result
Function error code result type.
Definition types.h:44
int32_t s32
32-bit signed integer.
Definition types.h:27
uint32_t u32
32-bit unsigned integer.
Definition types.h:21