START_TEST(IoCreateFile)
{
- NTSTATUS Status;
- OBJECT_ATTRIBUTES ObjectAttributes;
- HANDLE ThreadHandle;
- PVOID ThreadObject = NULL;
+ PKTHREAD ThreadHandle;
TestSymlinks();
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);
}