ObDereferenceDeviceMap
VOID __stdcall ObDereferenceDeviceMap(_EPROCESS *Process){
_EJOB *v2;
_ESERVERSILO_GLOBALS *ServerSiloGlobals;
_ETHREAD *CurrentThread;
ULONG_PTR v5;
_DEVICE_MAP *DeviceMap;
LODWORD(v2) = PsGetProcessServerSilo((INT64)Process);
ServerSiloGlobals = PsGetServerSiloGlobals(v2);
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--CurrentThread->Tcb.SpecialApcDisable;
v5 = (_DWORD)ServerSiloGlobals + 120;
ExAcquirePushLockExclusiveEx(&ServerSiloGlobals->ObSiloState.DeviceMapLock, 0i64);
DeviceMap = (_DEVICE_MAP *)Process->DeviceMap;
Process->DeviceMap = 0i64;
ExReleasePushLockEx(v5, 0);
KiLeaveGuardedRegionUnsafe((__int64)KeGetCurrentThread());
if( DeviceMap )
ObfDereferenceDeviceMap(DeviceMap);
}Referenced by:
PspAssignPrimaryToken