Fix KeUnstackDetachProcess.
Modified: trunk/reactos/ntoskrnl/ke/process.c
_____
Modified: trunk/reactos/ntoskrnl/ke/process.c
--- trunk/reactos/ntoskrnl/ke/process.c 2005-02-18 17:15:01 UTC (rev
13633)
+++ trunk/reactos/ntoskrnl/ke/process.c 2005-02-18 18:28:49 UTC (rev
13634)
@@ -216,7 +216,7 @@
{
KIRQL OldIrql;
PKTHREAD Thread;
-
+
/* If the special "We tried to attach to the process already
being attached to" flag is there, don't do anything */
if (ApcState->Process == (PKPROCESS)1) return;
@@ -231,29 +231,27 @@
/* Restore the Old APC State if a Process was present */
if (ApcState->Process) {
- RtlMoveMemory(ApcState, &Thread->ApcState,
sizeof(KAPC_STATE));
+ KiMoveApcState(ApcState, &Thread->ApcState);
} else {
/* The ApcState parameter is useless, so use the saved
data and reset it */
- RtlMoveMemory(&Thread->SavedApcState, &Thread->ApcState,
sizeof(KAPC_STATE));
+ KiMoveApcState(&Thread->SavedApcState,
&Thread->ApcState);
Thread->SavedApcState.Process = NULL;
Thread->ApcStateIndex = OriginalApcEnvironment;
Thread->ApcStatePointer[OriginalApcEnvironment] =
&Thread->ApcState;
Thread->ApcStatePointer[AttachedApcEnvironment] =
&Thread->SavedApcState;
}
- /* Restore the APC State */
- KiMoveApcState(&Thread->SavedApcState, &Thread->ApcState);
-
/* Swap Processes */
KiSwapProcess(Thread->ApcState.Process,
Thread->ApcState.Process);
-
+
/* Return to old IRQL*/
KeReleaseDispatcherDatabaseLock(OldIrql);
}
-// This function should be used by win32k.sys to add its own
user32/gdi32 services
-// TableIndex is 0 based
-// ServiceCountTable its not used at the moment
+/* This function should be used by win32k.sys to add its own
user32/gdi32 services
+ * TableIndex is 0 based
+ * ServiceCountTable its not used at the moment
+ */
/*
* @implemented
*/
Show replies by date