Implemented several kernel functions.
- NtQueryVirtualMemory to support Xapi VirtualQuery - NtCreateSemaphore/NtReleaseSemaphore to support Xapi semaphores - MmCreateKernelStack/MmDeleteKernelStack to support Xapi fibers Added D3DFormat and D3DTRANSFORMSTATETYPE conversions. - Convert PC D3DFMT_A4R4G4B4 to 0x1D (linear) - Convert Xbox D3DFMT 0x19 (swizzled) to D3DFMT_A8 - Convert Xbox D3DFMT 0x27 (swizzled) to D3DFMT_L6V5U5 - Convert Xbox D3DTRANSFORMSTATETYPE 10 (max) to D3DTS_TEXTURE7 + 1 (experimental) Print properly terminated XTL name in debug output.
This commit is contained in:
parent
ced145e4be
commit
561c3b7d4f
|
@ -49,8 +49,24 @@ XBSYSAPI EXPORTNUM(167) PVOID NTAPI MmAllocateSystemMemory
|
|||
);
|
||||
|
||||
XBSYSAPI VOID *MmClaimGpuInstanceMemory;
|
||||
XBSYSAPI VOID *MmCreateKernelStack;
|
||||
XBSYSAPI VOID *MmDeleteKernelStack;
|
||||
|
||||
// ******************************************************************
|
||||
// * MmCreateKernelStack
|
||||
// ******************************************************************
|
||||
XBSYSAPI EXPORTNUM(169) PVOID NTAPI MmCreateKernelStack
|
||||
(
|
||||
IN ULONG NumberOfBytes,
|
||||
IN ULONG Unknown
|
||||
);
|
||||
|
||||
// ******************************************************************
|
||||
// * MmDeleteKernelStack
|
||||
// ******************************************************************
|
||||
XBSYSAPI EXPORTNUM(170) VOID NTAPI MmDeleteKernelStack
|
||||
(
|
||||
IN PVOID EndAddress,
|
||||
IN PVOID BaseAddress
|
||||
);
|
||||
|
||||
// ******************************************************************
|
||||
// * MmFreeContiguousMemory
|
||||
|
|
|
@ -93,7 +93,17 @@ XBSYSAPI EXPORTNUM(192) NTSTATUS NTAPI NtCreateMutant
|
|||
IN BOOLEAN InitialOwner
|
||||
);
|
||||
|
||||
XBSYSAPI VOID *NtCreateSemaphore;
|
||||
// ******************************************************************
|
||||
// * NtCreateSemaphore
|
||||
// ******************************************************************
|
||||
XBSYSAPI EXPORTNUM(193) NTSTATUS NTAPI NtCreateSemaphore
|
||||
(
|
||||
OUT PHANDLE SemaphoreHandle,
|
||||
IN POBJECT_ATTRIBUTES ObjectAttributes,
|
||||
IN ULONG InitialCount,
|
||||
IN ULONG MaximumCount
|
||||
);
|
||||
|
||||
XBSYSAPI VOID *NtCreateTimer;
|
||||
XBSYSAPI VOID *NtDeleteFile;
|
||||
XBSYSAPI VOID *NtDeviceIoControlFile;
|
||||
|
@ -198,7 +208,15 @@ XBSYSAPI VOID *NtQueryMutant;
|
|||
XBSYSAPI VOID *NtQuerySemaphore;
|
||||
XBSYSAPI VOID *NtQuerySymbolicLinkObject;
|
||||
XBSYSAPI VOID *NtQueryTimer;
|
||||
XBSYSAPI VOID *NtQueryVirtualMemory;
|
||||
|
||||
// ******************************************************************
|
||||
// * NtQueryVirtualMemory
|
||||
// ******************************************************************
|
||||
XBSYSAPI EXPORTNUM(217) NTSTATUS NTAPI NtQueryVirtualMemory
|
||||
(
|
||||
IN PVOID BaseAddress,
|
||||
OUT PMEMORY_BASIC_INFORMATION Buffer
|
||||
);
|
||||
|
||||
// ******************************************************************
|
||||
// * NtQueryVolumeInformationFile
|
||||
|
@ -242,7 +260,16 @@ XBSYSAPI EXPORTNUM(221) NTSTATUS NTAPI NtReleaseMutant
|
|||
OUT PLONG PreviousCount
|
||||
);
|
||||
|
||||
XBSYSAPI VOID *NtReleaseSemaphore;
|
||||
// ******************************************************************
|
||||
// * NtReleaseSemaphore
|
||||
// ******************************************************************
|
||||
XBSYSAPI EXPORTNUM(222) NTSTATUS NTAPI NtReleaseSemaphore
|
||||
(
|
||||
IN HANDLE SemaphoreHandle,
|
||||
IN ULONG ReleaseCount,
|
||||
OUT PULONG PreviousCount
|
||||
);
|
||||
|
||||
XBSYSAPI VOID *NtRemoveIoCompletion;
|
||||
|
||||
// ******************************************************************
|
||||
|
|
|
@ -452,6 +452,21 @@ typedef struct _IO_STATUS_BLOCK
|
|||
}
|
||||
IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
|
||||
|
||||
// ******************************************************************
|
||||
// * MEMORY_BASIC_INFORMATION *Same as Win2k/XP*
|
||||
// ******************************************************************
|
||||
typedef struct _MEMORY_BASIC_INFORMATION
|
||||
{
|
||||
PVOID BaseAddress;
|
||||
PVOID AllocationBase;
|
||||
DWORD AllocationProtect;
|
||||
SIZE_T RegionSize;
|
||||
DWORD State;
|
||||
DWORD Protect;
|
||||
DWORD Type;
|
||||
}
|
||||
MEMORY_BASIC_INFORMATION, *PMEMORY_BASIC_INFORMATION;
|
||||
|
||||
// ******************************************************************
|
||||
// * EVENT_TYPE
|
||||
// ******************************************************************
|
||||
|
|
|
@ -87,6 +87,8 @@ XTL::D3DFORMAT XTL::EmuXB2PC_D3DFormat(X_D3DFORMAT Format)
|
|||
EmuWarning("X_D3DFMT_A8L8 -> D3DFMT_R5G6B5");
|
||||
return D3DFMT_R5G6B5; // NOTE: HACK: Totally and utterly wrong :)
|
||||
}
|
||||
case 0x19: // Swizzled (X_D3DFMT_A8)
|
||||
return D3DFMT_A8;
|
||||
|
||||
case 0x1D: // Linear (X_D3DFMT_LIN_A4R4G4B4)
|
||||
case 0x04: // Swizzled (X_D3DFMT_A4R4G4B4)
|
||||
|
@ -144,6 +146,9 @@ XTL::D3DFORMAT XTL::EmuXB2PC_D3DFormat(X_D3DFORMAT Format)
|
|||
case 0x2C: // Swizzled (X_D3DFMT_D16)
|
||||
return D3DFMT_D16;
|
||||
|
||||
case 0x27: // Swizzled (X_D3DFMT_L6V5U5)
|
||||
return D3DFMT_L6V5U5;
|
||||
|
||||
case 0x28: // Swizzled (X_D3DFMT_V8U8)
|
||||
return D3DFMT_V8U8;
|
||||
|
||||
|
@ -184,6 +189,10 @@ XTL::X_D3DFORMAT XTL::EmuPC2XB_D3DFormat(D3DFORMAT Format)
|
|||
case D3DFMT_A8R8G8B8:
|
||||
// return 0x12; // Linear (X_D3DFMT_LIN_A8R8G8B8)
|
||||
return 0x06;
|
||||
|
||||
case D3DFMT_A4R4G4B4:
|
||||
return 0x1D; // Linear
|
||||
// return 0x04; // Swizzled
|
||||
}
|
||||
|
||||
CxbxKrnlCleanup("EmuPC2XB_D3DFormat: Unknown Format (%d)", Format);
|
||||
|
|
|
@ -73,6 +73,8 @@ inline D3DTRANSFORMSTATETYPE EmuXB2PC_D3DTS(D3DTRANSFORMSTATETYPE State)
|
|||
return (D3DTRANSFORMSTATETYPE)(State + 14);
|
||||
else if((uint32)State < 10)
|
||||
return D3DTS_WORLDMATRIX(State-6);
|
||||
else if((uint32)State == 10) // Max
|
||||
return (D3DTRANSFORMSTATETYPE)(D3DTS_TEXTURE7 + 1);
|
||||
|
||||
CxbxKrnlCleanup("Unknown Transform State Type (%d)", State);
|
||||
|
||||
|
|
|
@ -879,6 +879,65 @@ XBSYSAPI EXPORTNUM(167) xboxkrnl::PVOID NTAPI xboxkrnl::MmAllocateSystemMemory
|
|||
return pRet;
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x00A9 - MmCreateKernelStack
|
||||
// ******************************************************************
|
||||
// * Differences from NT: Custom stack size.
|
||||
// ******************************************************************
|
||||
XBSYSAPI EXPORTNUM(169) xboxkrnl::PVOID NTAPI xboxkrnl::MmCreateKernelStack
|
||||
(
|
||||
ULONG NumberOfBytes,
|
||||
ULONG Unknown
|
||||
)
|
||||
{
|
||||
EmuSwapFS(); // Win2k/XP FS
|
||||
|
||||
DbgPrintf("EmuKrnl (0x%X): MmCreateKernelStack\n"
|
||||
"(\n"
|
||||
" NumberOfBytes : 0x%.08X\n"
|
||||
" Unknown : 0x%.08X\n"
|
||||
");\n",
|
||||
GetCurrentThreadId(), NumberOfBytes, Unknown);
|
||||
|
||||
if(Unknown)
|
||||
EmuWarning("MmCreateKernelStack unknown parameter ignored\n");
|
||||
|
||||
NtDll::PVOID pRet = NULL;
|
||||
if(FAILED(NtDll::NtAllocateVirtualMemory(GetCurrentProcess(), &pRet, 0, &NumberOfBytes, MEM_COMMIT, PAGE_READWRITE)))
|
||||
EmuWarning("MmCreateKernelStack failed!\n");
|
||||
else
|
||||
pRet = (PVOID)((ULONG)pRet + NumberOfBytes);
|
||||
|
||||
EmuSwapFS(); // Xbox FS
|
||||
|
||||
return pRet;
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x00AA - MmDeleteKernelStack
|
||||
// ******************************************************************
|
||||
XBSYSAPI EXPORTNUM(170) VOID NTAPI xboxkrnl::MmDeleteKernelStack
|
||||
(
|
||||
PVOID EndAddress,
|
||||
PVOID BaseAddress
|
||||
)
|
||||
{
|
||||
EmuSwapFS(); // Win2k/XP FS
|
||||
|
||||
DbgPrintf("EmuKrnl (0x%X): MmDeleteKernelStack\n"
|
||||
"(\n"
|
||||
" EndAddress : 0x%.08X\n"
|
||||
" BaseAddress : 0x%.08X\n"
|
||||
");\n",
|
||||
GetCurrentThreadId(), EndAddress, BaseAddress);
|
||||
|
||||
ULONG RegionSize = 0;
|
||||
if (FAILED(NtDll::NtFreeVirtualMemory(GetCurrentProcess(), &BaseAddress, &RegionSize, MEM_RELEASE)))
|
||||
EmuWarning("MmDeleteKernelStack failed!\n");
|
||||
|
||||
EmuSwapFS(); // Xbox FS
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x00AB - MmFreeContiguousMemory
|
||||
// ******************************************************************
|
||||
|
@ -970,7 +1029,7 @@ XBSYSAPI EXPORTNUM(178) VOID NTAPI xboxkrnl::MmPersistContiguousMemory
|
|||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * MmQueryAllocationSize
|
||||
// * 0x00B4 - MmQueryAllocationSize
|
||||
// ******************************************************************
|
||||
XBSYSAPI EXPORTNUM(180) XTL::ULONG NTAPI xboxkrnl::MmQueryAllocationSize
|
||||
(
|
||||
|
@ -1436,6 +1495,49 @@ XBSYSAPI EXPORTNUM(192) xboxkrnl::NTSTATUS NTAPI xboxkrnl::NtCreateMutant
|
|||
return ret;
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x00C1 - NtCreateSemaphore
|
||||
// ******************************************************************
|
||||
XBSYSAPI EXPORTNUM(193) xboxkrnl::NTSTATUS NTAPI xboxkrnl::NtCreateSemaphore
|
||||
(
|
||||
OUT PHANDLE SemaphoreHandle,
|
||||
IN POBJECT_ATTRIBUTES ObjectAttributes,
|
||||
IN ULONG InitialCount,
|
||||
IN ULONG MaximumCount
|
||||
)
|
||||
{
|
||||
EmuSwapFS(); // Win2k/XP FS
|
||||
|
||||
DbgPrintf("EmuKrnl (0x%X): NtCreateSemaphore\n"
|
||||
"(\n"
|
||||
" SemaphoreHandle : 0x%.08X\n"
|
||||
" ObjectAttributes : 0x%.08X\n"
|
||||
" InitialCount : 0x%.08X\n"
|
||||
" MaximumCount : 0x%.08X\n"
|
||||
");\n",
|
||||
GetCurrentThreadId(), SemaphoreHandle, ObjectAttributes,
|
||||
InitialCount, MaximumCount);
|
||||
|
||||
// redirect to Win2k/XP
|
||||
NTSTATUS ret = NtDll::NtCreateSemaphore
|
||||
(
|
||||
SemaphoreHandle,
|
||||
SEMAPHORE_ALL_ACCESS,
|
||||
(NtDll::POBJECT_ATTRIBUTES)ObjectAttributes,
|
||||
InitialCount,
|
||||
MaximumCount
|
||||
);
|
||||
|
||||
if(FAILED(ret))
|
||||
EmuWarning("NtCreateSemaphore failed!");
|
||||
|
||||
DbgPrintf("EmuKrnl (0x%X): NtCreateSemaphore SemaphoreHandle = 0x%.08X\n", GetCurrentThreadId(), *SemaphoreHandle);
|
||||
|
||||
EmuSwapFS(); // Xbox FS
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x00C5 - NtDuplicateObject
|
||||
// ******************************************************************
|
||||
|
@ -1762,6 +1864,42 @@ XBSYSAPI EXPORTNUM(211) xboxkrnl::NTSTATUS NTAPI xboxkrnl::NtQueryInformationFil
|
|||
return ret;
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x00D9 - NtQueryVirtualMemory
|
||||
// ******************************************************************
|
||||
XBSYSAPI EXPORTNUM(217) xboxkrnl::NTSTATUS NTAPI xboxkrnl::NtQueryVirtualMemory
|
||||
(
|
||||
IN PVOID BaseAddress,
|
||||
OUT PMEMORY_BASIC_INFORMATION Buffer
|
||||
)
|
||||
{
|
||||
EmuSwapFS(); // Win2k/XP FS
|
||||
|
||||
DbgPrintf("EmuKrnl (0x%X): NtQueryVirtualMemory\n"
|
||||
"(\n"
|
||||
" BaseAddress : 0x%.08X\n"
|
||||
" Buffer : 0x%.08X\n"
|
||||
");\n",
|
||||
GetCurrentThreadId(), BaseAddress, Buffer);
|
||||
|
||||
NTSTATUS ret = NtDll::NtQueryVirtualMemory
|
||||
(
|
||||
GetCurrentProcess(),
|
||||
BaseAddress,
|
||||
(NtDll::MEMORY_INFORMATION_CLASS)NtDll::MemoryBasicInformation,
|
||||
(NtDll::PMEMORY_BASIC_INFORMATION)Buffer,
|
||||
sizeof(MEMORY_BASIC_INFORMATION),
|
||||
0
|
||||
);
|
||||
|
||||
if(FAILED(ret))
|
||||
EmuWarning("NtQueryVirtualMemory failed!");
|
||||
|
||||
EmuSwapFS(); // Xbox FS
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x00DA - NtQueryVolumeInformationFile
|
||||
// ******************************************************************
|
||||
|
@ -1889,6 +2027,36 @@ XBSYSAPI EXPORTNUM(221) xboxkrnl::NTSTATUS NTAPI xboxkrnl::NtReleaseMutant
|
|||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x00DE - NtReleaseSemaphore
|
||||
// ******************************************************************
|
||||
XBSYSAPI EXPORTNUM(222) xboxkrnl::NTSTATUS NTAPI xboxkrnl::NtReleaseSemaphore
|
||||
(
|
||||
IN HANDLE SemaphoreHandle,
|
||||
IN ULONG ReleaseCount,
|
||||
OUT PULONG PreviousCount
|
||||
)
|
||||
{
|
||||
EmuSwapFS(); // Win2k/XP FS
|
||||
|
||||
DbgPrintf("EmuKrnl (0x%X): NtReleaseSemaphore\n"
|
||||
"(\n"
|
||||
" SemaphoreHandle : 0x%.08X\n"
|
||||
" ReleaseCount : 0x%.08X\n"
|
||||
" PreviousCount : 0x%.08X\n"
|
||||
");\n",
|
||||
GetCurrentThreadId(), SemaphoreHandle, ReleaseCount, PreviousCount);
|
||||
|
||||
NTSTATUS ret = NtDll::NtReleaseSemaphore(SemaphoreHandle, ReleaseCount, PreviousCount);
|
||||
|
||||
if(FAILED(ret))
|
||||
EmuWarning("NtReleaseSemaphore failed!");
|
||||
|
||||
EmuSwapFS(); // Xbox FS
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x00E0 - NtResumeThread
|
||||
// ******************************************************************
|
||||
|
|
|
@ -69,6 +69,7 @@ NtDll::FPTR_NtWaitForSingleObject NtDll::NtWaitForSingleObject =
|
|||
NtDll::FPTR_NtWaitForMultipleObjects NtDll::NtWaitForMultipleObjects = (NtDll::FPTR_NtWaitForMultipleObjects)GetProcAddress(hNtDll, "NtWaitForMultipleObjects");
|
||||
NtDll::FPTR_NtAllocateVirtualMemory NtDll::NtAllocateVirtualMemory = (NtDll::FPTR_NtAllocateVirtualMemory)GetProcAddress(hNtDll, "NtAllocateVirtualMemory");
|
||||
NtDll::FPTR_NtFreeVirtualMemory NtDll::NtFreeVirtualMemory = (NtDll::FPTR_NtFreeVirtualMemory)GetProcAddress(hNtDll, "NtFreeVirtualMemory");
|
||||
NtDll::FPTR_NtQueryVirtualMemory NtDll::NtQueryVirtualMemory = (NtDll::FPTR_NtQueryVirtualMemory)GetProcAddress(hNtDll, "NtQueryVirtualMemory");
|
||||
NtDll::FPTR_NtClearEvent NtDll::NtClearEvent = (NtDll::FPTR_NtClearEvent)GetProcAddress(hNtDll, "NtClearEvent");
|
||||
NtDll::FPTR_NtClose NtDll::NtClose = (NtDll::FPTR_NtClose)GetProcAddress(hNtDll, "NtClose");
|
||||
NtDll::FPTR_NtDelayExecution NtDll::NtDelayExecution = (NtDll::FPTR_NtDelayExecution)GetProcAddress(hNtDll, "NtDelayExecution");
|
||||
|
@ -81,6 +82,8 @@ NtDll::FPTR_NtQueryVolumeInformationFile NtDll::NtQueryVolumeInformationFile =
|
|||
NtDll::FPTR_NtCreateEvent NtDll::NtCreateEvent = (NtDll::FPTR_NtCreateEvent)GetProcAddress(hNtDll, "NtCreateEvent");
|
||||
NtDll::FPTR_NtCreateMutant NtDll::NtCreateMutant = (NtDll::FPTR_NtCreateMutant)GetProcAddress(hNtDll, "NtCreateMutant");
|
||||
NtDll::FPTR_NtReleaseMutant NtDll::NtReleaseMutant = (NtDll::FPTR_NtReleaseMutant)GetProcAddress(hNtDll, "NtReleaseMutant");
|
||||
NtDll::FPTR_NtCreateSemaphore NtDll::NtCreateSemaphore = (NtDll::FPTR_NtCreateSemaphore)GetProcAddress(hNtDll, "NtCreateSemaphore");
|
||||
NtDll::FPTR_NtReleaseSemaphore NtDll::NtReleaseSemaphore = (NtDll::FPTR_NtReleaseSemaphore)GetProcAddress(hNtDll, "NtReleaseSemaphore");
|
||||
NtDll::FPTR_NtCreateFile NtDll::NtCreateFile = (NtDll::FPTR_NtCreateFile)GetProcAddress(hNtDll, "NtCreateFile");
|
||||
NtDll::FPTR_NtReadFile NtDll::NtReadFile = (NtDll::FPTR_NtReadFile)GetProcAddress(hNtDll, "NtReadFile");
|
||||
NtDll::FPTR_NtWriteFile NtDll::NtWriteFile = (NtDll::FPTR_NtWriteFile)GetProcAddress(hNtDll, "NtWriteFile");
|
||||
|
|
|
@ -339,6 +339,30 @@ typedef VOID (NTAPI *PIO_APC_ROUTINE)
|
|||
IN ULONG Reserved
|
||||
);
|
||||
|
||||
// ******************************************************************
|
||||
// * MEMORY_BASIC_INFORMATION
|
||||
// ******************************************************************
|
||||
typedef struct _MEMORY_BASIC_INFORMATION
|
||||
{
|
||||
PVOID BaseAddress;
|
||||
PVOID AllocationBase;
|
||||
DWORD AllocationProtect;
|
||||
SIZE_T RegionSize;
|
||||
DWORD State;
|
||||
DWORD Protect;
|
||||
DWORD Type;
|
||||
}
|
||||
MEMORY_BASIC_INFORMATION, *PMEMORY_BASIC_INFORMATION;
|
||||
|
||||
// ******************************************************************
|
||||
// * MEMORY_INFORMATION_CLASS
|
||||
// ******************************************************************
|
||||
typedef enum _MEMORY_INFORMATION_CLASS
|
||||
{
|
||||
MemoryBasicInformation
|
||||
}
|
||||
MEMORY_INFORMATION_CLASS;
|
||||
|
||||
// ******************************************************************
|
||||
// * EVENT_TYPE
|
||||
// ******************************************************************
|
||||
|
@ -708,6 +732,19 @@ typedef NTSTATUS (NTAPI *FPTR_NtFreeVirtualMemory)
|
|||
IN ULONG FreeType
|
||||
);
|
||||
|
||||
// ******************************************************************
|
||||
// * NtQueryVirtualMemory
|
||||
// ******************************************************************
|
||||
typedef NTSTATUS (NTAPI *FPTR_NtQueryVirtualMemory)
|
||||
(
|
||||
IN HANDLE ProcessHandle,
|
||||
IN PVOID BaseAddress,
|
||||
IN MEMORY_INFORMATION_CLASS MemoryInformationClass,
|
||||
OUT PVOID Buffer,
|
||||
IN ULONG Length,
|
||||
OUT PULONG ResultLength OPTIONAL
|
||||
);
|
||||
|
||||
// ******************************************************************
|
||||
// * RtlInitializeCriticalSection
|
||||
// ******************************************************************
|
||||
|
@ -786,6 +823,28 @@ typedef NTSTATUS (NTAPI *FPTR_NtReleaseMutant)
|
|||
OUT PLONG PreviousCount OPTIONAL
|
||||
);
|
||||
|
||||
// ******************************************************************
|
||||
// * NtCreateSemaphore
|
||||
// ******************************************************************
|
||||
typedef NTSTATUS (NTAPI *FPTR_NtCreateSemaphore)
|
||||
(
|
||||
OUT PHANDLE SemaphoreHandle,
|
||||
IN ACCESS_MASK DesiredAccess,
|
||||
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
|
||||
IN ULONG InitialCount,
|
||||
IN ULONG MaximumCount
|
||||
);
|
||||
|
||||
// ******************************************************************
|
||||
// * NtReleaseSemaphore
|
||||
// ******************************************************************
|
||||
typedef NTSTATUS (NTAPI *FPTR_NtReleaseSemaphore)
|
||||
(
|
||||
IN HANDLE SemaphoreHandle,
|
||||
IN ULONG ReleaseCount,
|
||||
OUT PULONG PreviousCount OPTIONAL
|
||||
);
|
||||
|
||||
// ******************************************************************
|
||||
// * NtCreateFile
|
||||
// ******************************************************************
|
||||
|
@ -1004,6 +1063,7 @@ extern FPTR_RtlReAllocateHeap RtlReAllocateHeap;
|
|||
extern FPTR_RtlSizeHeap RtlSizeHeap;
|
||||
extern FPTR_NtAllocateVirtualMemory NtAllocateVirtualMemory;
|
||||
extern FPTR_NtFreeVirtualMemory NtFreeVirtualMemory;
|
||||
extern FPTR_NtQueryVirtualMemory NtQueryVirtualMemory;
|
||||
extern FPTR_NtClearEvent NtClearEvent;
|
||||
extern FPTR_NtClose NtClose;
|
||||
extern FPTR_NtDelayExecution NtDelayExecution;
|
||||
|
@ -1016,6 +1076,8 @@ extern FPTR_NtQueryVolumeInformationFile NtQueryVolumeInformationFile;
|
|||
extern FPTR_NtCreateEvent NtCreateEvent;
|
||||
extern FPTR_NtCreateMutant NtCreateMutant;
|
||||
extern FPTR_NtReleaseMutant NtReleaseMutant;
|
||||
extern FPTR_NtCreateSemaphore NtCreateSemaphore;
|
||||
extern FPTR_NtReleaseSemaphore NtReleaseSemaphore;
|
||||
extern FPTR_NtCreateFile NtCreateFile;
|
||||
extern FPTR_NtReadFile NtReadFile;
|
||||
extern FPTR_NtWriteFile NtWriteFile;
|
||||
|
|
|
@ -420,7 +420,7 @@ void EmuHLEIntercept(Xbe::LibraryVersion *pLibraryVersion, Xbe::Header *pXbeHead
|
|||
}
|
||||
}
|
||||
|
||||
DbgPrintf("HLE: * Searching HLE database for %s %d.%d.%d...", pLibraryVersion[v].szName, MajorVersion, MinorVersion, BuildVersion);
|
||||
DbgPrintf("HLE: * Searching HLE database for %s %d.%d.%d...", szLibraryName, MajorVersion, MinorVersion, BuildVersion);
|
||||
|
||||
bool found=false;
|
||||
|
||||
|
|
|
@ -226,8 +226,8 @@ extern "C" CXBXKRNL_API uint32 CxbxKrnl_KernelThunkTable[367] =
|
|||
(uint32)&xboxkrnl::MmAllocateContiguousMemoryEx,// 0x00A6 (166)
|
||||
(uint32)&xboxkrnl::MmAllocateSystemMemory, // 0x00A7 (167)
|
||||
(uint32)PANIC(0x00A8), // 0x00A8 (168)
|
||||
(uint32)PANIC(0x00A9), // 0x00A9 (169)
|
||||
(uint32)PANIC(0x00AA), // 0x00AA (170)
|
||||
(uint32)&xboxkrnl::MmCreateKernelStack, // 0x00A9 (169)
|
||||
(uint32)&xboxkrnl::MmDeleteKernelStack, // 0x00AA (170)
|
||||
(uint32)&xboxkrnl::MmFreeContiguousMemory, // 0x00AB (171)
|
||||
(uint32)&xboxkrnl::MmFreeSystemMemory, // 0x00AC (172)
|
||||
(uint32)PANIC(0x00AD), // 0x00AD (173)
|
||||
|
@ -250,7 +250,7 @@ extern "C" CXBXKRNL_API uint32 CxbxKrnl_KernelThunkTable[367] =
|
|||
(uint32)&xboxkrnl::NtCreateFile, // 0x00BE (190)
|
||||
(uint32)PANIC(0x00BF), // 0x00BF (191)
|
||||
(uint32)&xboxkrnl::NtCreateMutant, // 0x00C0 (192)
|
||||
(uint32)PANIC(0x00C1), // 0x00C1 (193)
|
||||
(uint32)&xboxkrnl::NtCreateSemaphore, // 0x00C1 (193)
|
||||
(uint32)PANIC(0x00C2), // 0x00C2 (194)
|
||||
(uint32)PANIC(0x00C3), // 0x00C3 (195)
|
||||
(uint32)PANIC(0x00C4), // 0x00C4 (196)
|
||||
|
@ -274,12 +274,12 @@ extern "C" CXBXKRNL_API uint32 CxbxKrnl_KernelThunkTable[367] =
|
|||
(uint32)PANIC(0x00D6), // 0x00D6 (214)
|
||||
(uint32)PANIC(0x00D7), // 0x00D7 (215)
|
||||
(uint32)PANIC(0x00D8), // 0x00D8 (216)
|
||||
(uint32)PANIC(0x00D9), // 0x00D9 (217)
|
||||
(uint32)&xboxkrnl::NtQueryVirtualMemory, // 0x00D9 (217)
|
||||
(uint32)&xboxkrnl::NtQueryVolumeInformationFile,// 0x00DA (218)
|
||||
(uint32)&xboxkrnl::NtReadFile, // 0x00DB (219)
|
||||
(uint32)PANIC(0x00DC), // 0x00DC (220)
|
||||
(uint32)&xboxkrnl::NtReleaseMutant, // 0x00DD (221)
|
||||
(uint32)PANIC(0x00DE), // 0x00DE (222)
|
||||
(uint32)&xboxkrnl::NtReleaseSemaphore, // 0x00DE (222)
|
||||
(uint32)PANIC(0x00DF), // 0x00DF (223)
|
||||
(uint32)&xboxkrnl::NtResumeThread, // 0x00E0 (224)
|
||||
(uint32)&xboxkrnl::NtSetEvent, // 0x00E1 (225)
|
||||
|
|
Loading…
Reference in New Issue