PiCMSetRegistryProperty

INT64 __stdcall PiCMSetRegistryProperty(
        PVOID IoctlInputBuffer,
        UINT64 IoctlInputBufferSize,
        PVOID IoctlOutputBuffer,
        UINT64 IoctlOutputBufferSize,
        UINT64 *BytesUsed){
  UINT64 *v5; 
  unsigned int v6; 
  int v8; 
  int v9; 
  struct _UNICODE_STRING DestinationString; 
  INT64 v12[2]; 
  PCWSTR SourceString[2]; 
  __int128 v14; 
  UINT64 ExpectedOutputSize; 
  UINT64 *v16; 
  v5 = v16;
  v6 = IoctlOutputBufferSize;
  LODWORD(v16) = 0;
  ExpectedOutputSize = 0i64;
  *(_DWORD *)v5 = 0;
  *(_OWORD *)v12 = 0i64;
  *(_OWORD *)SourceString = 0i64;
  v14 = 0i64;
  v8 = PiCMCaptureRegistryPropertyInputData(
         (unsigned __int64)IoctlInputBuffer,
         IoctlInputBufferSize,
         (int)BytesUsed,
         (__int64)v12);
  if( v8 >= 0 )
  {
    if( PiAuDoesClientHaveAccess(HIDWORD(SourceString[1]) == 13 ? 64 : 2) )
    {
      if( SourceString[0] && !HIDWORD(v12[0]) && IoctlOutputBuffer && v6 >= 8 )
      {
        v9 = PiCMConvertRegistryProperty(SHIDWORD(SourceString[1]), &v16);
        if( v9 >= 0 )
        {
          if( LODWORD(v12[1]) == 1 )
          {
            v9 = PiPnpRtlSetDeviceRegProperty(
                   PiPnpRtlCtx,
                   SourceString[0],
                   0i64,
                   (signed int)v16,
                   v14,
                   *((int **)&v14 + 1),
                   ExpectedOutputSize,
                   0);
            if( v9 >= 0 )
            {
              DestinationString = 0i64;
              if( (int)RtlInitUnicodeStringEx(&DestinationString, (WCHAR *)SourceString[0]) >= 0 )
                PnpSetDeviceInstancePropertyChangeEventFromDeviceInstance(&DestinationString);
            }
          }
          else if( LODWORD(v12[1]) == 2 )
          {
            v9 = CmSetInstallerClassRegProp(
                   PiPnpRtlCtx,
                   (__int64)SourceString[0],
                   0i64,
                   (unsigned int)v16,
                   v14,
                   *((void **)&v14 + 1),
                   ExpectedOutputSize);
          }
          else
          {
            v9 = -1073741811;
          }
          if( v9 == -1073741790 )
            v9 = -1073741264;
        }
      }
      else
      {
        v9 = -1073741811;
      }
    }
    else
    {
      v9 = -1073741790;
    }
    v8 = PiCMReturnBasicResultData((unsigned int)v9, HIDWORD(ExpectedOutputSize), IoctlOutputBuffer, v6, v5);
  }
  PiCMReleaseRegistryPropertyInputData((INT64)v12);
  return(unsigned int)v8;
}

Referenced by:

No references.