[Kernel] Suffix export functions with _entry.
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2020 Ben Vanik. All rights reserved. *
|
||||
* Copyright 2022 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
@@ -31,8 +31,8 @@ namespace xe {
|
||||
namespace kernel {
|
||||
namespace xam {
|
||||
|
||||
dword_result_t XamContentGetLicenseMask(lpdword_t mask_ptr,
|
||||
lpunknown_t overlapped_ptr) {
|
||||
dword_result_t XamContentGetLicenseMask_entry(lpdword_t mask_ptr,
|
||||
lpunknown_t overlapped_ptr) {
|
||||
// Each bit in the mask represents a granted license. Available licenses
|
||||
// seems to vary from game to game, but most appear to use bit 0 to indicate
|
||||
// if the game is purchased or not.
|
||||
@@ -48,9 +48,11 @@ dword_result_t XamContentGetLicenseMask(lpdword_t mask_ptr,
|
||||
}
|
||||
DECLARE_XAM_EXPORT2(XamContentGetLicenseMask, kContent, kStub, kHighFrequency);
|
||||
|
||||
dword_result_t XamContentResolve(dword_t user_index, lpvoid_t content_data_ptr,
|
||||
lpunknown_t buffer_ptr, dword_t buffer_size,
|
||||
dword_t unk1, dword_t unk2, dword_t unk3) {
|
||||
dword_result_t XamContentResolve_entry(dword_t user_index,
|
||||
lpvoid_t content_data_ptr,
|
||||
lpunknown_t buffer_ptr,
|
||||
dword_t buffer_size, dword_t unk1,
|
||||
dword_t unk2, dword_t unk3) {
|
||||
auto content_data = content_data_ptr.as<XCONTENT_DATA*>();
|
||||
|
||||
// Result of buffer_ptr is sent to RtlInitAnsiString.
|
||||
@@ -64,12 +66,10 @@ DECLARE_XAM_EXPORT1(XamContentResolve, kContent, kStub);
|
||||
|
||||
// https://github.com/MrColdbird/gameservice/blob/master/ContentManager.cpp
|
||||
// https://github.com/LestaD/SourceEngine2007/blob/master/se2007/engine/xboxsystem.cpp#L499
|
||||
dword_result_t XamContentCreateEnumerator(dword_t user_index, dword_t device_id,
|
||||
dword_t content_type,
|
||||
dword_t content_flags,
|
||||
dword_t items_per_enumerate,
|
||||
lpdword_t buffer_size_ptr,
|
||||
lpdword_t handle_out) {
|
||||
dword_result_t XamContentCreateEnumerator_entry(
|
||||
dword_t user_index, dword_t device_id, dword_t content_type,
|
||||
dword_t content_flags, dword_t items_per_enumerate,
|
||||
lpdword_t buffer_size_ptr, lpdword_t handle_out) {
|
||||
assert_not_null(handle_out);
|
||||
|
||||
auto device_info = device_id == 0 ? nullptr : GetDummyDeviceInfo(device_id);
|
||||
@@ -226,12 +226,10 @@ dword_result_t xeXamContentCreate(dword_t user_index, lpstring_t root_name,
|
||||
}
|
||||
}
|
||||
|
||||
dword_result_t XamContentCreateEx(dword_t user_index, lpstring_t root_name,
|
||||
lpvoid_t content_data_ptr, dword_t flags,
|
||||
lpdword_t disposition_ptr,
|
||||
lpdword_t license_mask_ptr,
|
||||
dword_t cache_size, qword_t content_size,
|
||||
lpvoid_t overlapped_ptr) {
|
||||
dword_result_t XamContentCreateEx_entry(
|
||||
dword_t user_index, lpstring_t root_name, lpvoid_t content_data_ptr,
|
||||
dword_t flags, lpdword_t disposition_ptr, lpdword_t license_mask_ptr,
|
||||
dword_t cache_size, qword_t content_size, lpvoid_t overlapped_ptr) {
|
||||
return xeXamContentCreate(user_index, root_name, content_data_ptr,
|
||||
sizeof(XCONTENT_DATA), flags, disposition_ptr,
|
||||
license_mask_ptr, cache_size, content_size,
|
||||
@@ -239,18 +237,18 @@ dword_result_t XamContentCreateEx(dword_t user_index, lpstring_t root_name,
|
||||
}
|
||||
DECLARE_XAM_EXPORT1(XamContentCreateEx, kContent, kImplemented);
|
||||
|
||||
dword_result_t XamContentCreate(dword_t user_index, lpstring_t root_name,
|
||||
lpvoid_t content_data_ptr, dword_t flags,
|
||||
lpdword_t disposition_ptr,
|
||||
lpdword_t license_mask_ptr,
|
||||
lpvoid_t overlapped_ptr) {
|
||||
dword_result_t XamContentCreate_entry(dword_t user_index, lpstring_t root_name,
|
||||
lpvoid_t content_data_ptr, dword_t flags,
|
||||
lpdword_t disposition_ptr,
|
||||
lpdword_t license_mask_ptr,
|
||||
lpvoid_t overlapped_ptr) {
|
||||
return xeXamContentCreate(user_index, root_name, content_data_ptr,
|
||||
sizeof(XCONTENT_DATA), flags, disposition_ptr,
|
||||
license_mask_ptr, 0, 0, overlapped_ptr);
|
||||
}
|
||||
DECLARE_XAM_EXPORT1(XamContentCreate, kContent, kImplemented);
|
||||
|
||||
dword_result_t XamContentCreateInternal(
|
||||
dword_result_t XamContentCreateInternal_entry(
|
||||
lpstring_t root_name, lpvoid_t content_data_ptr, dword_t flags,
|
||||
lpdword_t disposition_ptr, lpdword_t license_mask_ptr, dword_t cache_size,
|
||||
qword_t content_size, lpvoid_t overlapped_ptr) {
|
||||
@@ -261,18 +259,19 @@ dword_result_t XamContentCreateInternal(
|
||||
}
|
||||
DECLARE_XAM_EXPORT1(XamContentCreateInternal, kContent, kImplemented);
|
||||
|
||||
dword_result_t XamContentOpenFile(dword_t user_index, lpstring_t root_name,
|
||||
lpstring_t path, dword_t flags,
|
||||
lpdword_t disposition_ptr,
|
||||
lpdword_t license_mask_ptr,
|
||||
lpvoid_t overlapped_ptr) {
|
||||
dword_result_t XamContentOpenFile_entry(dword_t user_index,
|
||||
lpstring_t root_name, lpstring_t path,
|
||||
dword_t flags,
|
||||
lpdword_t disposition_ptr,
|
||||
lpdword_t license_mask_ptr,
|
||||
lpvoid_t overlapped_ptr) {
|
||||
// TODO(gibbed): arguments assumed based on XamContentCreate.
|
||||
return X_ERROR_FILE_NOT_FOUND;
|
||||
}
|
||||
DECLARE_XAM_EXPORT1(XamContentOpenFile, kContent, kStub);
|
||||
|
||||
dword_result_t XamContentFlush(lpstring_t root_name,
|
||||
lpunknown_t overlapped_ptr) {
|
||||
dword_result_t XamContentFlush_entry(lpstring_t root_name,
|
||||
lpunknown_t overlapped_ptr) {
|
||||
X_RESULT result = X_ERROR_SUCCESS;
|
||||
if (overlapped_ptr) {
|
||||
kernel_state()->CompleteOverlappedImmediate(overlapped_ptr, result);
|
||||
@@ -283,8 +282,8 @@ dword_result_t XamContentFlush(lpstring_t root_name,
|
||||
}
|
||||
DECLARE_XAM_EXPORT1(XamContentFlush, kContent, kStub);
|
||||
|
||||
dword_result_t XamContentClose(lpstring_t root_name,
|
||||
lpunknown_t overlapped_ptr) {
|
||||
dword_result_t XamContentClose_entry(lpstring_t root_name,
|
||||
lpunknown_t overlapped_ptr) {
|
||||
// Closes a previously opened root from XamContentCreate*.
|
||||
auto result =
|
||||
kernel_state()->content_manager()->CloseContent(root_name.value());
|
||||
@@ -298,11 +297,11 @@ dword_result_t XamContentClose(lpstring_t root_name,
|
||||
}
|
||||
DECLARE_XAM_EXPORT1(XamContentClose, kContent, kImplemented);
|
||||
|
||||
dword_result_t XamContentGetCreator(dword_t user_index,
|
||||
lpvoid_t content_data_ptr,
|
||||
lpdword_t is_creator_ptr,
|
||||
lpqword_t creator_xuid_ptr,
|
||||
lpunknown_t overlapped_ptr) {
|
||||
dword_result_t XamContentGetCreator_entry(dword_t user_index,
|
||||
lpvoid_t content_data_ptr,
|
||||
lpdword_t is_creator_ptr,
|
||||
lpqword_t creator_xuid_ptr,
|
||||
lpunknown_t overlapped_ptr) {
|
||||
auto result = X_ERROR_SUCCESS;
|
||||
|
||||
XCONTENT_AGGREGATE_DATA content_data = *content_data_ptr.as<XCONTENT_DATA*>();
|
||||
@@ -336,11 +335,11 @@ dword_result_t XamContentGetCreator(dword_t user_index,
|
||||
}
|
||||
DECLARE_XAM_EXPORT1(XamContentGetCreator, kContent, kImplemented);
|
||||
|
||||
dword_result_t XamContentGetThumbnail(dword_t user_index,
|
||||
lpvoid_t content_data_ptr,
|
||||
lpvoid_t buffer_ptr,
|
||||
lpdword_t buffer_size_ptr,
|
||||
lpunknown_t overlapped_ptr) {
|
||||
dword_result_t XamContentGetThumbnail_entry(dword_t user_index,
|
||||
lpvoid_t content_data_ptr,
|
||||
lpvoid_t buffer_ptr,
|
||||
lpdword_t buffer_size_ptr,
|
||||
lpunknown_t overlapped_ptr) {
|
||||
assert_not_null(buffer_size_ptr);
|
||||
uint32_t buffer_size = *buffer_size_ptr;
|
||||
XCONTENT_AGGREGATE_DATA content_data = *content_data_ptr.as<XCONTENT_DATA*>();
|
||||
@@ -375,10 +374,11 @@ dword_result_t XamContentGetThumbnail(dword_t user_index,
|
||||
}
|
||||
DECLARE_XAM_EXPORT1(XamContentGetThumbnail, kContent, kImplemented);
|
||||
|
||||
dword_result_t XamContentSetThumbnail(dword_t user_index,
|
||||
lpvoid_t content_data_ptr,
|
||||
lpvoid_t buffer_ptr, dword_t buffer_size,
|
||||
lpunknown_t overlapped_ptr) {
|
||||
dword_result_t XamContentSetThumbnail_entry(dword_t user_index,
|
||||
lpvoid_t content_data_ptr,
|
||||
lpvoid_t buffer_ptr,
|
||||
dword_t buffer_size,
|
||||
lpunknown_t overlapped_ptr) {
|
||||
XCONTENT_AGGREGATE_DATA content_data = *content_data_ptr.as<XCONTENT_DATA*>();
|
||||
|
||||
// Buffer is PNG data.
|
||||
@@ -396,8 +396,9 @@ dword_result_t XamContentSetThumbnail(dword_t user_index,
|
||||
}
|
||||
DECLARE_XAM_EXPORT1(XamContentSetThumbnail, kContent, kImplemented);
|
||||
|
||||
dword_result_t XamContentDelete(dword_t user_index, lpvoid_t content_data_ptr,
|
||||
lpunknown_t overlapped_ptr) {
|
||||
dword_result_t XamContentDelete_entry(dword_t user_index,
|
||||
lpvoid_t content_data_ptr,
|
||||
lpunknown_t overlapped_ptr) {
|
||||
XCONTENT_AGGREGATE_DATA content_data = *content_data_ptr.as<XCONTENT_DATA*>();
|
||||
|
||||
auto result = kernel_state()->content_manager()->DeleteContent(content_data);
|
||||
@@ -411,11 +412,11 @@ dword_result_t XamContentDelete(dword_t user_index, lpvoid_t content_data_ptr,
|
||||
}
|
||||
DECLARE_XAM_EXPORT1(XamContentDelete, kContent, kImplemented);
|
||||
|
||||
dword_result_t XamContentDeleteInternal(lpvoid_t content_data_ptr,
|
||||
lpunknown_t overlapped_ptr) {
|
||||
dword_result_t XamContentDeleteInternal_entry(lpvoid_t content_data_ptr,
|
||||
lpunknown_t overlapped_ptr) {
|
||||
// INFO: Analysis of xam.xex shows that "internal" functions are wrappers with
|
||||
// 0xFE as user_index
|
||||
return XamContentDelete(0xFE, content_data_ptr, overlapped_ptr);
|
||||
return XamContentDelete_entry(0xFE, content_data_ptr, overlapped_ptr);
|
||||
}
|
||||
DECLARE_XAM_EXPORT1(XamContentDeleteInternal, kContent, kImplemented);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user