PiCMDeleteClassKey
INT64 __stdcall PiCMDeleteClassKey(
PVOID IoctlInputBuffer,
UINT64 IoctlInputBufferSize,
PVOID IoctlOutputBuffer,
UINT64 IoctlOutputBufferSize,
UINT64 *BytesUsed){
UINT64 *v5;
unsigned int v6;
int v8;
int v9;
const WCHAR *v10;
int v11;
INT64 v13[2];
__int128 v14;
UINT64 ExpectedOutputSize;
PVOID P;
v5 = (UINT64 *)P;
P = 0i64;
v6 = IoctlOutputBufferSize;
ExpectedOutputSize = 0i64;
*(_DWORD *)v5 = 0;
*(_OWORD *)v13 = 0i64;
v14 = 0i64;
v8 = PiCMCaptureObjectInputData((UINT64)IoctlInputBuffer, IoctlInputBufferSize, (unsigned int)BytesUsed, (INT64)v13);
if( v8 >= 0 )
{
if( PiAuDoesClientHaveAccess(2ui64) )
{
v10 = (const WCHAR *)v14;
if( (_QWORD)v14
&& !HIDWORD(v14)
&& IoctlOutputBuffer
&& v6 >= 8
&& (v11 = v13[1], (unsigned int)(LODWORD(v13[1]) - 2) <= 1)
&& (unsigned int)(HIDWORD(v13[0]) - 1) <= 1 )
{
v9 = PiPnpRtlBeginOperation((__int64 **)&P);
if( v9 >= 0 )
{
if( v11 == 3 )
v9 = CmDeleteInterfaceClass(PiPnpRtlCtx, v10, 0);
else
v9 = CmDeleteInstallerClass(PiPnpRtlCtx, v10, 0);
}
}
else
{
v9 = -1073741811;
}
}
else
{
v9 = -1073741790;
}
v8 = PiCMReturnBasicResultData((unsigned int)v9, (unsigned int)ExpectedOutputSize, IoctlOutputBuffer, v6, v5);
}
PiCMReleaseObjectInputData((INT64)v13);
if( P )
PiPnpRtlEndOperation(P);
return(unsigned int)v8;
}Referenced by:
No references.