PiSwPropertySet

NTSTATUS __fastcall PiSwPropertySet(WCHAR *ObjectType, VOID *ObjectBaseKey, const INT64 a3, _DEVPROPERTY *Properties){
  unsigned int v5; 
  unsigned int v7; 
  NTSTATUS v8; 
  unsigned int v9; 
  UINT64 *v10; 
  UINT8 *PropertyBuffer; 
  WCHAR *PropertyLocaleName; 
  PVOID P; 

  P = 0i64;
  PropertyLocaleName = 0i64;
  v5 = (unsigned int)Properties;
  v7 = (unsigned int)ObjectBaseKey;
  v8 = PiPnpRtlBeginOperation((HPNPOPCTX **)&P);
  if( v8 >= 0 )
  {
    v8 = PnpOpenObjectRegKey(*(&stru_140CF2E80 + 607), (__int64)ObjectType, v7, 7, 0, (__int64)&PropertyLocaleName);
    if( v8 >= 0 )
    {
      v9 = 0;
      if( v5 )
      {
        v10 = (UINT64 *)(a3 + 40);
        do
        {
          LODWORD(PropertyBuffer) = *((_DWORD *)v10 - 2);
          v8 = PiPnpRtlSetObjectProperty(
                 *(&stru_140CF2E80 + 607),
                 (PNP_OBJECT_TYPE)ObjectType,
                 (VOID *)v7,
                 PropertyLocaleName,
                 (_DEVPROPKEY *)*(v10 - 2),
                 (UINT64)(v10 - 5),
                 PropertyBuffer,
                 *v10);
          if( v8 == -1073741275 )
          {
            if( *((_DWORD *)v10 - 2) )
              break;
            v8 = 0;
          }
          if( v8 < 0 )
            break;
          ++v9;
          v10 += 6;
        }
        while( v9 < v5 );
      }
    }
  }
  if( PropertyLocaleName )
    ZwClose((_HANDLE)PropertyLocaleName);
  if( P )
    PiPnpRtlEndOperation(P);
  return v8;
}

Referenced by:

PiSwCompleteCreate
PiSwIrpInterfacePropertySet
PiSwIrpInterfaceRegister
PiSwIrpPropertySet
PiSwIrpStartCreateWorker