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.