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.