Merge pull request #1799 from LukeUsher/fix-mechassault
kernel: Define and init IdexChannelObject
This commit is contained in:
commit
8ebeeeb24c
|
@ -483,7 +483,7 @@ XBSYSAPI EXPORTNUM(355) UCHAR XePublicKeyDataChihiroBoot[284];
|
|||
// ******************************************************************
|
||||
// * 0x0165 - IdexChannelObject
|
||||
// ******************************************************************
|
||||
XBSYSAPI EXPORTNUM(357) BYTE IdexChannelObject[0x100];
|
||||
XBSYSAPI EXPORTNUM(357) IDE_CHANNEL_OBJECT IdexChannelObject;
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x0169 - RtlSnprintf()
|
||||
|
|
|
@ -2617,6 +2617,45 @@ typedef struct _IO_COMPLETION_BASIC_INFORMATION {
|
|||
LONG Depth;
|
||||
} IO_COMPLETION_BASIC_INFORMATION, *PIO_COMPLETION_BASIC_INFORMATION;
|
||||
|
||||
typedef VOID(*PIDE_INTERRUPT_ROUTINE) (void);
|
||||
|
||||
typedef VOID(*PIDE_FINISHIO_ROUTINE) (void);
|
||||
|
||||
typedef BOOLEAN(*PIDE_POLL_RESET_COMPLETE_ROUTINE) (void);
|
||||
|
||||
typedef VOID(*PIDE_TIMEOUT_EXPIRED_ROUTINE) (void);
|
||||
|
||||
typedef VOID(*PIDE_START_PACKET_ROUTINE) (
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp
|
||||
);
|
||||
|
||||
typedef VOID(*PIDE_START_NEXT_PACKET_ROUTINE) (void);
|
||||
|
||||
typedef struct _IDE_CHANNEL_OBJECT
|
||||
{
|
||||
PIDE_INTERRUPT_ROUTINE InterruptRoutine;
|
||||
PIDE_FINISHIO_ROUTINE FinishIoRoutine;
|
||||
PIDE_POLL_RESET_COMPLETE_ROUTINE PollResetCompleteRoutine;
|
||||
PIDE_TIMEOUT_EXPIRED_ROUTINE TimeoutExpiredRoutine;
|
||||
PIDE_START_PACKET_ROUTINE StartPacketRoutine;
|
||||
PIDE_START_NEXT_PACKET_ROUTINE StartNextPacketRoutine;
|
||||
KIRQL InterruptIrql;
|
||||
BOOLEAN ExpectingBusMasterInterrupt;
|
||||
BOOLEAN StartPacketBusy;
|
||||
BOOLEAN StartPacketRequested;
|
||||
UCHAR Timeout;
|
||||
UCHAR IoRetries;
|
||||
UCHAR MaximumIoRetries;
|
||||
PIRP CurrentIrp;
|
||||
KDEVICE_QUEUE DeviceQueue;
|
||||
ULONG PhysicalRegionDescriptorTablePhysical;
|
||||
KDPC TimerDpc;
|
||||
KDPC FinishDpc;
|
||||
KTIMER Timer;
|
||||
KINTERRUPT InterruptObject;
|
||||
} IDE_CHANNEL_OBJECT, *PIDE_CHANNEL_OBJECT;
|
||||
|
||||
// ******************************************************************
|
||||
// * Debug
|
||||
// ******************************************************************
|
||||
|
|
|
@ -84,7 +84,7 @@ void InsertTailList(xboxkrnl::PLIST_ENTRY pListHead, xboxkrnl::PLIST_ENTRY pEntr
|
|||
}
|
||||
|
||||
//#define RemoveEntryList(e) do { PLIST_ENTRY f = (e)->Flink, b = (e)->Blink; f->Blink = b; b->Flink = f; (e)->Flink = (e)->Blink = NULL; } while (0)
|
||||
|
||||
|
||||
// Returns TRUE if the list has become empty after removing the element, FALSE otherwise.
|
||||
xboxkrnl::BOOLEAN RemoveEntryList(xboxkrnl::PLIST_ENTRY pEntry)
|
||||
{
|
||||
|
@ -97,13 +97,13 @@ xboxkrnl::BOOLEAN RemoveEntryList(xboxkrnl::PLIST_ENTRY pEntry)
|
|||
|
||||
if (_EX_Flink != nullptr) {
|
||||
_EX_Flink->Blink = _EX_Blink;
|
||||
}
|
||||
|
||||
if (_EX_Blink != nullptr && _EX_Flink != nullptr) {
|
||||
return (_EX_Flink == _EX_Blink);
|
||||
}
|
||||
// If we reach here then it means we have erroneously been called on a detached element. In this case,
|
||||
// always report FALSE to avoid possible side effects
|
||||
}
|
||||
|
||||
if (_EX_Blink != nullptr && _EX_Flink != nullptr) {
|
||||
return (_EX_Flink == _EX_Blink);
|
||||
}
|
||||
// If we reach here then it means we have erroneously been called on a detached element. In this case,
|
||||
// always report FALSE to avoid possible side effects
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -463,8 +463,7 @@ XBSYSAPI EXPORTNUM(163) xboxkrnl::VOID FASTCALL xboxkrnl::KiUnlockDispatcherData
|
|||
// ******************************************************************
|
||||
// * 0x0165 - IdexChannelObject
|
||||
// ******************************************************************
|
||||
// TODO : Determine size, structure & filling behind IdexChannelObject
|
||||
XBSYSAPI EXPORTNUM(357) xboxkrnl::BYTE xboxkrnl::IdexChannelObject[0x100] = { };
|
||||
XBSYSAPI EXPORTNUM(357) xboxkrnl::IDE_CHANNEL_OBJECT xboxkrnl::IdexChannelObject = { };
|
||||
|
||||
// ******************************************************************
|
||||
// * 0x0169 - RtlSnprintf()
|
||||
|
|
|
@ -112,6 +112,8 @@ xboxkrnl::VOID xboxkrnl::KiInitSystem()
|
|||
KiTimerTableListHead[i].Time.u.HighPart = 0xFFFFFFFF;
|
||||
KiTimerTableListHead[i].Time.u.LowPart = 0;
|
||||
}
|
||||
|
||||
InitializeListHead(&IdexChannelObject.DeviceQueue.DeviceListHead);
|
||||
}
|
||||
|
||||
xboxkrnl::VOID xboxkrnl::KiTimerLock()
|
||||
|
|
Loading…
Reference in New Issue