PiCMDeleteClassKey

INT64 __stdcall PiCMDeleteClassKey(
        PVOID IoctlInputBuffer,
        UINT64 IoctlInputBufferSize,
        PVOID IoctlOutputBuffer,
        UINT64 IoctlOutputBufferSize,
        UINT64 *BytesUsed){
  UINT64 *v5; 
  unsigned int v6; 
  int v8; 
  int v9; 
  const WCHAR *v10; 
  int v11; 
  INT64 v13[2]; 
  __int128 v14; 
  UINT64 ExpectedOutputSize; 
  PVOID P; 
  v5 = (UINT64 *)P;
  P = 0i64;
  v6 = IoctlOutputBufferSize;
  ExpectedOutputSize = 0i64;
  *(_DWORD *)v5 = 0;
  *(_OWORD *)v13 = 0i64;
  v14 = 0i64;
  v8 = PiCMCaptureObjectInputData((UINT64)IoctlInputBuffer, IoctlInputBufferSize, (unsigned int)BytesUsed, (INT64)v13);
  if( v8 >= 0 )
  {
    if( PiAuDoesClientHaveAccess(2ui64) )
    {
      v10 = (const WCHAR *)v14;
      if( (_QWORD)v14
        && !HIDWORD(v14)
        && IoctlOutputBuffer
        && v6 >= 8
        && (v11 = v13[1], (unsigned int)(LODWORD(v13[1]) - 2) <= 1)
        && (unsigned int)(HIDWORD(v13[0]) - 1) <= 1 )
      {
        v9 = PiPnpRtlBeginOperation((__int64 **)&P);
        if( v9 >= 0 )
        {
          if( v11 == 3 )
            v9 = CmDeleteInterfaceClass(PiPnpRtlCtx, v10, 0);
          else
            v9 = CmDeleteInstallerClass(PiPnpRtlCtx, v10, 0);
        }
      }
      else
      {
        v9 = -1073741811;
      }
    }
    else
    {
      v9 = -1073741790;
    }
    v8 = PiCMReturnBasicResultData((unsigned int)v9, (unsigned int)ExpectedOutputSize, IoctlOutputBuffer, v6, v5);
  }
  PiCMReleaseObjectInputData((INT64)v13);
  if( P )
    PiPnpRtlEndOperation(P);
  return(unsigned int)v8;
}

Referenced by:

No references.