PiCheckRemovalPreconditions
NTSTATUS __stdcall PiCheckRemovalPreconditions(INT64 a1, INT64 a2){
__int64 v2;
__int64 v3;
__int64 v4;
int v5;
__int64 v6;
NTSTATUS result;
_UNICODE_STRING *v8;
int v9;
LODWORD(v2) = PiGetTargetDeviceNode(a2);
v6 = v2;
if( (v5 & 0xFFFFFFFB) == 0 && (*(_DWORD *)(v2 + 396) & 0x1000) != 0 )
{
v8 = (_UNICODE_STRING *)(v2 + 40);
v9 = 1;
LABEL_14:
PnpFinalizeVetoedRemove(v3, v9, v8);
return -2147483608;
}
result = 0;
if( !v5 && *(_DWORD *)(v4 + 16) == 22 && *(_DWORD *)(v6 + 600) )
{
v8 = (_UNICODE_STRING *)(v6 + 40);
v9 = 10;
goto LABEL_14;
}
if( *(_DWORD *)(v6 + 300) == 786 && !v5 && *(_DWORD *)(v4 + 16) == 54 )
{
v8 = 0i64;
v9 = 13;
goto LABEL_14;
}
return result;
}Referenced by:
PnpProcessQueryRemoveAndEject