[KMTESTS:IO]

[KMTESTS:OB]
Simplify kernel mode thread creation

svn path=/trunk/; revision=69417
This commit is contained in:
Pierre Schweitzer 2015-09-29 18:43:35 +00:00
parent 0fbe4b9b8e
commit 5dc58d234a
2 changed files with 6 additions and 72 deletions

View file

@ -871,10 +871,7 @@ UserModeTest(VOID)
START_TEST(IoCreateFile)
{
NTSTATUS Status;
OBJECT_ATTRIBUTES ObjectAttributes;
HANDLE ThreadHandle;
PVOID ThreadObject = NULL;
PKTHREAD ThreadHandle;
TestSymlinks();
@ -882,36 +879,6 @@ START_TEST(IoCreateFile)
UserModeTest();
/* We've to be in kernel mode, so spawn a thread */
InitializeObjectAttributes(&ObjectAttributes,
NULL,
OBJ_KERNEL_HANDLE,
NULL,
NULL);
Status = PsCreateSystemThread(&ThreadHandle,
SYNCHRONIZE,
&ObjectAttributes,
NULL,
NULL,
KernelModeTest,
NULL);
ok_eq_hex(Status, STATUS_SUCCESS);
if (Status == STATUS_SUCCESS)
{
/* Then, just wait on our thread to finish */
Status = ObReferenceObjectByHandle(ThreadHandle,
SYNCHRONIZE,
*PsThreadType,
KernelMode,
&ThreadObject,
NULL);
ObCloseHandle(ThreadHandle, KernelMode);
Status = KeWaitForSingleObject(ThreadObject,
Executive,
KernelMode,
FALSE,
NULL);
ok_eq_hex(Status, STATUS_SUCCESS);
ObDereferenceObject(ThreadObject);
}
ThreadHandle = KmtStartThread(KernelModeTest, NULL);
KmtFinishThread(ThreadHandle, NULL);
}

View file

@ -23,42 +23,9 @@ KernelModeTest(IN PVOID Context)
START_TEST(ZwWaitForMultipleObjects)
{
NTSTATUS Status;
OBJECT_ATTRIBUTES ObjectAttributes;
HANDLE ThreadHandle;
PVOID ThreadObject = NULL;
PKTHREAD ThreadHandle;
/* We've to be in kernel mode, so spawn a thread */
InitializeObjectAttributes(&ObjectAttributes,
NULL,
OBJ_KERNEL_HANDLE,
NULL,
NULL);
Status = PsCreateSystemThread(&ThreadHandle,
SYNCHRONIZE,
&ObjectAttributes,
NULL,
NULL,
KernelModeTest,
NULL);
ok_eq_hex(Status, STATUS_SUCCESS);
if (Status == STATUS_SUCCESS)
{
/* Then, just wait on our thread to finish */
Status = ObReferenceObjectByHandle(ThreadHandle,
SYNCHRONIZE,
*PsThreadType,
KernelMode,
&ThreadObject,
NULL);
ObCloseHandle(ThreadHandle, KernelMode);
Status = KeWaitForSingleObject(ThreadObject,
Executive,
KernelMode,
FALSE,
NULL);
ok_eq_hex(Status, STATUS_SUCCESS);
ObDereferenceObject(ThreadObject);
}
ThreadHandle = KmtStartThread(KernelModeTest, NULL);
KmtFinishThread(ThreadHandle, NULL);
}