mirror of
https://github.com/wiiu-env/libcontentredirection.git
synced 2024-11-21 19:09:17 +01:00
Use the latest version of the CRGetVersion implementation
This commit is contained in:
parent
7a2fd2d624
commit
43749f30a8
@ -52,7 +52,7 @@ typedef enum ContentRedirectionStatus {
|
|||||||
typedef uint32_t CRLayerHandle;
|
typedef uint32_t CRLayerHandle;
|
||||||
typedef uint32_t ContentRedirectionVersion;
|
typedef uint32_t ContentRedirectionVersion;
|
||||||
|
|
||||||
#define CONTENT_REDIRECT_MODULE_VERSION 0x00000001
|
#define CONTENT_REDIRECTION_MODULE_VERSION_ERROR 0xFFFFFFFF
|
||||||
|
|
||||||
typedef enum ContentRedirectionApiErrorType {
|
typedef enum ContentRedirectionApiErrorType {
|
||||||
CONTENT_REDIRECTION_API_ERROR_NONE = 0,
|
CONTENT_REDIRECTION_API_ERROR_NONE = 0,
|
||||||
@ -73,10 +73,15 @@ typedef enum ContentRedirectionApiErrorType {
|
|||||||
ContentRedirectionStatus ContentRedirection_InitLibrary();
|
ContentRedirectionStatus ContentRedirection_InitLibrary();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the API Version of the Content Redirection Module.
|
* Retrieves the API Version of the loaded ContentRedirectionModule.<br>
|
||||||
* @return The ContentRedirectionVersion of the Module
|
* <br>
|
||||||
|
* @param outVersion pointer to the variable where the version will be stored.
|
||||||
|
*
|
||||||
|
* @return CONTENT_REDIRECTION_RESULT_SUCCESS: The API version has been store in the version ptr.<br>
|
||||||
|
* CONTENT_REDIRECTION_RESULT_INVALID_ARGUMENT: Invalid version pointer.<br>
|
||||||
|
* CONTENT_REDIRECTION_RESULT_UNKNOWN_ERROR: Retrieving the module version failed.
|
||||||
*/
|
*/
|
||||||
ContentRedirectionVersion ContentRedirection_GetVersion();
|
ContentRedirectionStatus ContentRedirection_GetVersion(ContentRedirectionVersion *outVersion);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a a FSLayers that redirects the /vol/content or /vol/save fs calles for the Game/Wii U Menu process.
|
* Adds a a FSLayers that redirects the /vol/content or /vol/save fs calles for the Game/Wii U Menu process.
|
||||||
|
@ -8,10 +8,13 @@ static OSDynLoad_Module sModuleHandle = nullptr;
|
|||||||
static ContentRedirectionApiErrorType (*sCRAddFSLayer)(CRLayerHandle *, const char *, const char *, FSLayerType) = nullptr;
|
static ContentRedirectionApiErrorType (*sCRAddFSLayer)(CRLayerHandle *, const char *, const char *, FSLayerType) = nullptr;
|
||||||
static ContentRedirectionApiErrorType (*sCRRemoveFSLayer)(CRLayerHandle) = nullptr;
|
static ContentRedirectionApiErrorType (*sCRRemoveFSLayer)(CRLayerHandle) = nullptr;
|
||||||
static ContentRedirectionApiErrorType (*sCRSetActive)(CRLayerHandle) = nullptr;
|
static ContentRedirectionApiErrorType (*sCRSetActive)(CRLayerHandle) = nullptr;
|
||||||
static ContentRedirectionVersion (*sCRGetVersion)() = nullptr;
|
static ContentRedirectionApiErrorType (*sCRGetVersion)(ContentRedirectionVersion *) = nullptr;
|
||||||
static ContentRedirectionApiErrorType (*sCRAddDevice)(const devoptab_t *, int *) = nullptr;
|
static ContentRedirectionApiErrorType (*sCRAddDevice)(const devoptab_t *, int *) = nullptr;
|
||||||
static ContentRedirectionApiErrorType (*sCRRemoveDevice)(const char *) = nullptr;
|
static ContentRedirectionApiErrorType (*sCRRemoveDevice)(const char *) = nullptr;
|
||||||
|
|
||||||
|
|
||||||
|
static ContentRedirectionVersion sContentRedirectionVersion = CONTENT_REDIRECTION_MODULE_VERSION_ERROR;
|
||||||
|
|
||||||
ContentRedirectionStatus ContentRedirection_InitLibrary() {
|
ContentRedirectionStatus ContentRedirection_InitLibrary() {
|
||||||
if (OSDynLoad_Acquire("homebrew_content_redirection", &sModuleHandle) != OS_DYNLOAD_OK) {
|
if (OSDynLoad_Acquire("homebrew_content_redirection", &sModuleHandle) != OS_DYNLOAD_OK) {
|
||||||
OSReport("ContentRedirection_Init: OSDynLoad_Acquire failed.\n");
|
OSReport("ContentRedirection_Init: OSDynLoad_Acquire failed.\n");
|
||||||
@ -22,8 +25,8 @@ ContentRedirectionStatus ContentRedirection_InitLibrary() {
|
|||||||
OSReport("ContentRedirection_Init: CRGetVersion failed.\n");
|
OSReport("ContentRedirection_Init: CRGetVersion failed.\n");
|
||||||
return CONTENT_REDIRECTION_RESULT_MODULE_MISSING_EXPORT;
|
return CONTENT_REDIRECTION_RESULT_MODULE_MISSING_EXPORT;
|
||||||
}
|
}
|
||||||
auto res = ContentRedirection_GetVersion();
|
auto res = ContentRedirection_GetVersion(&sContentRedirectionVersion);
|
||||||
if (res != CONTENT_REDIRECT_MODULE_VERSION) {
|
if (res != CONTENT_REDIRECTION_RESULT_SUCCESS) {
|
||||||
return CONTENT_REDIRECTION_RESULT_UNSUPPORTED_VERSION;
|
return CONTENT_REDIRECTION_RESULT_UNSUPPORTED_VERSION;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,13 +58,17 @@ ContentRedirectionStatus ContentRedirection_InitLibrary() {
|
|||||||
return CONTENT_REDIRECTION_RESULT_SUCCESS;
|
return CONTENT_REDIRECTION_RESULT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
ContentRedirectionVersion GetVersion();
|
ContentRedirectionApiErrorType GetVersion(ContentRedirectionVersion *);
|
||||||
ContentRedirectionVersion ContentRedirection_GetVersion() {
|
ContentRedirectionStatus ContentRedirection_GetVersion(ContentRedirectionVersion *outVariable) {
|
||||||
if (sCRGetVersion == nullptr) {
|
if (sCRGetVersion == nullptr) {
|
||||||
return CONTENT_REDIRECTION_RESULT_LIB_UNINITIALIZED;
|
return CONTENT_REDIRECTION_RESULT_LIB_UNINITIALIZED;
|
||||||
}
|
}
|
||||||
|
|
||||||
return reinterpret_cast<decltype(&GetVersion)>(sCRGetVersion)();
|
auto res = reinterpret_cast<decltype(&GetVersion)>(sCRGetVersion)(outVariable);
|
||||||
|
if (res == CONTENT_REDIRECTION_API_ERROR_NONE) {
|
||||||
|
return CONTENT_REDIRECTION_RESULT_SUCCESS;
|
||||||
|
}
|
||||||
|
return res == CONTENT_REDIRECTION_API_ERROR_INVALID_ARG ? CONTENT_REDIRECTION_RESULT_INVALID_ARGUMENT : CONTENT_REDIRECTION_RESULT_UNKNOWN_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user