HalpKdSetupDebuggingDevice
VOID __fastcall HalpKdSetupDebuggingDevice(_LOADER_PARAMETER_BLOCK *LoaderBlock, _DEBUG_DEVICE_DESCRIPTOR *Device){
_DEBUG_DEVICE_DESCRIPTOR **v2;
__int128 v5;
__int128 v6;
int v7;
_DEVICES_IN_USE *v8;
_LIST_ENTRY *v9;
_LIST_ENTRY *Flink;
if( Device )
{
if( !Device->Initialized )
{
v5 = *(_OWORD *)&Device->Memory.Start.anonymous_0.LowPart;
v6 = *(_OWORD *)&Device->Memory.VirtualAddress;
if( Device->Configured || HalpKdEnumerateDebuggingDevices(0i64, Device, KdConfigureDeviceAndContinue, v2) >= 0 )
{
if( Device->Memory.VirtualAddress
|| (*(_OWORD *)&Device->Memory.Start.anonymous_0.LowPart = v5,
*(_OWORD *)&Device->Memory.VirtualAddress = v6,
HalpAllocateScratchMemory(LoaderBlock, Device) >= 0) )
{
Device->Initialized = 1;
HalpRegisterDeviceInUse(Device);
if( v7 < 0 && Device->NameSpace != KdNameSpaceNone )
{
v8 = HalpFindDevice(Device);
if( v8 )
{
v9 = *(_LIST_ENTRY **)&v8->DeviceCount;
if( *(_DEVICES_IN_USE **)(*(_QWORD *)&v8->DeviceCount + 8i64) != v8
|| (Flink = v8->ListHead.Flink, (_DEVICES_IN_USE *)Flink->Flink != v8) )
{
__fastfail(3u);
}
Flink->Flink = v9;
v9->Blink = Flink;
--*(&CmpDummyThreadEvent + 1056);
}
}
}
}
}
}
}Referenced by:
No references.