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