PiSwPropertySet

INT64 __stdcall PiSwPropertySet(WCHAR *ObjectType, PVOID ObjectBaseKey, const INT64 a3, DEVPROPERTY *Properties){
  unsigned int v5; 
  unsigned int v7; 
  int v8; 
  unsigned int v9; 
  WCHAR **v10; 
  INT64 v12; 
  UINT64 v13; 
  UINT64 v14; 
  HANDLE Handle; 
  PVOID P; 
  P = 0i64;
  Handle = 0i64;
  v5 = (unsigned int)Properties;
  v7 = (unsigned int)ObjectBaseKey;
  v8 = PiPnpRtlBeginOperation((__int64 **)&P);
  if( v8 >= 0 )
  {
    v8 = PnpOpenObjectRegKey(PiPnpRtlCtx, (__int64)ObjectType, v7, 7, 0, (__int64)&Handle);
    if( v8 >= 0 )
    {
      v9 = 0;
      if( v5 )
      {
        v10 = (WCHAR **)(a3 + 40);
        do
        {
          LODWORD(v14) = 0;
          LODWORD(v13) = *((_DWORD *)v10 - 1);
          LODWORD(v12) = *((_DWORD *)v10 - 2);
          v8 = PiPnpRtlSetObjectProperty(
                 PiPnpRtlCtx,
                 ObjectType,
                 v7,
                 (INT64)Handle,
                 (INT64)*(v10 - 2),
                 (INT64)(v10 - 5),
                 v12,
                 *v10,
                 v13,
                 v14);
          if( v8 == -1073741275 )
          {
            if( *((_DWORD *)v10 - 2) )
              break;
            v8 = 0;
          }
          if( v8 < 0 )
            break;
          ++v9;
          v10 += 6;
        }
        while( v9 < v5 );
      }
    }
  }
  if( Handle )
    ZwClose(Handle);
  if( P )
    PiPnpRtlEndOperation(P);
  return(unsigned int)v8;
}

Referenced by:

PiSwCompleteCreate
PiSwIrpInterfacePropertySet
PiSwIrpInterfaceRegister
PiSwIrpPropertySet
PiSwIrpStartCreateWorker