PiDevCfgGetDriverPackageId

NTSTATUS __stdcall PiDevCfgGetDriverPackageId(
        WCHAR *DriverInfName,
        _UNICODE_STRING *DriverPackageId,
        INT64 a3,
        INT64 a4,
        INT64 a5,
        INT64 a6,
        UINT64 *a7,
        INT64 a8){
  PNP_OBJECT_TYPE v9; 
  WCHAR *v10; 
  NTSTATUS ObjectProperties; 
  UINT64 arg28; 
  UINT64 PropertyCount; 
  int v15; 
  int v16; 
  _UNICODE_STRING *v17; 
  int v18; 
  int v19; 
  __int64 v20; 
  VOID *Handle; 

  Handle = 0i64;
  v9 = (int)DriverInfName;
  ObjectProperties = PnpOpenObjectRegKey(
                       *(&stru_140CF2E80 + 607),
                       (__int64)DriverInfName,
                       9u,
                       131097,
                       0,
                       (__int64)&Handle);
  if( ObjectProperties >= 0 )
  {
    v16 = 0;
    v18 = 0;
    v20 = 0i64;
    PropertyCount = (UINT64)DEVPKEY_DriverInfFile_ActiveDriverPackage;
    LODWORD(arg28) = 1;
    v15 = 18;
    v17 = DriverPackageId;
    v19 = 6;
    ObjectProperties = PiDevCfgQueryObjectProperties(
                         v10,
                         v9,
                         (VOID *)9,
                         (PI_DEVCFG_QUERY_PROPERTY_PARAM *)Handle,
                         (UINT64)&PropertyCount,
                         arg28);
    if( ObjectProperties >= 0 && (int)v20 < 0 )
      ObjectProperties = v20;
  }
  if( Handle )
    ZwClose((_HANDLE)Handle);
  return ObjectProperties;
}

Referenced by:

PiDevCfgCheckDeviceNeedsUpdate
PiDevCfgFindDeviceMigrationNode
PiDevCfgQueryDriverNode
PiDevCfgQueryIncludedDriverNode