PiCMDeleteClassKey

NTSTATUS __stdcall PiCMDeleteClassKey(
        VOID *IoctlInputBuffer,
        UINT64 IoctlInputBufferSize,
        VOID *IoctlOutputBuffer,
        UINT64 IoctlOutputBufferSize,
        UINT64 *BytesUsed){
  UINT64 *v5; 
  unsigned int v6; 
  int v8; 
  NTSTATUS v9; 
  INT64 v11; 
  _CMAPI_INPUT_OBJECT_DATA ObjectData[4]; 
  WCHAR *ClassGuid[2]; 
  UINT64 ExpectedOutputSize; 
  HPNPOPCTX *hPnpOpCtx; 

  v5 = (UINT64 *)hPnpOpCtx;
  hPnpOpCtx = 0i64;
  v6 = IoctlOutputBufferSize;
  ExpectedOutputSize = 0i64;
  *(_DWORD *)v5 = 0;
  *(_OWORD *)ObjectData = 0i64;
  *(_OWORD *)ClassGuid = 0i64;
  v8 = PiCMCaptureObjectInputData(
         IoctlInputBuffer,
         IoctlInputBufferSize,
         (_CMAPI_INPUT_OBJECT_DATA *)(unsigned int)BytesUsed);
  if( v8 >= 0 )
  {
    if( PiAuDoesClientHaveAccess(2ui64) )
    {
      if( ClassGuid[0]
        && !HIDWORD(ClassGuid[1])
        && IoctlOutputBuffer
        && v6 >= 8
        && (unsigned int)(ObjectData[2] - 2) <= 1
        && (unsigned int)(ObjectData[1] - 1) <= 1 )
      {
        v9 = PiPnpRtlBeginOperation(&hPnpOpCtx);
        if( v9 >= 0 )
        {
          if( ObjectData[2] == 3 )
            v9 = CmDeleteInterfaceClass(*(&stru_140CF2E80 + 607), ClassGuid[0], 0i64);
          else
            v9 = CmDeleteInstallerClass(*(&stru_140CF2E80 + 607), ClassGuid[0], 0i64);
        }
      }
      else
      {
        v9 = -1073741811;
      }
    }
    else
    {
      v9 = -1073741790;
    }
    v8 = PiCMReturnBasicResultData(
           (unsigned int)v9,
           (unsigned int)ExpectedOutputSize,
           IoctlOutputBuffer,
           v6,
           v5,
           v11,
           *(INT64 *)ObjectData,
           *(INT64 *)&ObjectData[2]);
  }
  PiCMReleaseObjectInputData(ObjectData);
  if( hPnpOpCtx )
    PiPnpRtlEndOperation(hPnpOpCtx);
  return v8;
}

Referenced by:

PiCMHandleIoctl