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:
Daniel Stien 2008-08-23 02:14:20 +00:00
parent ced145e4be
commit 561c3b7d4f
10 changed files with 314 additions and 12 deletions

View File

@ -49,8 +49,24 @@ XBSYSAPI EXPORTNUM(167) PVOID NTAPI MmAllocateSystemMemory
); );
XBSYSAPI VOID *MmClaimGpuInstanceMemory; 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 // * MmFreeContiguousMemory

View File

@ -93,7 +93,17 @@ XBSYSAPI EXPORTNUM(192) NTSTATUS NTAPI NtCreateMutant
IN BOOLEAN InitialOwner 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 *NtCreateTimer;
XBSYSAPI VOID *NtDeleteFile; XBSYSAPI VOID *NtDeleteFile;
XBSYSAPI VOID *NtDeviceIoControlFile; XBSYSAPI VOID *NtDeviceIoControlFile;
@ -198,7 +208,15 @@ XBSYSAPI VOID *NtQueryMutant;
XBSYSAPI VOID *NtQuerySemaphore; XBSYSAPI VOID *NtQuerySemaphore;
XBSYSAPI VOID *NtQuerySymbolicLinkObject; XBSYSAPI VOID *NtQuerySymbolicLinkObject;
XBSYSAPI VOID *NtQueryTimer; XBSYSAPI VOID *NtQueryTimer;
XBSYSAPI VOID *NtQueryVirtualMemory;
// ******************************************************************
// * NtQueryVirtualMemory
// ******************************************************************
XBSYSAPI EXPORTNUM(217) NTSTATUS NTAPI NtQueryVirtualMemory
(
IN PVOID BaseAddress,
OUT PMEMORY_BASIC_INFORMATION Buffer
);
// ****************************************************************** // ******************************************************************
// * NtQueryVolumeInformationFile // * NtQueryVolumeInformationFile
@ -242,7 +260,16 @@ XBSYSAPI EXPORTNUM(221) NTSTATUS NTAPI NtReleaseMutant
OUT PLONG PreviousCount 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; XBSYSAPI VOID *NtRemoveIoCompletion;
// ****************************************************************** // ******************************************************************

View File

@ -452,6 +452,21 @@ typedef struct _IO_STATUS_BLOCK
} }
IO_STATUS_BLOCK, *PIO_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 // * EVENT_TYPE
// ****************************************************************** // ******************************************************************

View File

@ -87,6 +87,8 @@ XTL::D3DFORMAT XTL::EmuXB2PC_D3DFormat(X_D3DFORMAT Format)
EmuWarning("X_D3DFMT_A8L8 -> D3DFMT_R5G6B5"); EmuWarning("X_D3DFMT_A8L8 -> D3DFMT_R5G6B5");
return D3DFMT_R5G6B5; // NOTE: HACK: Totally and utterly wrong :) 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 0x1D: // Linear (X_D3DFMT_LIN_A4R4G4B4)
case 0x04: // Swizzled (X_D3DFMT_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) case 0x2C: // Swizzled (X_D3DFMT_D16)
return D3DFMT_D16; return D3DFMT_D16;
case 0x27: // Swizzled (X_D3DFMT_L6V5U5)
return D3DFMT_L6V5U5;
case 0x28: // Swizzled (X_D3DFMT_V8U8) case 0x28: // Swizzled (X_D3DFMT_V8U8)
return D3DFMT_V8U8; return D3DFMT_V8U8;
@ -184,6 +189,10 @@ XTL::X_D3DFORMAT XTL::EmuPC2XB_D3DFormat(D3DFORMAT Format)
case D3DFMT_A8R8G8B8: case D3DFMT_A8R8G8B8:
// return 0x12; // Linear (X_D3DFMT_LIN_A8R8G8B8) // return 0x12; // Linear (X_D3DFMT_LIN_A8R8G8B8)
return 0x06; return 0x06;
case D3DFMT_A4R4G4B4:
return 0x1D; // Linear
// return 0x04; // Swizzled
} }
CxbxKrnlCleanup("EmuPC2XB_D3DFormat: Unknown Format (%d)", Format); CxbxKrnlCleanup("EmuPC2XB_D3DFormat: Unknown Format (%d)", Format);

View File

@ -73,6 +73,8 @@ inline D3DTRANSFORMSTATETYPE EmuXB2PC_D3DTS(D3DTRANSFORMSTATETYPE State)
return (D3DTRANSFORMSTATETYPE)(State + 14); return (D3DTRANSFORMSTATETYPE)(State + 14);
else if((uint32)State < 10) else if((uint32)State < 10)
return D3DTS_WORLDMATRIX(State-6); return D3DTS_WORLDMATRIX(State-6);
else if((uint32)State == 10) // Max
return (D3DTRANSFORMSTATETYPE)(D3DTS_TEXTURE7 + 1);
CxbxKrnlCleanup("Unknown Transform State Type (%d)", State); CxbxKrnlCleanup("Unknown Transform State Type (%d)", State);

View File

@ -879,6 +879,65 @@ XBSYSAPI EXPORTNUM(167) xboxkrnl::PVOID NTAPI xboxkrnl::MmAllocateSystemMemory
return pRet; 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 // * 0x00AB - MmFreeContiguousMemory
// ****************************************************************** // ******************************************************************
@ -970,7 +1029,7 @@ XBSYSAPI EXPORTNUM(178) VOID NTAPI xboxkrnl::MmPersistContiguousMemory
} }
// ****************************************************************** // ******************************************************************
// * MmQueryAllocationSize // * 0x00B4 - MmQueryAllocationSize
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(180) XTL::ULONG NTAPI xboxkrnl::MmQueryAllocationSize XBSYSAPI EXPORTNUM(180) XTL::ULONG NTAPI xboxkrnl::MmQueryAllocationSize
( (
@ -1436,6 +1495,49 @@ XBSYSAPI EXPORTNUM(192) xboxkrnl::NTSTATUS NTAPI xboxkrnl::NtCreateMutant
return ret; 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 // * 0x00C5 - NtDuplicateObject
// ****************************************************************** // ******************************************************************
@ -1762,6 +1864,42 @@ XBSYSAPI EXPORTNUM(211) xboxkrnl::NTSTATUS NTAPI xboxkrnl::NtQueryInformationFil
return ret; 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 // * 0x00DA - NtQueryVolumeInformationFile
// ****************************************************************** // ******************************************************************
@ -1889,6 +2027,36 @@ XBSYSAPI EXPORTNUM(221) xboxkrnl::NTSTATUS NTAPI xboxkrnl::NtReleaseMutant
return STATUS_SUCCESS; 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 // * 0x00E0 - NtResumeThread
// ****************************************************************** // ******************************************************************

View File

@ -69,6 +69,7 @@ NtDll::FPTR_NtWaitForSingleObject NtDll::NtWaitForSingleObject =
NtDll::FPTR_NtWaitForMultipleObjects NtDll::NtWaitForMultipleObjects = (NtDll::FPTR_NtWaitForMultipleObjects)GetProcAddress(hNtDll, "NtWaitForMultipleObjects"); NtDll::FPTR_NtWaitForMultipleObjects NtDll::NtWaitForMultipleObjects = (NtDll::FPTR_NtWaitForMultipleObjects)GetProcAddress(hNtDll, "NtWaitForMultipleObjects");
NtDll::FPTR_NtAllocateVirtualMemory NtDll::NtAllocateVirtualMemory = (NtDll::FPTR_NtAllocateVirtualMemory)GetProcAddress(hNtDll, "NtAllocateVirtualMemory"); NtDll::FPTR_NtAllocateVirtualMemory NtDll::NtAllocateVirtualMemory = (NtDll::FPTR_NtAllocateVirtualMemory)GetProcAddress(hNtDll, "NtAllocateVirtualMemory");
NtDll::FPTR_NtFreeVirtualMemory NtDll::NtFreeVirtualMemory = (NtDll::FPTR_NtFreeVirtualMemory)GetProcAddress(hNtDll, "NtFreeVirtualMemory"); 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_NtClearEvent NtDll::NtClearEvent = (NtDll::FPTR_NtClearEvent)GetProcAddress(hNtDll, "NtClearEvent");
NtDll::FPTR_NtClose NtDll::NtClose = (NtDll::FPTR_NtClose)GetProcAddress(hNtDll, "NtClose"); NtDll::FPTR_NtClose NtDll::NtClose = (NtDll::FPTR_NtClose)GetProcAddress(hNtDll, "NtClose");
NtDll::FPTR_NtDelayExecution NtDll::NtDelayExecution = (NtDll::FPTR_NtDelayExecution)GetProcAddress(hNtDll, "NtDelayExecution"); 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_NtCreateEvent NtDll::NtCreateEvent = (NtDll::FPTR_NtCreateEvent)GetProcAddress(hNtDll, "NtCreateEvent");
NtDll::FPTR_NtCreateMutant NtDll::NtCreateMutant = (NtDll::FPTR_NtCreateMutant)GetProcAddress(hNtDll, "NtCreateMutant"); NtDll::FPTR_NtCreateMutant NtDll::NtCreateMutant = (NtDll::FPTR_NtCreateMutant)GetProcAddress(hNtDll, "NtCreateMutant");
NtDll::FPTR_NtReleaseMutant NtDll::NtReleaseMutant = (NtDll::FPTR_NtReleaseMutant)GetProcAddress(hNtDll, "NtReleaseMutant"); 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_NtCreateFile NtDll::NtCreateFile = (NtDll::FPTR_NtCreateFile)GetProcAddress(hNtDll, "NtCreateFile");
NtDll::FPTR_NtReadFile NtDll::NtReadFile = (NtDll::FPTR_NtReadFile)GetProcAddress(hNtDll, "NtReadFile"); NtDll::FPTR_NtReadFile NtDll::NtReadFile = (NtDll::FPTR_NtReadFile)GetProcAddress(hNtDll, "NtReadFile");
NtDll::FPTR_NtWriteFile NtDll::NtWriteFile = (NtDll::FPTR_NtWriteFile)GetProcAddress(hNtDll, "NtWriteFile"); NtDll::FPTR_NtWriteFile NtDll::NtWriteFile = (NtDll::FPTR_NtWriteFile)GetProcAddress(hNtDll, "NtWriteFile");

View File

@ -339,6 +339,30 @@ typedef VOID (NTAPI *PIO_APC_ROUTINE)
IN ULONG Reserved 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 // * EVENT_TYPE
// ****************************************************************** // ******************************************************************
@ -708,6 +732,19 @@ typedef NTSTATUS (NTAPI *FPTR_NtFreeVirtualMemory)
IN ULONG FreeType 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 // * RtlInitializeCriticalSection
// ****************************************************************** // ******************************************************************
@ -786,6 +823,28 @@ typedef NTSTATUS (NTAPI *FPTR_NtReleaseMutant)
OUT PLONG PreviousCount OPTIONAL 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 // * NtCreateFile
// ****************************************************************** // ******************************************************************
@ -1004,6 +1063,7 @@ extern FPTR_RtlReAllocateHeap RtlReAllocateHeap;
extern FPTR_RtlSizeHeap RtlSizeHeap; extern FPTR_RtlSizeHeap RtlSizeHeap;
extern FPTR_NtAllocateVirtualMemory NtAllocateVirtualMemory; extern FPTR_NtAllocateVirtualMemory NtAllocateVirtualMemory;
extern FPTR_NtFreeVirtualMemory NtFreeVirtualMemory; extern FPTR_NtFreeVirtualMemory NtFreeVirtualMemory;
extern FPTR_NtQueryVirtualMemory NtQueryVirtualMemory;
extern FPTR_NtClearEvent NtClearEvent; extern FPTR_NtClearEvent NtClearEvent;
extern FPTR_NtClose NtClose; extern FPTR_NtClose NtClose;
extern FPTR_NtDelayExecution NtDelayExecution; extern FPTR_NtDelayExecution NtDelayExecution;
@ -1016,6 +1076,8 @@ extern FPTR_NtQueryVolumeInformationFile NtQueryVolumeInformationFile;
extern FPTR_NtCreateEvent NtCreateEvent; extern FPTR_NtCreateEvent NtCreateEvent;
extern FPTR_NtCreateMutant NtCreateMutant; extern FPTR_NtCreateMutant NtCreateMutant;
extern FPTR_NtReleaseMutant NtReleaseMutant; extern FPTR_NtReleaseMutant NtReleaseMutant;
extern FPTR_NtCreateSemaphore NtCreateSemaphore;
extern FPTR_NtReleaseSemaphore NtReleaseSemaphore;
extern FPTR_NtCreateFile NtCreateFile; extern FPTR_NtCreateFile NtCreateFile;
extern FPTR_NtReadFile NtReadFile; extern FPTR_NtReadFile NtReadFile;
extern FPTR_NtWriteFile NtWriteFile; extern FPTR_NtWriteFile NtWriteFile;

View File

@ -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; bool found=false;

View File

@ -226,8 +226,8 @@ extern "C" CXBXKRNL_API uint32 CxbxKrnl_KernelThunkTable[367] =
(uint32)&xboxkrnl::MmAllocateContiguousMemoryEx,// 0x00A6 (166) (uint32)&xboxkrnl::MmAllocateContiguousMemoryEx,// 0x00A6 (166)
(uint32)&xboxkrnl::MmAllocateSystemMemory, // 0x00A7 (167) (uint32)&xboxkrnl::MmAllocateSystemMemory, // 0x00A7 (167)
(uint32)PANIC(0x00A8), // 0x00A8 (168) (uint32)PANIC(0x00A8), // 0x00A8 (168)
(uint32)PANIC(0x00A9), // 0x00A9 (169) (uint32)&xboxkrnl::MmCreateKernelStack, // 0x00A9 (169)
(uint32)PANIC(0x00AA), // 0x00AA (170) (uint32)&xboxkrnl::MmDeleteKernelStack, // 0x00AA (170)
(uint32)&xboxkrnl::MmFreeContiguousMemory, // 0x00AB (171) (uint32)&xboxkrnl::MmFreeContiguousMemory, // 0x00AB (171)
(uint32)&xboxkrnl::MmFreeSystemMemory, // 0x00AC (172) (uint32)&xboxkrnl::MmFreeSystemMemory, // 0x00AC (172)
(uint32)PANIC(0x00AD), // 0x00AD (173) (uint32)PANIC(0x00AD), // 0x00AD (173)
@ -250,7 +250,7 @@ extern "C" CXBXKRNL_API uint32 CxbxKrnl_KernelThunkTable[367] =
(uint32)&xboxkrnl::NtCreateFile, // 0x00BE (190) (uint32)&xboxkrnl::NtCreateFile, // 0x00BE (190)
(uint32)PANIC(0x00BF), // 0x00BF (191) (uint32)PANIC(0x00BF), // 0x00BF (191)
(uint32)&xboxkrnl::NtCreateMutant, // 0x00C0 (192) (uint32)&xboxkrnl::NtCreateMutant, // 0x00C0 (192)
(uint32)PANIC(0x00C1), // 0x00C1 (193) (uint32)&xboxkrnl::NtCreateSemaphore, // 0x00C1 (193)
(uint32)PANIC(0x00C2), // 0x00C2 (194) (uint32)PANIC(0x00C2), // 0x00C2 (194)
(uint32)PANIC(0x00C3), // 0x00C3 (195) (uint32)PANIC(0x00C3), // 0x00C3 (195)
(uint32)PANIC(0x00C4), // 0x00C4 (196) (uint32)PANIC(0x00C4), // 0x00C4 (196)
@ -274,12 +274,12 @@ extern "C" CXBXKRNL_API uint32 CxbxKrnl_KernelThunkTable[367] =
(uint32)PANIC(0x00D6), // 0x00D6 (214) (uint32)PANIC(0x00D6), // 0x00D6 (214)
(uint32)PANIC(0x00D7), // 0x00D7 (215) (uint32)PANIC(0x00D7), // 0x00D7 (215)
(uint32)PANIC(0x00D8), // 0x00D8 (216) (uint32)PANIC(0x00D8), // 0x00D8 (216)
(uint32)PANIC(0x00D9), // 0x00D9 (217) (uint32)&xboxkrnl::NtQueryVirtualMemory, // 0x00D9 (217)
(uint32)&xboxkrnl::NtQueryVolumeInformationFile,// 0x00DA (218) (uint32)&xboxkrnl::NtQueryVolumeInformationFile,// 0x00DA (218)
(uint32)&xboxkrnl::NtReadFile, // 0x00DB (219) (uint32)&xboxkrnl::NtReadFile, // 0x00DB (219)
(uint32)PANIC(0x00DC), // 0x00DC (220) (uint32)PANIC(0x00DC), // 0x00DC (220)
(uint32)&xboxkrnl::NtReleaseMutant, // 0x00DD (221) (uint32)&xboxkrnl::NtReleaseMutant, // 0x00DD (221)
(uint32)PANIC(0x00DE), // 0x00DE (222) (uint32)&xboxkrnl::NtReleaseSemaphore, // 0x00DE (222)
(uint32)PANIC(0x00DF), // 0x00DF (223) (uint32)PANIC(0x00DF), // 0x00DF (223)
(uint32)&xboxkrnl::NtResumeThread, // 0x00E0 (224) (uint32)&xboxkrnl::NtResumeThread, // 0x00E0 (224)
(uint32)&xboxkrnl::NtSetEvent, // 0x00E1 (225) (uint32)&xboxkrnl::NtSetEvent, // 0x00E1 (225)