PiDqActionDataGetAllPropertiesInBestLanguage

NTSTATUS __stdcall PiDqActionDataGetAllPropertiesInBestLanguage(
        _SECURITY_SUBJECT_CONTEXT *SecurityContext,
        _DEVPROPSTORE Store,
        PNP_OBJECT_TYPE ObjectType,
        WCHAR *ObjectName,
        WCHAR *PreferredLanguages,
        const VOID **Properties,
        UINT64 *PropertyCount,
        UINT64 *MaxPropertyCount){
  void *v9; 
  PNP_OBJECT_TYPE v10; 
  int v11; 
  _DEVPROPKEY **v12; 
  UINT64 v13; 
  UINT64 *v15; 
  UINT64 v16; 
  VOID *ObjectBaseKey; 
  UINT64 v18; 

  ObjectBaseKey = 0i64;
  v9 = 0i64;
  v10 = 0;
  v18 = 0i64;
  if( Store != DEVPROP_STORE_USER )
    v10 = ObjectType;
  v11 = PiDqOpenObjectRegKey(Store, ObjectName, ObjectType, 1ui64, 0, SecurityContext, &ObjectBaseKey, v15, v16);
  if( v11 >= 0 )
  {
    v11 = PiDqPnPGetObjectPropertyKeys(ObjectName, v10, ObjectBaseKey, v12, &v18);
    if( v11 >= 0 )
    {
      v13 = *(unsigned int *)PropertyCount;
      if( *(_DWORD *)MaxPropertyCount < (unsigned int)v13 )
      {
        *(_DWORD *)MaxPropertyCount = v13;
        v11 = PiDqGrowPropertyArray(Properties, v13, (unsigned int)v13);
      }
    }
    v9 = (void *)v18;
  }
  if( ObjectBaseKey )
    ZwClose((_HANDLE)ObjectBaseKey);
  if( v9 )
    ExFreePoolWithTag(v9, 0x58706E50u);
  return v11;
}

Referenced by:

PiDqActionDataCreate