Merge pull request #86 from x1nixmzeng/kernel-thunks

Io Kernel API stubs for logging
This commit is contained in:
Luke Usher 2017-01-07 18:36:12 +00:00 committed by GitHub
commit 3a59895402
4 changed files with 898 additions and 513 deletions

View File

@ -12,14 +12,77 @@
#ifndef XBOXKRNL_IO_H
#define XBOXKRNL_IO_H
XBSYSAPI VOID *IoAllocateIrp;
XBSYSAPI VOID *IoBuildAsynchronousFsdRequest;
XBSYSAPI VOID *IoBuildDeviceIoControlRequest;
XBSYSAPI VOID *IoBuildSynchronousFsdRequest;
XBSYSAPI VOID *IoCheckShareAccess;
// ******************************************************************
// * 0x003B - IoAllocateIrp()
// ******************************************************************
XBSYSAPI EXPORTNUM(59) PVOID NTAPI IoAllocateIrp
(
IN CCHAR StackSize
);
// ******************************************************************
// * 0x003C - IoBuildAsynchronousFsdRequest()
// ******************************************************************
XBSYSAPI EXPORTNUM(60) PVOID NTAPI IoBuildAsynchronousFsdRequest
(
IN ULONG MajorFunction,
IN PDEVICE_OBJECT DeviceObject,
OUT PVOID Buffer OPTIONAL,
IN ULONG Length,
OUT PLARGE_INTEGER StartingOffset OPTIONAL,
OUT PIO_STATUS_BLOCK IoStatusBlock OPTIONAL
);
// ******************************************************************
// * 0x003D - IoBuildDeviceIoControlRequest()
// ******************************************************************
XBSYSAPI EXPORTNUM(61) PVOID NTAPI IoBuildDeviceIoControlRequest
(
IN ULONG IoControlCode,
IN PDEVICE_OBJECT DeviceObject,
IN PVOID InputBuffer OPTIONAL,
IN ULONG InputBufferLength,
OUT PVOID OutputBuffer OPTIONAL,
IN ULONG OutputBufferLength OPTIONAL,
IN BOOLEAN InternalDeviceIoControl,
IN PKEVENT Event,
OUT PIO_STATUS_BLOCK IoStatusBlock OPTIONAL
);
// ******************************************************************
// * 0x003E - IoBuildSynchronousFsdRequest()
// ******************************************************************
XBSYSAPI EXPORTNUM(62) PVOID NTAPI IoBuildSynchronousFsdRequest
(
IN ULONG MajorFunction,
IN PDEVICE_OBJECT DeviceObject,
OUT PVOID Buffer OPTIONAL,
IN ULONG Length,
OUT PLARGE_INTEGER StartingOffset OPTIONAL,
IN PKEVENT Event,
OUT PIO_STATUS_BLOCK IoStatusBlock
);
// ******************************************************************
// * 0x003F - IoCheckShareAccess()
// ******************************************************************
XBSYSAPI EXPORTNUM(63) NTSTATUS NTAPI IoCheckShareAccess
(
IN ACCESS_MASK DesiredAccess,
IN ULONG DesiredShareAccess,
OUT PFILE_OBJECT FileObject,
OUT PSHARE_ACCESS ShareAccess,
IN BOOLEAN Update
);
// ******************************************************************
// * 0x0040 - IoCompletionObjectType
// ******************************************************************
XBSYSAPI EXPORTNUM(64) OBJECT_TYPE IoCompletionObjectType;
// ******************************************************************
// * 0x0041 - IoCreateDevice()
// ******************************************************************
XBSYSAPI EXPORTNUM(65) NTSTATUS NTAPI IoCreateDevice
(
IN PDRIVER_OBJECT DriverObject,
@ -31,7 +94,7 @@ XBSYSAPI EXPORTNUM(65) NTSTATUS NTAPI IoCreateDevice
);
// ******************************************************************
// * IoCreateFile
// * 0x0042 - IoCreateFile()
// ******************************************************************
XBSYSAPI EXPORTNUM(66) NTSTATUS NTAPI IoCreateFile
(
@ -48,7 +111,7 @@ XBSYSAPI EXPORTNUM(66) NTSTATUS NTAPI IoCreateFile
);
// ******************************************************************
// * IoCreateSymbolicLink
// * 0x0043 - IoCreateSymbolicLink()
// ******************************************************************
XBSYSAPI EXPORTNUM(67) NTSTATUS NTAPI IoCreateSymbolicLink
(
@ -56,50 +119,218 @@ XBSYSAPI EXPORTNUM(67) NTSTATUS NTAPI IoCreateSymbolicLink
IN PSTRING DeviceName
);
XBSYSAPI VOID *IoDeleteDevice;
// ******************************************************************
// * 0x0044 - IoDeleteDevice()
// ******************************************************************
XBSYSAPI EXPORTNUM(68) VOID NTAPI IoDeleteDevice
(
IN PDEVICE_OBJECT irql
);
// ******************************************************************
// * IoDeleteSymbolicLink
// * 0x0045 - IoDeleteSymbolicLink()
// ******************************************************************
XBSYSAPI EXPORTNUM(69) NTSTATUS NTAPI IoDeleteSymbolicLink
(
IN PSTRING SymbolicLinkName
);
// ******************************************************************
// * 0x0046 - IoDeviceObjectType
// ******************************************************************
XBSYSAPI EXPORTNUM(70) OBJECT_TYPE IoDeviceObjectType;
// ******************************************************************
// * 0x0047 - IoFileObjectType
// ******************************************************************
XBSYSAPI EXPORTNUM(71) OBJECT_TYPE IoFileObjectType;
XBSYSAPI VOID *IoFreeIrp;
XBSYSAPI VOID *IoInitializeIrp;
XBSYSAPI VOID *IoInvalidDeviceRequest;
XBSYSAPI VOID *IoQueryFileInformation;
XBSYSAPI VOID *IoQueryVolumeInformation;
XBSYSAPI VOID *IoQueueThreadIrp;
XBSYSAPI VOID *IoRemoveShareAccess;
XBSYSAPI VOID *IoSetIoCompletion;
XBSYSAPI VOID *IoSetShareAccess;
XBSYSAPI VOID *IoStartNextPacket;
XBSYSAPI VOID *IoStartNextPacketByKey;
XBSYSAPI VOID *IoStartPacket;
XBSYSAPI VOID *IoSynchronousDeviceIoControlRequest;
XBSYSAPI VOID *IoSynchronousFsdRequest;
XBSYSAPI VOID *IofCallDriver;
XBSYSAPI VOID *IofCompleteRequest;
// ******************************************************************
// * 0x0048 - IoFreeIrp()
// ******************************************************************
XBSYSAPI EXPORTNUM(72) VOID NTAPI IoFreeIrp
(
IN PIRP Irp
);
// ******************************************************************
// * 0x0049 - IoInitializeIrp()
// ******************************************************************
XBSYSAPI EXPORTNUM(73) PVOID NTAPI IoInitializeIrp
(
IN PIRP Irp,
IN USHORT PacketSize,
IN CCHAR StackSize
);
// ******************************************************************
// * 0x004A - IoInvalidDeviceRequest()
// ******************************************************************
XBSYSAPI EXPORTNUM(74) NTSTATUS NTAPI IoInvalidDeviceRequest
(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
// ******************************************************************
// * 0x004B - IoQueryFileInformation()
// ******************************************************************
XBSYSAPI EXPORTNUM(75) NTSTATUS NTAPI IoQueryFileInformation
(
IN PFILE_OBJECT FileObject,
IN FILE_INFORMATION_CLASS FileInformationClass,
IN ULONG Length,
OUT PVOID FileInformation,
OUT PULONG ReturnedLength
);
// ******************************************************************
// * 0x004C - IoQueryVolumeInformation()
// ******************************************************************
XBSYSAPI EXPORTNUM(76) NTSTATUS NTAPI IoQueryVolumeInformation
(
IN PFILE_OBJECT FileObject,
IN FS_INFORMATION_CLASS FsInformationClass,
IN ULONG Length,
OUT PVOID FsInformation,
OUT PULONG ReturnedLength
);
// ******************************************************************
// * 0x004D - IoQueueThreadIrp()
// ******************************************************************
XBSYSAPI EXPORTNUM(77) VOID NTAPI IoQueueThreadIrp
(
IN PIRP Irp
);
// ******************************************************************
// * 0x004E - IoRemoveShareAccess()
// ******************************************************************
XBSYSAPI EXPORTNUM(78) VOID NTAPI IoRemoveShareAccess
(
IN PFILE_OBJECT FileObject,
IN PSHARE_ACCESS ShareAccess
);
// ******************************************************************
// * 0x004F - IoSetIoCompletion()
// ******************************************************************
XBSYSAPI EXPORTNUM(79) NTSTATUS NTAPI IoSetIoCompletion
(
IN PKQUEUE IoCompletion,
IN PVOID KeyContext,
IN PVOID ApcContext,
IN NTSTATUS IoStatus,
IN ULONG IoStatusInformation
);
// ******************************************************************
// * 0x0050 - IoSetShareAccess()
// ******************************************************************
XBSYSAPI EXPORTNUM(80) CCHAR NTAPI IoSetShareAccess
(
IN ULONG DesiredAccess,
IN ULONG DesiredShareAccess,
IN PFILE_OBJECT FileObject,
OUT PSHARE_ACCESS ShareAccess
);
// ******************************************************************
// * 0x0051 - IoStartNextPacket()
// ******************************************************************
XBSYSAPI EXPORTNUM(81) VOID NTAPI IoStartNextPacket
(
IN PDEVICE_OBJECT DeviceObject
);
// ******************************************************************
// * 0x0052 - IoStartNextPacketByKey()
// ******************************************************************
XBSYSAPI EXPORTNUM(82) VOID NTAPI IoStartNextPacketByKey
(
IN PDEVICE_OBJECT DeviceObject,
IN ULONG Key
);
// ******************************************************************
// * 0x0053 - IoStartPacket()
// ******************************************************************
XBSYSAPI EXPORTNUM(83) VOID NTAPI IoStartPacket
(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
OUT PULONG Key OPTIONAL
);
// ******************************************************************
// * 0x0054 - IoSynchronousDeviceIoControlRequest()
// ******************************************************************
XBSYSAPI EXPORTNUM(84) NTSTATUS NTAPI IoSynchronousDeviceIoControlRequest
(
IN ULONG IoControlCode,
IN PDEVICE_OBJECT DeviceObject,
IN PVOID InputBuffer OPTIONAL,
IN ULONG InputBufferLength,
OUT PVOID OutputBuffer OPTIONAL,
IN ULONG OutputBufferLength,
OUT PULONG ReturnedOutputBufferLength OPTIONAL,
IN BOOLEAN InternalDeviceIoControl
);
// ******************************************************************
// * 0x0055 - IoSynchronousFsdRequest()
// ******************************************************************
XBSYSAPI EXPORTNUM(85) NTSTATUS NTAPI IoSynchronousFsdRequest
(
IN ULONG MajorFunction,
IN PDEVICE_OBJECT DeviceObject,
OUT PVOID Buffer OPTIONAL,
IN ULONG Length,
IN PLARGE_INTEGER StartingOffset OPTIONAL
);
// ******************************************************************
// * 0x0056 - IofCallDriver()
// ******************************************************************
XBSYSAPI EXPORTNUM(86) NTSTATUS FASTCALL IofCallDriver
(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
// ******************************************************************
// * 0x0057 - IofCompleteRequest()
// ******************************************************************
XBSYSAPI EXPORTNUM(87) VOID FASTCALL IofCompleteRequest
(
IN PIRP Irp,
IN CCHAR PriorityBoost
);
// ******************************************************************
// * 0x005A - IoDismountVolume()
// ******************************************************************
XBSYSAPI EXPORTNUM(90) NTSTATUS NTAPI IoDismountVolume
(
IN PDEVICE_OBJECT DeviceObject
);
// ******************************************************************
// * IoDismountVolumeByName
// * 0x005B - IoDismountVolumeByName()
// ******************************************************************
XBSYSAPI EXPORTNUM(91) NTSTATUS NTAPI IoDismountVolumeByName
(
IN PSTRING VolumeName
);
XBSYSAPI VOID *IoMarkIrpMustComplete;
// ******************************************************************
// * 0x0167 - IoMarkIrpMustComplete()
// ******************************************************************
XBSYSAPI EXPORTNUM(359) CCHAR NTAPI IoMarkIrpMustComplete
(
IN PIRP Irp
);
#endif

View File

@ -76,7 +76,6 @@ extern "C"
// ******************************************************************
#ifndef VOID
typedef void VOID;
//#define VOID void
#endif
// ******************************************************************
@ -1260,6 +1259,29 @@ typedef struct _KDEVICE_QUEUE
}
KDEVICE_QUEUE, *PKDEVICE_QUEUE, *RESTRICTED_POINTER PRKDEVICE_QUEUE;
typedef PVOID PFILE_SEGMENT_ELEMENT;
typedef struct _IRP
{
CSHORT Type; // 0x00
WORD Size; // 0x02
ULONG Flags; // 0x04
LIST_ENTRY ThreadListEntry; // 0x08
IO_STATUS_BLOCK IoStatus; // 0x10
CHAR StackCount; // 0x18
CHAR CurrentLocation; // 0x19
UCHAR PendingReturned; // 0x1A
UCHAR Cancel; // 0x1B
PIO_STATUS_BLOCK UserIosb; // 0x1C
PKEVENT UserEvent; // 0x20
ULONGLONG Overlay; // 0x28
PVOID UserBuffer; // 0x30
PFILE_SEGMENT_ELEMENT SegmentArray; // 0x34
ULONG LockedBufferLength; // 0x38
ULONGLONG Tail; // 0x3C
}
IRP, *PIRP;
typedef struct _DEVICE_OBJECT
{
CSHORT Type;
@ -1267,7 +1289,7 @@ typedef struct _DEVICE_OBJECT
LONG ReferenceCount;
struct _DRIVER_OBJECT *DriverObject;
struct _DEVICE_OBJECT *MountedOrSelfDevice;
struct _IRP *CurrentIrp;
PIRP CurrentIrp;
ULONG Flags;
PVOID DeviceExtension;
UCHAR DeviceType;
@ -1284,6 +1306,56 @@ DEVICE_OBJECT, *PDEVICE_OBJECT;
typedef VOID *PDRIVER_OBJECT;
// ******************************************************************
// * IO_COMPLETION_CONTEXT
// ******************************************************************
typedef struct _IO_COMPLETION_CONTEXT
{
PVOID Port;
PVOID Key;
} IO_COMPLETION_CONTEXT, *PIO_COMPLETION_CONTEXT;
// ******************************************************************
// * FILE_OBJECT
// ******************************************************************
typedef struct _FILE_OBJECT {
CSHORT Type; // 0x00
BYTE DeletePending : 1; // 0x02
BYTE ReadAccess : 1; // 0x02
BYTE WriteAccess : 1; // 0x02
BYTE DeleteAccess : 1; // 0x02
BYTE SharedRead : 1; // 0x02
BYTE SharedWrite : 1; // 0x02
BYTE SharedDelete : 1; // 0x02
BYTE Reserved : 1; // 0x02
BYTE Flags; // 0x03
PDEVICE_OBJECT DeviceObject; // 0x04
PVOID FsContext; // 0x08
PVOID FsContext2; // 0x0C
NTSTATUS FinalStatus; // 0x10
LARGE_INTEGER CurrentByteOffset; // 0x14
struct _FILE_OBJECT * RelatedFileObject; // 0x1C
PIO_COMPLETION_CONTEXT CompletionContext; // 0x20
LONG LockCount; // 0x24
KEVENT Lock; // 0x28
KEVENT Event; // 0x38
} FILE_OBJECT, *PFILE_OBJECT;
// ******************************************************************
// * SHARE_ACCESS
// ******************************************************************
typedef struct _SHARE_ACCESS {
BYTE OpenCount;
BYTE Readers;
BYTE Writers;
BYTE Deleters;
BYTE SharedRead;
BYTE SharedWrite;
BYTE SharedDelete;
} SHARE_ACCESS, *PSHARE_ACCESS;
// ******************************************************************
// * TIMER_TYPE
// ******************************************************************

View File

@ -49,63 +49,66 @@ namespace xboxkrnl
#include "Emu.h" // For EmuWarning()
#include "EmuFile.h" // For CxbxCreateSymbolicLink(), etc.
/* TODO : Finish of these Dxbx ported signatures :
// ******************************************************************
// * 0x003B - IoAllocateIrp()
// ******************************************************************
XBSYSAPI EXPORTNUM(59) xboxkrnl::PIRP NTAPI xboxkrnl::IoAllocateIrp
XBSYSAPI EXPORTNUM(59) xboxkrnl::PVOID NTAPI xboxkrnl::IoAllocateIrp
(
CCHAR StackSize
IN CCHAR StackSize
)
{
LOG_FUNC_ONE_ARG(StackSize);
LOG_UNIMPLEMENTED();
RETURN(nullptr);
xboxkrnl::PVOID ret = nullptr;
RETURN(ret);
}
// ******************************************************************
// * 0x003C - IoBuildAsynchronousFsdRequest()
// ******************************************************************
XBSYSAPI EXPORTNUM(60) xboxkrnl::PIRP NTAPI xboxkrnl::IoBuildAsynchronousFsdRequest
XBSYSAPI EXPORTNUM(60) xboxkrnl::PVOID NTAPI xboxkrnl::IoBuildAsynchronousFsdRequest
(
ULONG MajorFunction,
PDEVICE_OBJECT DeviceObject,
IN ULONG MajorFunction,
IN PDEVICE_OBJECT DeviceObject,
OUT PVOID Buffer OPTIONAL,
ULONG Length OPTIONAL,
PLARGE_INTEGER StartingOffset OPTIONAL,
PIO_STATUS_BLOCK IoStatusBlock OPTIONAL
IN ULONG Length,
OUT PLARGE_INTEGER StartingOffset OPTIONAL,
OUT PIO_STATUS_BLOCK IoStatusBlock OPTIONAL
)
{
LOG_FUNC_BEGIN
LOG_FUNC_ARG(MajorFunction)
LOG_FUNC_ARG(DeviceObject)
LOG_FUNC_ARG_OUT(Buffer)
LOG_FUNC_ARG_OUT(Length)
LOG_FUNC_ARG(StartingOffset)
LOG_FUNC_ARG(IoStatusBlock)
LOG_FUNC_ARG(Length)
LOG_FUNC_ARG_OUT(StartingOffset)
LOG_FUNC_ARG_OUT(IoStatusBlock)
LOG_FUNC_END;
xboxkrnl::PVOID ret = nullptr;
LOG_UNIMPLEMENTED();
RETURN(nullptr);
RETURN(ret);
}
// ******************************************************************
// * 0x003D - IoBuildDeviceIoControlRequest()
// ******************************************************************
XBSYSAPI EXPORTNUM(61) xboxkrnl::PIRP NTAPI xboxkrnl::IoBuildDeviceIoControlRequest
XBSYSAPI EXPORTNUM(61) xboxkrnl::PVOID NTAPI xboxkrnl::IoBuildDeviceIoControlRequest
(
ULONG IoControlCode,
PDEVICE_OBJECT DeviceObject,
PVOID InputBuffer OPTIONAL,
ULONG InputBufferLength,
IN ULONG IoControlCode,
IN PDEVICE_OBJECT DeviceObject,
IN PVOID InputBuffer OPTIONAL,
IN ULONG InputBufferLength,
OUT PVOID OutputBuffer OPTIONAL,
ULONG OutputBufferLength,
BOOLEAN InternalDeviceIoControl,
PKEVENT Event,
OUT PIO_STATUS_BLOCK IoStatusBlock
IN ULONG OutputBufferLength OPTIONAL,
IN BOOLEAN InternalDeviceIoControl,
IN PKEVENT Event,
OUT PIO_STATUS_BLOCK IoStatusBlock OPTIONAL
)
{
LOG_FUNC_BEGIN
@ -117,25 +120,27 @@ XBSYSAPI EXPORTNUM(61) xboxkrnl::PIRP NTAPI xboxkrnl::IoBuildDeviceIoControlRequ
LOG_FUNC_ARG(OutputBufferLength)
LOG_FUNC_ARG(InternalDeviceIoControl)
LOG_FUNC_ARG(Event)
LOG_FUNC_ARG(IoStatusBlock)
LOG_FUNC_ARG_OUT(IoStatusBlock)
LOG_FUNC_END;
xboxkrnl::PVOID ret = nullptr;
LOG_UNIMPLEMENTED();
RETURN(nullptr);
RETURN(ret);
}
// ******************************************************************
// * 0x003E - IoBuildSynchronousFsdRequest()
// ******************************************************************
XBSYSAPI EXPORTNUM(62) xboxkrnl::PIRP NTAPI xboxkrnl::IoBuildSynchronousFsdRequest
XBSYSAPI EXPORTNUM(62) xboxkrnl::PVOID NTAPI xboxkrnl::IoBuildSynchronousFsdRequest
(
ULONG MajorFunction,
PDEVICE_OBJECT DeviceObject,
IN ULONG MajorFunction,
IN PDEVICE_OBJECT DeviceObject,
OUT PVOID Buffer OPTIONAL,
ULONG Length OPTIONAL,
PLARGE_INTEGER StartingOffset OPTIONAL,
PKEVENT Event,
IN ULONG Length,
OUT PLARGE_INTEGER StartingOffset OPTIONAL,
IN PKEVENT Event,
OUT PIO_STATUS_BLOCK IoStatusBlock
)
{
@ -144,14 +149,16 @@ XBSYSAPI EXPORTNUM(62) xboxkrnl::PIRP NTAPI xboxkrnl::IoBuildSynchronousFsdReque
LOG_FUNC_ARG(DeviceObject)
LOG_FUNC_ARG_OUT(Buffer)
LOG_FUNC_ARG(Length)
LOG_FUNC_ARG(StartingOffset)
LOG_FUNC_ARG_OUT(StartingOffset)
LOG_FUNC_ARG(Event)
LOG_FUNC_ARG_OUT(IoStatusBlock)
LOG_FUNC_END;
xboxkrnl::PVOID ret = nullptr;
LOG_UNIMPLEMENTED();
RETURN(nullptr);
RETURN(ret);
}
// ******************************************************************
@ -159,11 +166,11 @@ XBSYSAPI EXPORTNUM(62) xboxkrnl::PIRP NTAPI xboxkrnl::IoBuildSynchronousFsdReque
// ******************************************************************
XBSYSAPI EXPORTNUM(63) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoCheckShareAccess
(
ACCESS_MASK DesiredAccess,
ULONG DesiredShareAccess,
IN ACCESS_MASK DesiredAccess,
IN ULONG DesiredShareAccess,
OUT PFILE_OBJECT FileObject,
OUT PSHARE_ACCESS ShareAccess,
BOOLEAN Update
IN BOOLEAN Update
)
{
LOG_FUNC_BEGIN
@ -178,7 +185,6 @@ XBSYSAPI EXPORTNUM(63) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoCheckShareAccess
RETURN(S_OK);
}
*/
// ******************************************************************
// * 0x0040 - IoCompletionObjectType
@ -205,18 +211,17 @@ XBSYSAPI EXPORTNUM(65) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoCreateDevice
IN ULONG DeviceExtensionSize,
IN PSTRING DeviceName OPTIONAL,
IN ULONG DeviceType,
// TODO? : IN ULONG DeviceCharacteristics,
IN BOOLEAN Exclusive,
OUT PDEVICE_OBJECT* DeviceObject
)
{
LOG_FUNC_BEGIN
LOG_FUNC_ARG_OUT(DriverObject)
LOG_FUNC_ARG(DriverObject)
LOG_FUNC_ARG(DeviceExtensionSize)
LOG_FUNC_ARG(DeviceName)
LOG_FUNC_ARG_OUT(DeviceType)
LOG_FUNC_ARG(DeviceType)
LOG_FUNC_ARG(Exclusive)
LOG_FUNC_ARG(DeviceObject)
LOG_FUNC_ARG_OUT(DeviceObject)
LOG_FUNC_END;
LOG_UNIMPLEMENTED();
@ -304,6 +309,19 @@ XBSYSAPI EXPORTNUM(67) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoCreateSymbolicLink
RETURN(ret);
}
// ******************************************************************
// * 0x0044 - IoDeleteDevice()
// ******************************************************************
XBSYSAPI EXPORTNUM(68) xboxkrnl::VOID NTAPI xboxkrnl::IoDeleteDevice
(
IN PDEVICE_OBJECT irql
)
{
LOG_FUNC_ONE_ARG(irql);
LOG_UNIMPLEMENTED();
}
// ******************************************************************
// * 0x0045 - IoDeleteSymbolicLink()
// ******************************************************************
@ -357,33 +375,40 @@ XBSYSAPI EXPORTNUM(71) xboxkrnl::OBJECT_TYPE xboxkrnl::IoFileObjectType =
'eliF' // = "File" in reverse
};
/* TODO : Finish of these Dxbx ported signatures :
// ******************************************************************
// * 0x0048 - IoFreeIrp()
// ******************************************************************
XBSYSAPI EXPORTNUM(72) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoFreeIrp
XBSYSAPI EXPORTNUM(72) xboxkrnl::VOID NTAPI xboxkrnl::IoFreeIrp
(
IN PIRP Irp
)
{
LOG_FUNC();
LOG_FUNC_ONE_ARG(Irp);
LOG_UNIMPLEMENTED();
RETURN(S_OK);
}
// ******************************************************************
// * 0x0049 - IoInitializeIrp()
// ******************************************************************
XBSYSAPI EXPORTNUM(73) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoInitializeIrp
XBSYSAPI EXPORTNUM(73) xboxkrnl::PVOID NTAPI xboxkrnl::IoInitializeIrp
(
IN PIRP Irp,
IN USHORT PacketSize,
IN CCHAR StackSize
)
{
LOG_FUNC();
LOG_FUNC_BEGIN
LOG_FUNC_ARG(Irp)
LOG_FUNC_ARG(PacketSize)
LOG_FUNC_ARG(StackSize)
LOG_FUNC_END;
xboxkrnl::PVOID ret = nullptr;
LOG_UNIMPLEMENTED();
RETURN(S_OK);
RETURN(ret);
}
// ******************************************************************
@ -391,8 +416,8 @@ XBSYSAPI EXPORTNUM(73) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoInitializeIrp
// ******************************************************************
XBSYSAPI EXPORTNUM(74) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoInvalidDeviceRequest
(
PDEVICE_OBJECT DeviceObject,
PIRP Irp
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
)
{
LOG_FUNC_BEGIN
@ -410,11 +435,11 @@ XBSYSAPI EXPORTNUM(74) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoInvalidDeviceRequest
// ******************************************************************
XBSYSAPI EXPORTNUM(75) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoQueryFileInformation
(
PFILE_OBJECT FileObject,
FILE_INFORMATION_CLASS FileInformationClass,
ULONG Length,
IN PFILE_OBJECT FileObject,
IN FILE_INFORMATION_CLASS FileInformationClass,
IN ULONG Length,
OUT PVOID FileInformation,
OUT PULONG ReturnedLength,
OUT PULONG ReturnedLength
)
{
LOG_FUNC_BEGIN
@ -436,9 +461,9 @@ XBSYSAPI EXPORTNUM(75) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoQueryFileInformation
// ******************************************************************
XBSYSAPI EXPORTNUM(76) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoQueryVolumeInformation
(
PFILE_OBJECT FileObject,
FS_INFORMATION_CLASS FsInformationClass,
ULONG Length,
IN PFILE_OBJECT FileObject,
IN FS_INFORMATION_CLASS FsInformationClass,
IN ULONG Length,
OUT PVOID FsInformation,
OUT PULONG ReturnedLength
)
@ -461,29 +486,31 @@ XBSYSAPI EXPORTNUM(76) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoQueryVolumeInformati
// ******************************************************************
// * 0x004D - IoQueueThreadIrp()
// ******************************************************************
XBSYSAPI EXPORTNUM(77) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoQueueThreadIrp
XBSYSAPI EXPORTNUM(77) xboxkrnl::VOID NTAPI xboxkrnl::IoQueueThreadIrp
(
IN PIRP Irp
)
{
LOG_FUNC();
LOG_FUNC_ONE_ARG(Irp);
LOG_UNIMPLEMENTED();
RETURN(S_OK);
}
// ******************************************************************
// * 0x004E - IoRemoveShareAccess()
// ******************************************************************
XBSYSAPI EXPORTNUM(78) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoRemoveShareAccess
XBSYSAPI EXPORTNUM(78) xboxkrnl::VOID NTAPI xboxkrnl::IoRemoveShareAccess
(
IN PFILE_OBJECT FileObject,
IN PSHARE_ACCESS ShareAccess
)
{
LOG_FUNC();
LOG_FUNC_BEGIN
LOG_FUNC_ARG(FileObject)
LOG_FUNC_ARG(ShareAccess)
LOG_FUNC_END;
LOG_UNIMPLEMENTED();
RETURN(S_OK);
}
// ******************************************************************
@ -491,9 +518,20 @@ XBSYSAPI EXPORTNUM(78) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoRemoveShareAccess
// ******************************************************************
XBSYSAPI EXPORTNUM(79) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoSetIoCompletion
(
IN PKQUEUE IoCompletion,
IN PVOID KeyContext,
IN PVOID ApcContext,
IN NTSTATUS IoStatus,
IN ULONG IoStatusInformation
)
{
LOG_FUNC();
LOG_FUNC_BEGIN
LOG_FUNC_ARG(IoCompletion)
LOG_FUNC_ARG(KeyContext)
LOG_FUNC_ARG(ApcContext)
LOG_FUNC_ARG(IoStatus)
LOG_FUNC_ARG(IoStatusInformation)
LOG_FUNC_END;
LOG_UNIMPLEMENTED();
@ -503,57 +541,75 @@ XBSYSAPI EXPORTNUM(79) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoSetIoCompletion
// ******************************************************************
// * 0x0050 - IoSetShareAccess()
// ******************************************************************
XBSYSAPI EXPORTNUM(80) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoSetShareAccess
XBSYSAPI EXPORTNUM(80) xboxkrnl::CCHAR NTAPI xboxkrnl::IoSetShareAccess
(
IN ULONG DesiredAccess,
IN ULONG DesiredShareAccess,
IN PFILE_OBJECT FileObject,
OUT PSHARE_ACCESS ShareAccess
)
{
LOG_FUNC();
LOG_FUNC_BEGIN
LOG_FUNC_ARG(DesiredAccess)
LOG_FUNC_ARG(DesiredShareAccess)
LOG_FUNC_ARG(FileObject)
LOG_FUNC_ARG_OUT(ShareAccess)
LOG_FUNC_END;
xboxkrnl::CCHAR ret = 0; // ShareAccess->OpenCount;
LOG_UNIMPLEMENTED();
RETURN(S_OK);
RETURN(ret);
}
// ******************************************************************
// * 0x0051 - IoStartNextPacket()
// ******************************************************************
XBSYSAPI EXPORTNUM(81) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoStartNextPacket
XBSYSAPI EXPORTNUM(81) xboxkrnl::VOID NTAPI xboxkrnl::IoStartNextPacket
(
IN PDEVICE_OBJECT DeviceObject
)
{
LOG_FUNC();
LOG_FUNC_ONE_ARG(DeviceObject);
LOG_UNIMPLEMENTED();
RETURN(S_OK);
}
// ******************************************************************
// * 0x0052 - IoStartNextPacketByKey()
// ******************************************************************
XBSYSAPI EXPORTNUM(82) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoStartNextPacketByKey
XBSYSAPI EXPORTNUM(82) xboxkrnl::VOID NTAPI xboxkrnl::IoStartNextPacketByKey
(
IN PDEVICE_OBJECT DeviceObject,
IN ULONG Key
)
{
LOG_FUNC();
LOG_FUNC_BEGIN
LOG_FUNC_ARG(DeviceObject)
LOG_FUNC_ARG(Key)
LOG_FUNC_END;
LOG_UNIMPLEMENTED();
RETURN(S_OK);
}
// ******************************************************************
// * 0x0053 - IoStartPacket()
// ******************************************************************
XBSYSAPI EXPORTNUM(83) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoStartPacket
XBSYSAPI EXPORTNUM(83) xboxkrnl::VOID NTAPI xboxkrnl::IoStartPacket
(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
OUT PULONG Key OPTIONAL
)
{
LOG_FUNC();
LOG_FUNC_BEGIN
LOG_FUNC_ARG(DeviceObject)
LOG_FUNC_ARG(Irp)
LOG_FUNC_ARG_OUT(Key)
LOG_FUNC_END;
LOG_UNIMPLEMENTED();
RETURN(S_OK);
}
// ******************************************************************
@ -566,14 +622,14 @@ XBSYSAPI EXPORTNUM(83) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoStartPacket
// New to the XBOX.
XBSYSAPI EXPORTNUM(84) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoSynchronousDeviceIoControlRequest
(
ULONG IoControlCode,
PDEVICE_OBJECT DeviceObject,
PVOID InputBuffer OPTIONAL,
ULONG InputBufferLength,
PVOID OutputBuffer OPTIONAL,
ULONG OutputBufferLength,
PDWORD unknown_use_zero OPTIONAL,
BOOLEAN InternalDeviceIoControl
IN ULONG IoControlCode,
IN PDEVICE_OBJECT DeviceObject,
IN PVOID InputBuffer OPTIONAL,
IN ULONG InputBufferLength,
OUT PVOID OutputBuffer OPTIONAL,
IN ULONG OutputBufferLength,
OUT PULONG ReturnedOutputBufferLength OPTIONAL,
IN BOOLEAN InternalDeviceIoControl
)
{
LOG_FUNC_BEGIN
@ -581,9 +637,9 @@ XBSYSAPI EXPORTNUM(84) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoSynchronousDeviceIoC
LOG_FUNC_ARG(DeviceObject)
LOG_FUNC_ARG(InputBuffer)
LOG_FUNC_ARG(InputBufferLength)
LOG_FUNC_ARG(OutputBuffer)
LOG_FUNC_ARG_OUT(OutputBuffer)
LOG_FUNC_ARG(OutputBufferLength)
LOG_FUNC_ARG(unknown_use_zero)
LOG_FUNC_ARG_OUT(ReturnedOutputBufferLength)
LOG_FUNC_ARG(InternalDeviceIoControl)
LOG_FUNC_END;
@ -597,9 +653,20 @@ XBSYSAPI EXPORTNUM(84) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoSynchronousDeviceIoC
// ******************************************************************
XBSYSAPI EXPORTNUM(85) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoSynchronousFsdRequest
(
IN ULONG MajorFunction,
IN PDEVICE_OBJECT DeviceObject,
OUT PVOID Buffer OPTIONAL,
IN ULONG Length,
IN PLARGE_INTEGER StartingOffset OPTIONAL
)
{
LOG_FUNC();
LOG_FUNC_BEGIN
LOG_FUNC_ARG(MajorFunction)
LOG_FUNC_ARG(DeviceObject)
LOG_FUNC_ARG_OUT(Buffer)
LOG_FUNC_ARG(Length)
LOG_FUNC_ARG(StartingOffset)
LOG_FUNC_END;
LOG_UNIMPLEMENTED();
@ -611,8 +678,8 @@ XBSYSAPI EXPORTNUM(85) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoSynchronousFsdReques
// ******************************************************************
XBSYSAPI EXPORTNUM(86) xboxkrnl::NTSTATUS FASTCALL xboxkrnl::IofCallDriver
(
PDEVICE_OBJECT DeviceObject,
PIRP Irp
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
)
{
LOG_FUNC_BEGIN
@ -628,10 +695,10 @@ XBSYSAPI EXPORTNUM(86) xboxkrnl::NTSTATUS FASTCALL xboxkrnl::IofCallDriver
// ******************************************************************
// * 0x0057 - IofCompleteRequest()
// ******************************************************************
XBSYSAPI EXPORTNUM(87) xboxkrnl::NTSTATUS FASTCALL xboxkrnl::IofCompleteRequest
XBSYSAPI EXPORTNUM(87) xboxkrnl::VOID FASTCALL xboxkrnl::IofCompleteRequest
(
PIRP Irp
CCHAR PriorityBoost
IN PIRP Irp,
IN CCHAR PriorityBoost
)
{
LOG_FUNC_BEGIN
@ -641,7 +708,6 @@ XBSYSAPI EXPORTNUM(87) xboxkrnl::NTSTATUS FASTCALL xboxkrnl::IofCompleteRequest
LOG_UNIMPLEMENTED();
}
*/
// ******************************************************************
// * 0x005A - IoDismountVolume()
@ -678,3 +744,19 @@ XBSYSAPI EXPORTNUM(91) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoDismountVolumeByName
RETURN(ret);
}
// ******************************************************************
// * 0x0167 - IoMarkIrpMustComplete()
// ******************************************************************
XBSYSAPI EXPORTNUM(359) xboxkrnl::CCHAR NTAPI xboxkrnl::IoMarkIrpMustComplete
(
IN PIRP Irp
)
{
LOG_FUNC_ONE_ARG(Irp);
xboxkrnl::CCHAR ret = 0; // ShareAccess->OpenCount;
LOG_UNIMPLEMENTED();
RETURN(ret);
}

View File

@ -126,35 +126,35 @@ extern "C" CXBXKRNL_API uint32 CxbxKrnl_KernelThunkTable[379] =
(uint32)FUNC(&xboxkrnl::KRNL(InterlockedFlushSList)), // 0x0038 (56)
(uint32)FUNC(&xboxkrnl::KRNL(InterlockedPopEntrySList)), // 0x0039 (57)
(uint32)FUNC(&xboxkrnl::KRNL(InterlockedPushEntrySList)), // 0x003A (58)
(uint32)PANIC(0x003B), // 0x003B (59) IoAllocateIrp
(uint32)PANIC(0x003C), // 0x003C (60) IoBuildAsynchronousFsdRequest
(uint32)PANIC(0x003D), // 0x003D (61) IoBuildDeviceIoControlRequest
(uint32)PANIC(0x003E), // 0x003E (62) IoBuildSynchronousFsdRequest
(uint32)PANIC(0x003F), // 0x003F (63) IoCheckShareAccess
(uint32)FUNC(&xboxkrnl::IoAllocateIrp), // 0x003B (59)
(uint32)FUNC(&xboxkrnl::IoBuildAsynchronousFsdRequest), // 0x003C (60)
(uint32)FUNC(&xboxkrnl::IoBuildDeviceIoControlRequest), // 0x003D (61)
(uint32)FUNC(&xboxkrnl::IoBuildSynchronousFsdRequest), // 0x003E (62)
(uint32)FUNC(&xboxkrnl::IoCheckShareAccess), // 0x003F (63)
(uint32)VARIABLE(&xboxkrnl::IoCompletionObjectType), // 0x0040 (64)
(uint32)FUNC(&xboxkrnl::IoCreateDevice), // 0x0041 (65)
(uint32)FUNC(&xboxkrnl::IoCreateFile), // 0x0042 (66)
(uint32)FUNC(&xboxkrnl::IoCreateSymbolicLink), // 0x0043 (67)
(uint32)PANIC(0x0044), // 0x0044 (68) IoDeleteDevice
(uint32)FUNC(&xboxkrnl::IoDeleteDevice), // 0x0044 (68)
(uint32)FUNC(&xboxkrnl::IoDeleteSymbolicLink), // 0x0045 (69)
(uint32)VARIABLE(&xboxkrnl::IoDeviceObjectType), // 0x0046 (70)
(uint32)VARIABLE(&xboxkrnl::IoFileObjectType), // 0x0047 (71)
(uint32)PANIC(0x0048), // 0x0048 (72) IoFreeIrp
(uint32)PANIC(0x0049), // 0x0049 (73) IoInitializeIrp
(uint32)PANIC(0x004A), // 0x004A (74) IoInvalidDeviceRequest
(uint32)PANIC(0x004B), // 0x004B (75) IoQueryFileInformation
(uint32)PANIC(0x004C), // 0x004C (76) IoQueryVolumeInformation
(uint32)PANIC(0x004D), // 0x004D (77) IoQueueThreadIrp
(uint32)PANIC(0x004E), // 0x004E (78) IoRemoveShareAccess
(uint32)PANIC(0x004F), // 0x004F (79) IoSetIoCompletion
(uint32)PANIC(0x0050), // 0x0050 (80) IoSetShareAccess
(uint32)PANIC(0x0051), // 0x0051 (81) IoStartNextPacket
(uint32)PANIC(0x0052), // 0x0052 (82) IoStartNextPacketByKey
(uint32)PANIC(0x0053), // 0x0053 (83) IoStartPacket
(uint32)PANIC(0x0054), // 0x0054 (84) IoSynchronousDeviceIoControlRequest
(uint32)PANIC(0x0055), // 0x0055 (85) IoSynchronousFsdRequest
(uint32)PANIC(0x0056), // 0x0056 (86) IofCallDriver
(uint32)PANIC(0x0057), // 0x0057 (87) IofCompleteRequest
(uint32)FUNC(&xboxkrnl::IoFreeIrp), // 0x0048 (72)
(uint32)FUNC(&xboxkrnl::IoInitializeIrp), // 0x0049 (73)
(uint32)FUNC(&xboxkrnl::IoInvalidDeviceRequest), // 0x004A (74)
(uint32)FUNC(&xboxkrnl::IoQueryFileInformation), // 0x004B (75)
(uint32)FUNC(&xboxkrnl::IoQueryVolumeInformation), // 0x004C (76)
(uint32)FUNC(&xboxkrnl::IoQueueThreadIrp), // 0x004D (77)
(uint32)FUNC(&xboxkrnl::IoRemoveShareAccess), // 0x004E (78)
(uint32)FUNC(&xboxkrnl::IoSetIoCompletion), // 0x004F (79)
(uint32)FUNC(&xboxkrnl::IoSetShareAccess), // 0x0050 (80)
(uint32)FUNC(&xboxkrnl::IoStartNextPacket), // 0x0051 (81)
(uint32)FUNC(&xboxkrnl::IoStartNextPacketByKey), // 0x0052 (82)
(uint32)FUNC(&xboxkrnl::IoStartPacket), // 0x0053 (83)
(uint32)FUNC(&xboxkrnl::IoSynchronousDeviceIoControlRequest), // 0x0054 (84)
(uint32)FUNC(&xboxkrnl::IoSynchronousFsdRequest), // 0x0055 (85)
(uint32)FUNC(&xboxkrnl::IofCallDriver), // 0x0056 (86)
(uint32)FUNC(&xboxkrnl::IofCompleteRequest), // 0x0057 (87)
(uint32)VARIABLE(&xboxkrnl::KdDebuggerEnabled), // 0x0058 (88)
(uint32)VARIABLE(&xboxkrnl::KdDebuggerNotPresent), // 0x0059 (89)
(uint32)FUNC(&xboxkrnl::IoDismountVolume), // 0x005A (90)
@ -426,7 +426,7 @@ extern "C" CXBXKRNL_API uint32 CxbxKrnl_KernelThunkTable[379] =
(uint32)VARIABLE(&xboxkrnl::HalBootSMCVideoMode), // 0x0164 (356)
(uint32)VARIABLE(&xboxkrnl::IdexChannelObject), // 0x0165 (357)
(uint32)FUNC(&xboxkrnl::HalIsResetOrShutdownPending), // 0x0166 (358)
(uint32)PANIC(0x0167), // 0x0167 (359) IoMarkIrpMustComplete
(uint32)FUNC(&xboxkrnl::IoMarkIrpMustComplete), // 0x0167 (359)
(uint32)FUNC(&xboxkrnl::HalInitiateShutdown), // 0x0168 (360)
(uint32)PANIC(0x0169), // 0x0169 (361) KRNL(_snprintf)
(uint32)PANIC(0x016A), // 0x016A (362) KRNL(_sprintf)