IoQueryDeviceDescription
INT64 __stdcall IoQueryDeviceDescription(RTL_RANGE_LIST *InvertedRangeList, RTL_RANGE_LIST *RangeList){
unsigned int *v2;
unsigned int *v3;
NTSTATUS v4;
HANDLE Handle;
struct _UNICODE_STRING Destination;
struct _UNICODE_STRING v8;
unsigned int *v9[8];
unsigned int v10;
PCONFIGURATION_TYPE PeripheralType;
PULONG PeripheralNumber;
PIO_QUERY_DEVICE_ROUTINE CalloutRoutine;
PVOID Context;
Handle = 0i64;
v10 = -1;
Destination = 0i64;
if( !InvertedRangeList )
return 3221225474i64;
v9[4] = (unsigned int *)PeripheralType;
v9[5] = PeripheralNumber;
v9[6] = (unsigned int *)CalloutRoutine;
v9[1] = (unsigned int *)RangeList;
v9[0] = (unsigned int *)InvertedRangeList;
v9[2] = v2;
v9[7] = (unsigned int *)Context;
v9[3] = v3;
Destination.MaximumLength = 2048;
Destination.Buffer = (wchar_t *)ExAllocatePoolWithTag(PagedPool, 0x800ui64, 0x4E526F49ui64);
if( !Destination.Buffer )
return 3221225626i64;
RtlAppendUnicodeStringToString(&Destination, &CmRegistryMachineHardwareDescriptionSystemName);
v4 = IopOpenRegistryKey(&Handle, 0i64, &Destination, 0x20019ui64, 0);
if( v4 >= 0 )
{
v8 = Destination;
v4 = pIoQueryBusDescription(v9, &v8, Handle, &v10, 1);
ZwClose(Handle);
}
ExFreePoolWithTag(Destination.Buffer, 0);
if( v4 == -2147483622 )
return(unsigned int)-1073741772;
return(unsigned int)v4;
}Referenced by:
No references.