PopDiagQueryDevicePropertyString
__int64 __fastcall PopDiagQueryDevicePropertyString(
PDEVICE_OBJECT DeviceObject,
DEVICE_REGISTRY_PROPERTY DeviceProperty,
__int64 a3){
NTSTATUS v6;
void *PoolWithTag;
__int16 v8;
int ResultLength[10];
SIZE_T NumberOfBytes;
LODWORD(NumberOfBytes) = 0;
ResultLength[0] = 0;
v6 = IoGetDeviceProperty(DeviceObject, DeviceProperty, 0, 0i64, (PULONG)&NumberOfBytes);
if( v6 == -1073741789 )
{
if( (unsigned int)NumberOfBytes <= 0xFFFF )
{
PoolWithTag = ExAllocatePoolWithTag(PagedPool, (unsigned int)NumberOfBytes, 0x67696450ui64);
if( PoolWithTag )
{
v6 = IoGetDeviceProperty(DeviceObject, DeviceProperty, NumberOfBytes, PoolWithTag, (PULONG)ResultLength);
if( v6 >= 0 )
{
*(_WORD *)a3 = ResultLength[0];
v8 = NumberOfBytes;
*(_QWORD *)(a3 + 8) = PoolWithTag;
PoolWithTag = 0i64;
*(_WORD *)(a3 + 2) = v8;
}
if( PoolWithTag )
ExFreePoolWithTag(PoolWithTag, 0x67696450u);
}
else
{
return(unsigned int)-1073741670;
}
}
else
{
return(unsigned int)-2147483643;
}
}
return(unsigned int)v6;
}Referenced by:
PopDiagTraceFxComponentAccounting
PopDiagTraceFxDeviceAccounting
PopDirectedDripsDiagCreateDeviceDescription