[XAM] Cleanup XamGetOverlappedResult

This commit is contained in:
Adrian 2025-06-29 13:30:26 +01:00 committed by Radosław Gliński
parent f66ab091c1
commit c4e86cfd2b

View file

@ -115,24 +115,30 @@ DECLARE_XAM_EXPORT2(XMsgCompleteIORequest, kNone, kImplemented, kSketchy);
dword_result_t XamGetOverlappedResult_entry(
pointer_t<XAM_OVERLAPPED> overlapped_ptr, lpdword_t length_ptr,
dword_t wait) {
uint32_t result;
uint32_t result = X_STATUS_SUCCESS;
if (overlapped_ptr->result != X_ERROR_IO_PENDING) {
result = overlapped_ptr->result;
} else if (!overlapped_ptr->event) {
result = X_ERROR_IO_INCOMPLETE;
} else {
} else if (wait && overlapped_ptr->event) {
auto ev = kernel_state()->object_table()->LookupObject<XEvent>(
overlapped_ptr->event);
result = ev->Wait(3, 1, 0, nullptr);
if (XSUCCEEDED(result)) {
result = overlapped_ptr->result;
} else {
result = xboxkrnl::xeRtlNtStatusToDosError(result);
}
} else {
result = X_STATUS_TIMEOUT;
}
if (XSUCCEEDED(result) && length_ptr) {
if (result == X_STATUS_TIMEOUT) {
return X_ERROR_IO_INCOMPLETE;
}
if (XFAILED(result)) {
return XThread::GetLastError();
}
if (length_ptr) {
*length_ptr = overlapped_ptr->length;
}
return result;
}
DECLARE_XAM_EXPORT2(XamGetOverlappedResult, kNone, kImplemented, kSketchy);