PiCMDeleteObject
INT64 __stdcall PiCMDeleteObject(
PVOID IoctlInputBuffer,
UINT64 IoctlInputBufferSize,
PVOID IoctlOutputBuffer,
UINT64 IoctlOutputBufferSize,
UINT64 *BytesUsed){
__int64 *v5;
unsigned int v6;
__int64 *v8;
int v9;
int v10;
unsigned int v11;
__int64 v12;
INT64 v14[2];
__int128 v15;
UINT64 ExpectedOutputSize;
__int64 *a1;
v5 = a1;
v6 = IoctlOutputBufferSize;
ExpectedOutputSize = 0i64;
*(_DWORD *)a1 = 0;
v8 = 0i64;
*(_OWORD *)v14 = 0i64;
a1 = 0i64;
v15 = 0i64;
v9 = PiCMCaptureObjectInputData((UINT64)IoctlInputBuffer, IoctlInputBufferSize, (unsigned int)BytesUsed, (INT64)v14);
if( v9 >= 0 )
{
if( !PiAuDoesClientHaveAccess(2ui64) )
{
v9 = -1073741790;
LABEL_41:
v9 = PiCMReturnBasicResultData(
(unsigned int)v9,
(unsigned int)ExpectedOutputSize,
IoctlOutputBuffer,
v6,
(UINT64 *)v5);
goto LABEL_42;
}
if( !(_QWORD)v15 )
goto LABEL_40;
if( HIDWORD(v14[0]) )
goto LABEL_40;
if( HIDWORD(v15) )
goto LABEL_40;
if( !IoctlOutputBuffer )
goto LABEL_40;
v10 = 8;
if( v6 < 8 )
goto LABEL_40;
v11 = 0;
if( SLODWORD(v14[1]) <= 6 )
{
switch( LODWORD(v14[1]) )
{
case 6:
v11 = 6;
goto LABEL_35;
case 1:
v11 = 1;
goto LABEL_35;
case 2:
v11 = 2;
goto LABEL_36;
case 3:
v11 = 4;
goto LABEL_36;
case 4:
v11 = 3;
goto LABEL_35;
case 5:
v11 = 5;
goto LABEL_35;
}
goto LABEL_32;
}
if( LODWORD(v14[1]) == 65537 )
{
v10 = 7;
}
else if( LODWORD(v14[1]) != 65538 )
{
switch( LODWORD(v14[1]) )
{
case 0x10003:
v10 = 9;
break;
case 0x10004:
v10 = 10;
break;
case 0x10005:
v10 = 11;
break;
default:
goto LABEL_32;
}
}
v11 = PiDrvDbCtx != 0 ? v10 : 0;
LABEL_32:
if( v11 )
{
if( v11 <= 4 || v11 > 6 )
{
LABEL_36:
if( v9 >= 0 )
{
v9 = PiPnpRtlBeginOperation(&a1);
if( v9 >= 0 )
v9 = PnpDeleteObject(v12, v15, v11);
v8 = a1;
}
goto LABEL_41;
}
LABEL_35:
v9 = -1073741637;
goto LABEL_36;
}
LABEL_40:
v9 = -1073741811;
goto LABEL_41;
}
LABEL_42:
PiCMReleaseObjectInputData((INT64)v14);
if( v8 )
PiPnpRtlEndOperation(v8);
return(unsigned int)v9;
}Referenced by:
No references.