PopDiagQueryDevicePropertyString
NTSTATUS __stdcall PopDiagQueryDevicePropertyString(
PDEVICE_OBJECT DeviceObject,
_DEVICE_REGISTRY_PROPERTY DeviceProperty){
__int64 v2;
__int64 v3;
int v6;
VOID **PoolWithTag;
__int16 v8;
__int64 ResultLength[5];
UINT64 NumberOfBytes;
LODWORD(NumberOfBytes) = 0;
v3 = v2;
LODWORD(ResultLength[0]) = 0;
v6 = IoGetDeviceProperty(DeviceObject, DeviceProperty, 0i64, 0i64, &NumberOfBytes);
if( v6 == -1073741789 )
{
if( (unsigned int)NumberOfBytes <= 0xFFFF )
{
PoolWithTag = ExAllocatePoolWithTag(1ui64, (unsigned int)NumberOfBytes, 1734960208i64);
if( PoolWithTag )
{
v6 = IoGetDeviceProperty(
DeviceObject,
DeviceProperty,
(unsigned int)NumberOfBytes,
PoolWithTag,
(UINT64 *)ResultLength);
if( v6 >= 0 )
{
*(_WORD *)v3 = ResultLength[0];
v8 = NumberOfBytes;
*(_QWORD *)(v3 + 8) = PoolWithTag;
PoolWithTag = 0i64;
*(_WORD *)(v3 + 2) = v8;
}
if( PoolWithTag )
ExFreePoolWithTag(PoolWithTag, 0x67696450u);
}
else
{
return -1073741670;
}
}
else
{
return -2147483643;
}
}
return v6;
}Referenced by:
PopDiagTraceFxComponentAccounting
PopDiagTraceFxDeviceAccounting
PopDirectedDripsDiagCreateDeviceDescription