PnpGetDeviceInstancePropertyData
INT64 __stdcall PnpGetDeviceInstancePropertyData(
WCHAR *DeviceInstanceId,
PVOID Data,
UINT64 *RequiredSize,
UINT64 *Type){
unsigned int v4;
BOOL v7;
int ObjectProperty;
_ETHREAD *CurrentThread;
int v11;
_UNICODE_STRING String;
INT64 result[22];
int v14;
unsigned __int64 v15;
ULONG *v16;
_DWORD *v17;
v4 = (unsigned int)RequiredSize;
memset((INT64)result, 0i64);
*(_QWORD *)&String.Length = 0i64;
v11 = 0;
if( v4 )
{
String.Buffer = (wchar_t *)result;
String.MaximumLength = 170;
if( !RtlLCIDToCultureName(v4, &String) )
return(unsigned int)-1073741823;
}
else
{
String.Buffer = 0i64;
}
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--*((_WORD *)CurrentThread + 242);
LOBYTE(v7) = 1;
ExAcquireResourceSharedLite(&PnpDevicePropertyLock, v7);
ObjectProperty = PnpGetObjectProperty(
PiPnpRtlCtx,
(__int64)DeviceInstanceId,
1i64,
0i64,
String.Buffer,
(__int64)Data,
&v11,
v15,
v14,
v16,
0);
ExReleaseResourceLite(&PnpDevicePropertyLock);
KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
if( ObjectProperty >= 0 )
*v17 = v11;
if( ObjectProperty == -1073741275 )
return(unsigned int)-1073741772;
return(unsigned int)ObjectProperty;
}Referenced by:
No references.