PTHREADINFO ptiHook, pti;
PDESKTOP pdo;
PHOOK Hook = Object;
- BOOL bOtherProcess;
NT_ASSERT(UserIsEnteredExclusive());
if (IsListEmpty(&ptiHook->aphkStart[HOOKID_TO_INDEX(HookId)]))
{
+ BOOL bOtherProcess;
+ KAPC_STATE ApcState;
+
ptiHook->fsHooks &= ~HOOKID_TO_FLAG(HookId);
bOtherProcess = (ptiHook->ppi != pti->ppi);
if (bOtherProcess)
- KeAttachProcess(&ptiHook->ppi->peProcess->Pcb);
+ KeStackAttachProcess(&ptiHook->ppi->peProcess->Pcb, &ApcState);
_SEH2_TRY
{
_SEH2_END;
if (bOtherProcess)
- KeDetachProcess();
+ KeUnstackDetachProcess(&ApcState);
}
}
else // Global
}
else
{
- KeAttachProcess(&ptiHook->ppi->peProcess->Pcb);
+ KAPC_STATE ApcState;
+
+ KeStackAttachProcess(&ptiHook->ppi->peProcess->Pcb, &ApcState);
_SEH2_TRY
{
ptiHook->pClientInfo->fsHooks = ptiHook->fsHooks;
ERR("Problem writing to Remote ClientInfo!\n");
}
_SEH2_END;
- KeDetachProcess();
+ KeUnstackDetachProcess(&ApcState);
}
}
}