SeUnregisterLogonSessionTerminatedRoutine
NTSTATUS __fastcall SeUnregisterLogonSessionTerminatedRoutine(INT64 a1){
NTSTATUS v1;
_ETHREAD *CurrentThread;
PVOID *v5;
PVOID *v6;
v1 = 0;
if( !a1 )
return -1073741811;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--CurrentThread->Tcb.KernelApcDisable;
ExAcquireFastMutexUnsafe((PFAST_MUTEX)((char *)&stru_140CF2E80 + 5144));
v5 = (PVOID *)SeFileSystemNotifyRoutinesHead;
v6 = &SeFileSystemNotifyRoutinesHead;
if( !SeFileSystemNotifyRoutinesHead )
goto LABEL_8;
do
{
if( v5[1] == (PVOID)a1 )
break;
v6 = v5;
v5 = (PVOID *)*v5;
}
while( v5 );
if( v5 )
{
*v6 = *v5;
ExReleaseFastMutexUnsafe((PFAST_MUTEX)((char *)&stru_140CF2E80 + 5144));
KeLeaveCriticalRegionThread(KeGetCurrentThread());
ExFreePoolWithTag(v5, 0);
}
else
{
LABEL_8:
ExReleaseFastMutexUnsafe((PFAST_MUTEX)((char *)&stru_140CF2E80 + 5144));
KeLeaveCriticalRegionThread(KeGetCurrentThread());
return -1073741275;
}
return v1;
}Referenced by:
No references.