IoQueryDeviceDescription
NTSTATUS __stdcall IoQueryDeviceDescription(
PINTERFACE_TYPE BusType,
PULONG BusNumber,
PCONFIGURATION_TYPE ControllerType,
PULONG ControllerNumber,
PCONFIGURATION_TYPE PeripheralType,
PULONG PeripheralNumber,
PIO_QUERY_DEVICE_ROUTINE CalloutRoutine,
PVOID Context){
int v8;
PVOID Handle;
_UNICODE_STRING Destination;
_UNICODE_STRING PathName;
_IO_QUERY_DESC QueryDescription[2];
PULONG v14;
PCONFIGURATION_TYPE v15;
PULONG v16;
PCONFIGURATION_TYPE v17;
PULONG v18;
PIO_QUERY_DEVICE_ROUTINE v19;
PVOID v20;
UINT64 BusNum;
Handle = 0i64;
LODWORD(BusNum) = -1;
Destination = 0i64;
if( !BusType )
return -1073741822;
v17 = PeripheralType;
v18 = PeripheralNumber;
v19 = CalloutRoutine;
v14 = BusNumber;
*(_QWORD *)QueryDescription = BusType;
v15 = ControllerType;
v20 = Context;
v16 = ControllerNumber;
Destination.MaximumLength = 2048;
Destination.Buffer = (wchar_t *)ExAllocatePoolWithTag(1ui64, 0x800ui64, 1314025289i64);
if( !Destination.Buffer )
return -1073741670;
RtlAppendUnicodeStringToString(&Destination, &CmRegistryMachineHardwareDescriptionSystemName);
v8 = IopOpenRegistryKey(&Handle, 0i64, &Destination, 0x20019ui64, 0);
if( v8 >= 0 )
{
PathName = Destination;
v8 = pIoQueryBusDescription(QueryDescription, &PathName, Handle, &BusNum, 1u);
ZwClose((_HANDLE)Handle);
}
ExFreePoolWithTag(Destination.Buffer, 0);
if( v8 == -2147483622 )
return -1073741772;
return v8;
}Referenced by:
No references.