IopFreeResetRemovalContext
VOID __fastcall IopFreeResetRemovalContext(CHAR *P){
__int64 v2;
void *v3;
v2 = *((_QWORD *)P + 21);
if( v2 )
{
if( _InterlockedExchangeAdd((volatile signed __int32 *)(v2 + 64), 0xFFFFFFFF) == 1 )
ExFreePoolWithTag(*((PVOID *)P + 21), 0x4B706E50u);
*((_QWORD *)P + 21) = 0i64;
}
v3 = (void *)*((_QWORD *)P + 23);
if( v3 )
{
ObfDereferenceObjectWithTag(v3, 0x52706E50ui64);
*((_QWORD *)P + 23) = 0i64;
}
RtlFreeAnsiString((_UNICODE_STRING *)(P + 200));
ExFreePoolWithTag(P, 0);
}Referenced by:
IoRequestDeviceRemovalForReset
IopDeviceRemovalForResetComplete
IopRetryDeviceRemovalForReset