Thread->Tcb.SuspendCount++;
if (!Thread->Tcb.SuspendApc.Inserted)
{
- KeInsertQueueApc(&Thread->Tcb.SuspendApc,
- NULL,
- NULL,
- 0);
+ if (!KeInsertQueueApc(&Thread->Tcb.SuspendApc,
+ NULL,
+ NULL,
+ IO_NO_INCREMENT))
+ {
+ Thread->Tcb.SuspendCount--;
+ ExReleaseFastMutex(&SuspendMutex);
+ return(STATUS_THREAD_IS_TERMINATING);
+ }
}
ExReleaseFastMutex(&SuspendMutex);
if (PreviousSuspendCount != NULL)