update for HEAD-2003091401
[reactos.git] / regtests / kmrtint / kmrtint.c
1 /*
2  * PROJECT:         ReactOS kernel
3  * FILE:            regtests/kmrtint/kmrtint.c
4  * PURPOSE:         Kernel-mode regression testing driver user-mode interface
5  * PROGRAMMER:      Casper S. Hornstrup (chorns@users.sourceforge.net)
6  * UPDATE HISTORY:
7  *      06-07-2003  CSH  Created
8  */
9 #define NTOS_MODE_USER
10 #include <ntos.h>
11 #include "regtests.h"
12 #include "kmregtests.h"
13
14 #define NDEBUG
15 #include <debug.h>
16
17 HANDLE
18 OpenDevice()
19 {
20   OBJECT_ATTRIBUTES ObjectAttributes;
21   UNICODE_STRING DeviceName;
22   IO_STATUS_BLOCK Iosb;
23   HANDLE DeviceHandle;
24   NTSTATUS Status;
25
26   RtlInitUnicodeString(&DeviceName,
27     L"\\Device\\KMRegTests");
28         InitializeObjectAttributes(
29     &ObjectAttributes,
30     &DeviceName,
31     0,
32     NULL,
33     NULL);
34
35   Status = NtCreateFile(
36     &DeviceHandle,
37     FILE_GENERIC_READ | FILE_GENERIC_WRITE,
38     &ObjectAttributes,
39     &Iosb,
40     NULL,
41                 0,
42                 0,
43                 FILE_OPEN,
44                 FILE_SYNCHRONOUS_IO_NONALERT,
45     NULL,
46     0);
47
48   if (!NT_SUCCESS(Status))
49     {
50       return INVALID_HANDLE_VALUE;
51     }
52   return DeviceHandle;
53 }
54
55 VOID STDCALL
56 RegTestMain()
57 {
58   IO_STATUS_BLOCK Iosb;
59   HANDLE DeviceHandle;
60   NTSTATUS Status;
61
62   DeviceHandle = OpenDevice();
63   if (DeviceHandle != INVALID_HANDLE_VALUE)
64     {
65       Status = NtDeviceIoControlFile(
66         DeviceHandle,
67         NULL,
68                 NULL,
69                 NULL,
70                 &Iosb,
71                 IOCTL_KMREGTESTS_RUN,
72                 NULL,
73                 0,
74                 NULL,
75                 0);
76       if (Status == STATUS_PENDING) {
77                 Status = NtWaitForSingleObject(DeviceHandle, FALSE, NULL);
78       }
79
80       NtClose(DeviceHandle);
81     }
82   else
83     {
84       DPRINT("Cannot open KMRegTests device.\n");
85     }
86 }