PiCMGetDeviceDepth

NTSTATUS __stdcall PiCMGetDeviceDepth(
        PVOID IoctlInputBuffer,
        UINT64 IoctlInputBufferSize,
        PVOID IoctlOutputBuffer,
        UINT64 IoctlOutputBufferSize,
        UINT64 *BytesUsed){
  UINT64 *v5; 
  unsigned int v6; 
  unsigned int v8; 
  __int64 v9; 
  NTSTATUS v10; 
  WCHAR *v11; 
  int inited; 
  UINT64 IoctlOutputBufferSizea; 
  struct _UNICODE_STRING DestinationString; 
  INT64 v16[2]; 
  PCWSTR SourceString[2]; 
  UINT64 ExpectedOutputSize; 
  UINT64 DeviceDepth; 
  v5 = (UINT64 *)DeviceDepth;
  v6 = IoctlOutputBufferSize;
  v8 = 0;
  ExpectedOutputSize = 0i64;
  *(_DWORD *)DeviceDepth = 0;
  DestinationString = 0i64;
  LODWORD(DeviceDepth) = 0;
  *(_OWORD *)v16 = 0i64;
  *(_OWORD *)SourceString = 0i64;
  v10 = PiCMCaptureObjectInputData((UINT64)IoctlInputBuffer, IoctlInputBufferSize, (unsigned int)BytesUsed, (INT64)v16);
  if( v10 >= 0 )
  {
    v11 = (WCHAR *)SourceString[0];
    if( SourceString[0]
      && *(INT64 *)((char *)v16 + 4) == 0x100000000i64
      && !HIDWORD(SourceString[1])
      && IoctlOutputBuffer
      && v6 >= 0xC )
    {
      inited = CmValidateDeviceName(v9, SourceString[0]);
      if( inited >= 0 )
      {
        inited = RtlInitUnicodeStringEx(&DestinationString, v11);
        if( inited >= 0 )
        {
          inited = PiGetDeviceDepth(&DestinationString, &DeviceDepth);
          v8 = DeviceDepth;
        }
      }
    }
    else
    {
      inited = -1073741811;
    }
    LODWORD(IoctlOutputBufferSizea) = v6;
    v10 = PiCMReturnDepthResultData(
            (unsigned int)inited,
            v8,
            (unsigned int)ExpectedOutputSize,
            IoctlOutputBuffer,
            IoctlOutputBufferSizea,
            v5);
  }
  PiCMReleaseObjectInputData((INT64)v16);
  return v10;
}

Referenced by:

No references.