PiDqPnPGetObjectPropertyLocales

NTSTATUS __stdcall PiDqPnPGetObjectPropertyLocales(
        WCHAR *ObjectName,
        PNP_OBJECT_TYPE ObjectType,
        VOID *ObjectBaseKey,
        _DEVPROPKEY *PropertyKey,
        WCHAR **Buffer){
  PNP_OBJECT_TYPE v8; 
  VOID **PoolWithTag; 
  NTSTATUS ObjectPropertyLocales; 
  NTSTATUS v11; 
  INT64 v13; 
  UINT64 *v14; 
  __int64 cchDest[2]; 

  LODWORD(cchDest[0]) = 40;
  v8 = (int)ObjectName;
  *Buffer = 0i64;
  while( 1 )
  {
    if( *Buffer )
      ExFreePoolWithTag(*Buffer, 0x58706E50u);
    PoolWithTag = ExAllocatePoolWithTag(1ui64, 2i64 * LODWORD(cchDest[0]), 1483763280i64);
    *Buffer = (WCHAR *)PoolWithTag;
    if( !PoolWithTag )
      break;
    if( ObjectType )
    {
      LODWORD(v14) = cchDest[0];
      ObjectPropertyLocales = PnpGetObjectPropertyLocales(
                                (WCHAR *)LODWORD(cchDest[0]),
                                v8,
                                (VOID *)(unsigned int)ObjectType,
                                (_DEVPROPKEY *)ObjectBaseKey,
                                (WCHAR *)PropertyKey,
                                (UINT64)PoolWithTag,
                                v14);
    }
    else
    {
      LODWORD(v13) = cchDest[0];
      ObjectPropertyLocales = PnpGetGenericStorePropertyLocales(
                                *(&stru_140CF2E80 + 607),
                                (CHAR *)ObjectBaseKey,
                                (INT64)PropertyKey,
                                (WCHAR *)PoolWithTag,
                                v13,
                                (UINT64 *)cchDest);
    }
    v11 = ObjectPropertyLocales;
    if( ObjectPropertyLocales != -1073741789 )
      goto LABEL_11;
  }
  v11 = -1073741670;
LABEL_11:
  if( v11 < 0 && *Buffer )
  {
    ExFreePoolWithTag(*Buffer, 0x58706E50u);
    *Buffer = 0i64;
  }
  return v11;
}

Referenced by:

No references.