[WIN32K:NTUSER]

- THREADINFO::hEventQueueClient is a user handle. Treat it as such.
CORE-10207

svn path=/trunk/; revision=69537
This commit is contained in:
Thomas Faber 2015-10-15 09:50:12 +00:00
parent 28bfb7820f
commit ba9896d0b8

View file

@ -508,12 +508,12 @@ InitThreadCallback(PETHREAD Thread)
goto error; goto error;
} }
Status = ObReferenceObjectByHandle(ptiCurrent->hEventQueueClient, 0, Status = ObReferenceObjectByHandle(ptiCurrent->hEventQueueClient, 0,
*ExEventObjectType, KernelMode, *ExEventObjectType, UserMode,
(PVOID*)&ptiCurrent->pEventQueueServer, NULL); (PVOID*)&ptiCurrent->pEventQueueServer, NULL);
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
ERR_CH(UserThread, "Failed referencing the event object, Status 0x%08x.\n", Status); ERR_CH(UserThread, "Failed referencing the event object, Status 0x%08x.\n", Status);
ZwClose(ptiCurrent->hEventQueueClient); ObCloseHandle(ptiCurrent->hEventQueueClient, UserMode);
ptiCurrent->hEventQueueClient = NULL; ptiCurrent->hEventQueueClient = NULL;
goto error; goto error;
} }
@ -818,7 +818,7 @@ ExitThreadCallback(PETHREAD Thread)
if (ptiCurrent->hEventQueueClient != NULL) if (ptiCurrent->hEventQueueClient != NULL)
{ {
ZwClose(ptiCurrent->hEventQueueClient); ObCloseHandle(ptiCurrent->hEventQueueClient, UserMode);
ObDereferenceObject(ptiCurrent->pEventQueueServer); ObDereferenceObject(ptiCurrent->pEventQueueServer);
} }
ptiCurrent->hEventQueueClient = NULL; ptiCurrent->hEventQueueClient = NULL;