CmSetInstallerClassRegProp

NTSTATUS __stdcall CmSetInstallerClassRegProp(
        HPNPCTX *hPnpCtx,
        const WCHAR *ClassGuid,
        VOID *BaseKeyHandle,
        INT64 CmRegProp,
        INT64 CmRegPropType,
        UINT8 *PropertyBuffer,
        INT64 PropertySize,
        UINT64 Flags){
  int v11; 
  __int64(__fastcall *v12)(HPNPCTX *, const WCHAR *, __int64, __int64, int, VOID **); 
  int v13; 
  NTSTATUS v14; 
  NTSTATUS v15; 
  int v16; 
  int v17; 
  NTSTATUS v18; 
  UINT64 v20; 
  UINT64 SecurityDescriptorLength; 
  UINT64 v22; 
  VOID *arg28[12]; 

  v11 = CmRegProp;
  memset(arg28, 0i64, 0x58u);
  v12 = (__int64(__fastcall *)(HPNPCTX *, const WCHAR *, __int64, __int64, int, VOID **))*((_QWORD *)hPnpCtx + 63);
  HIDWORD(arg28[3]) = CmRegPropType;
  arg28[2] = BaseKeyHandle;
  LODWORD(arg28[3]) = v11;
  arg28[5] = (VOID *)(unsigned int)PropertySize;
  arg28[4] = PropertyBuffer;
  if( v12 )
  {
    v13 = v12(hPnpCtx, ClassGuid, 2i64, 10i64, 1, arg28);
    if( v13 == -1073741822 )
    {
      v12 = 0i64;
    }
    else
    {
      if( v13 == -1073741536 )
        return(NTSTATUS)arg28[0];
      if( v13 )
        return -1073741595;
    }
  }
  LODWORD(v22) = HIDWORD(arg28[5]);
  LODWORD(SecurityDescriptorLength) = arg28[5];
  LODWORD(v20) = HIDWORD(arg28[3]);
  v14 = CmSetInstallerClassRegPropWorker(
          (_MMVAD **)hPnpCtx,
          ClassGuid,
          arg28[2],
          (_CM_REG_PROP)arg28[3],
          v20,
          (UINT8 *)arg28[4],
          SecurityDescriptorLength,
          v22);
  v15 = v14;
  if( !v12 )
    return v15;
  LODWORD(arg28[0]) = v14;
  v16 = v12(hPnpCtx, ClassGuid, 2i64, 10i64, 2, arg28);
  v17 = v16;
  if( v16 == -1073741822 )
    return v15;
  if( v16 == -1073741536 )
    return(NTSTATUS)arg28[0];
  v18 = v15;
  if( v17 )
    return -1073741595;
  return v18;
}

Referenced by:

CmSetInstallerClassMappedPropertyFromRegProp
PiCMSetRegistryProperty