From 51ba83d315c7ea0af14d0864f499a93d3eea3bc9 Mon Sep 17 00:00:00 2001 From: emoose Date: Tue, 14 Jan 2020 17:05:39 +0000 Subject: [PATCH] [XAM] Update XNetQosServiceLookup with actual XNQOS struct Taken from the xboxstubs.h file linked just above it. --- src/xenia/kernel/xam/xam_net.cc | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/src/xenia/kernel/xam/xam_net.cc b/src/xenia/kernel/xam/xam_net.cc index b000a1feb..9078f84de 100644 --- a/src/xenia/kernel/xam/xam_net.cc +++ b/src/xenia/kernel/xam/xam_net.cc @@ -65,6 +65,25 @@ typedef struct { in_addr aina[8]; } XNDNS; +typedef struct { + BYTE bFlags; + BYTE bReserved; + xe::be cProbesXmit; + xe::be cProbesRecv; + xe::be cbData; + xe::be pbData; + xe::be wRttMinInMsecs; + xe::be wRttMedInMsecs; + xe::be dwUpBitsPerSec; + xe::be dwDnBitsPerSec; +} XNQOSINFO; + +typedef struct { + xe::be cxnqos; + xe::be cxnqosPending; + XNQOSINFO axnqosinfo[1]; +} XNQOS; + struct Xsockaddr_t { xe::be sa_family; char sa_data[14]; @@ -568,11 +587,10 @@ dword_result_t NetDll_XNetQosServiceLookup(dword_t caller, dword_t zero, lpdword_t pqos) { // TODO: actually implement this if (pqos) { - // TODO: XNQOS struct? seems to be 0x20 bytes - auto out_guest = kernel_memory()->SystemHeapAlloc(0x20); - auto out = kernel_memory()->TranslateVirtual(out_guest); - memset(out, 0, 0x20); - *pqos = out_guest; + auto qos_guest = kernel_memory()->SystemHeapAlloc(sizeof(XNQOS)); + auto qos = kernel_memory()->TranslateVirtual(qos_guest); + memset(qos, 0, sizeof(XNQOS)); + *pqos = qos_guest; } if (event_handle) { @@ -585,7 +603,7 @@ dword_result_t NetDll_XNetQosServiceLookup(dword_t caller, dword_t zero, } DECLARE_XAM_EXPORT1(NetDll_XNetQosServiceLookup, kNetworking, kStub); -dword_result_t NetDll_XNetQosRelease(dword_t caller, pointer_t qos) { +dword_result_t NetDll_XNetQosRelease(dword_t caller, pointer_t qos) { if (!qos) { return X_STATUS_INVALID_PARAMETER; }