PiCMSetDeviceProblem

NTSTATUS __stdcall PiCMSetDeviceProblem(
        VOID *IoctlInputBuffer,
        UINT64 IoctlInputBufferSize,
        VOID *IoctlOutputBuffer,
        UINT64 IoctlOutputBufferSize,
        UINT64 *BytesUsed){
  unsigned int v6; 
  unsigned int v8; 
  _CMAPI_INPUT_PROBLEM_DATA *v9; 
  NTSTATUS result; 
  WCHAR *v11; 
  _CMAPI_SET_DEVICE_PROBLEM_ACTION v12; 
  NTSTATUS v13; 
  INT64 v14; 
  UINT64 *v15; 
  UINT64 v16; 
  UINT64 v17[52]; 
  UINT64 *BytesUseda; 

  v6 = IoctlInputBufferSize;
  v8 = IoctlOutputBufferSize;
  memset(v17, 0i64, sizeof(v17));
  *(_DWORD *)BytesUseda = 0;
  result = PiCMCaptureProblemInputData(IoctlInputBuffer, v6, v9);
  if( result >= 0 )
  {
    if( PiAuDoesClientHaveAccess(4ui64) && PiAuDoesClientHavePrivilege(0xAui64) )
    {
      if( LOWORD(v17[1])
        && IoctlOutputBuffer
        && v8 >= 8
        && (v12 = HIDWORD(v17[0]), (unsigned int)(HIDWORD(v17[0]) - 1) <= 1) )
      {
        v13 = CmValidateDeviceName(v11);
        if( v13 >= 0 )
          v13 = PiCMSetProblem((WCHAR *)&v17[1], LODWORD(v17[51]), v12, v14, (INT64)v15, v16, v17[0]);
      }
      else
      {
        v13 = -1073741811;
      }
    }
    else
    {
      v13 = -1073741790;
    }
    return PiCMReturnBasicResultData(
             (unsigned int)v13,
             HIDWORD(v17[51]),
             IoctlOutputBuffer,
             v8,
             BytesUseda,
             v16,
             v17[0],
             v17[1]);
  }
  return result;
}

Referenced by:

PiCMHandleIoctl