You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Factor out Win32 thread info create/destroy into UserCreateThreadInfo and UserDestroyThreadInfo like in trunk.
- Improve NtUserInitialize.
svn path=/branches/arwinss/; revision=62851
DPRINT("Win32 thread %p, process %p\n", Win32Thread, Win32Process);
92
+
93
+
DPRINT("Destroying W32 thread TID:%d at IRQ level: %lu\n", Thread->Tcb.Teb->ClientId.UniqueThread, KeGetCurrentIrql());
94
+
95
+
/* USER thread-level cleanup */
96
+
UserEnterExclusive();
97
+
cleanup_clipboard_thread(Win32Thread);
98
+
destroy_thread_windows(Win32Thread);
99
+
free_msg_queue(Win32Thread);
100
+
close_thread_desktop(Win32Thread);
101
+
UserLeave();
102
+
103
+
PsSetThreadWin32Thread(Thread, NULL, NULL);
104
+
105
+
returnSTATUS_SUCCESS;
106
+
}
107
+
34
108
NTSTATUS
35
109
APIENTRY
36
110
Win32kProcessCallout(PEPROCESSProcess,
@@ -119,62 +193,24 @@ APIENTRY
119
193
Win32kThreadCallout(PETHREADThread,
120
194
PSW32THREADCALLOUTTYPEType)
121
195
{
122
-
struct_EPROCESS*Process;
123
-
PTHREADINFOWin32Thread;
124
-
PPROCESSINFOWin32Process;
196
+
NTSTATUSStatus;
125
197
126
198
DPRINT("Enter Win32kThreadCallback, current thread id %d, process id %d\n", PsGetCurrentThread()->Tcb.Teb->ClientId.UniqueThread, PsGetCurrentThread()->Tcb.Teb->ClientId.UniqueProcess);
127
199
128
-
Process=Thread->ThreadsProcess;
129
-
130
-
/* Get the Win32 Thread and Process */
131
-
Win32Thread=PsGetThreadWin32Thread(Thread);
132
-
Win32Process=PsGetProcessWin32Process(Process);
133
-
DPRINT("Win32 thread %p, process %p\n", Win32Thread, Win32Process);
0 commit comments