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