HalpQueryInterface
NTSTATUS __stdcall HalpQueryInterface(
_DEVICE_OBJECT *DeviceObject,
_GUID *InterfaceType,
VOID *InterfaceSpecificData,
VOID *Interface,
UINT64 InterfaceBufferSize,
_INTERFACE *Interfacea,
UINT64 *Length){
NTSTATUS v7;
void *DeviceExtension;
__int64 v9;
__int64 v10;
__int64 v11;
v7 = 0;
DeviceExtension = 0i64;
if( *(_DWORD *)DeviceObject->DeviceExtension == 192 )
DeviceExtension = DeviceObject->DeviceExtension;
if( DeviceExtension )
{
v9 = *(_QWORD *)&GUID_BUS_INTERFACE_STANDARD.Data1 - *(_QWORD *)&InterfaceType->Data1;
if( *(_QWORD *)&GUID_BUS_INTERFACE_STANDARD.Data1 == *(_QWORD *)&InterfaceType->Data1 )
v9 = *(_QWORD *)GUID_BUS_INTERFACE_STANDARD.Data4 - *(_QWORD *)InterfaceType->Data4;
if( !v9 )
{
*(_DWORD *)Length = 64;
if( (unsigned int)InterfaceBufferSize >= 0x40 )
{
*(_DWORD *)&Interfacea->Size = 65600;
if( !Interface )
return -1073741811;
Interfacea->Context = Interface;
Interfacea[1].Context = HaliGetDmaAdapter;
Interfacea->InterfaceReference = (void(__fastcall *)(void *))xHalTimerWatchdogStop;
Interfacea[1].InterfaceReference = (void(__fastcall *)(void *))HalSystemVectorDispatchEntry;
Interfacea[1].InterfaceDereference = (void(__fastcall *)(void *))HalSystemVectorDispatchEntry;
Interfacea->InterfaceDereference = (void(__fastcall *)(void *))xHalTimerWatchdogStop;
*(_QWORD *)&Interfacea[1].Size = 0i64;
return 0;
}
return -1073741789;
}
}
v10 = *(_QWORD *)&InterfaceType->Data1 - *(_QWORD *)&GUID_ACPI_CMOS_INTERFACE_STANDARD.Data1;
if( *(_QWORD *)&InterfaceType->Data1 == *(_QWORD *)&GUID_ACPI_CMOS_INTERFACE_STANDARD.Data1 )
v10 = *(_QWORD *)InterfaceType->Data4 - *(_QWORD *)GUID_ACPI_CMOS_INTERFACE_STANDARD.Data4;
if( !v10 )
{
if( (unsigned int)InterfaceBufferSize >= 0x30 )
{
if( (_DWORD)Interface )
return -1073741637;
Interfacea->InterfaceReference = (void(__fastcall *)(void *))xHalTimerWatchdogStop;
Interfacea->InterfaceDereference = (void(__fastcall *)(void *))xHalTimerWatchdogStop;
*(_QWORD *)&Interfacea[1].Size = HalpcGetCmosDataByType;
Interfacea[1].Context = HalpcSetCmosDataByType;
*(_DWORD *)&Interfacea->Size = 65584;
*(_DWORD *)Length = 48;
return 0;
}
*(_DWORD *)Length = 48;
return -1073741789;
}
v11 = *(_QWORD *)&InterfaceType->Data1 - *(_QWORD *)&GUID_DMA_CACHE_COHERENCY_INTERFACE.Data1;
if( *(_QWORD *)&InterfaceType->Data1 == *(_QWORD *)&GUID_DMA_CACHE_COHERENCY_INTERFACE.Data1 )
v11 = *(_QWORD *)InterfaceType->Data4 - *(_QWORD *)GUID_DMA_CACHE_COHERENCY_INTERFACE.Data4;
if( v11 )
return -1073741637;
*(_DWORD *)Length = 0;
if( (unsigned int)InterfaceBufferSize < 0x28 )
return -1073741789;
if( !(_WORD)InterfaceSpecificData )
return -1073741637;
LOBYTE(Interfacea[1].Size) = 1;
Interfacea->InterfaceReference = (void(__fastcall *)(void *))xHalTimerWatchdogStop;
Interfacea->InterfaceDereference = (void(__fastcall *)(void *))xHalTimerWatchdogStop;
*(_DWORD *)&Interfacea->Size = 65576;
Interfacea->Context = 0i64;
*(_DWORD *)Length = 40;
return v7;
}Referenced by:
HalpDispatchPnp