[RXCE]
[reactos.git] / rostests / win32 / DriverLoading / Application / DriverTester.h
1 #define _WIN32_WINNT 0x0500
2 #include <windows.h>
3 #include <stdio.h>
4 #include <winternl.h>
5
6 #define DRIVER_NAME L"TestDriver"
7
8 #define STATUS_SUCCESS ((NTSTATUS)0x00000000L)
9 #define STATUS_PRIVILEGE_NOT_HELD ((NTSTATUS)0xC0000061L)
10
11 typedef LONG NTSTATUS;
12
13 //
14 // umode methods
15 //
16 BOOL RegisterDriver(LPCWSTR lpDriverName, LPCWSTR lpPathName);
17 BOOL StartDriver(LPCWSTR lpDriverName);
18 BOOL StopDriver(LPCWSTR lpDriverName);
19 BOOL UnregisterDriver(LPCWSTR lpDriverName);
20
21 //
22 // undoc methods
23 //
24 BOOL ConvertPath(LPCWSTR lpPath, LPWSTR lpDevice);
25 BOOL LoadVia_SystemLoadGdiDriverInformation(LPWSTR lpDriverPath);
26 BOOL LoadVia_SystemExtendServiceTableInformation(LPWSTR lpDriverPath);
27 BOOL NtStartDriver(LPCWSTR lpService);
28 BOOL NtStopDriver(LPCWSTR lpService);
29
30
31 //
32 // undocumented stuff
33 //
34 #define SystemLoadGdiDriverInformation 26
35 #define SystemExtendServiceTableInformation 38
36 NTSYSAPI NTSTATUS NTAPI
37 NtSetSystemInformation(IN INT SystemInformationClass,
38 IN PVOID SystemInformation,
39 IN ULONG SystemInformationLength );
40 NTSTATUS
41 NtUnloadDriver(IN PUNICODE_STRING DriverServiceName);
42
43 typedef struct _SYSTEM_GDI_DRIVER_INFORMATION
44 {
45 UNICODE_STRING DriverName;
46 PVOID ImageAddress;
47 PVOID SectionPointer;
48 PVOID EntryPoint;
49 PIMAGE_EXPORT_DIRECTORY ExportSectionPointer;
50 ULONG ImageLength;
51 } SYSTEM_GDI_DRIVER_INFORMATION, *PSYSTEM_GDI_DRIVER_INFORMATION;
52
53 typedef enum _OBJECT_INFORMATION_CLASS {
54 ObjectBasicInformation,
55 ObjectNameInformation,
56 ObjectTypeInformation,
57 ObjectAllTypesInformation,
58 ObjectHandleInformation
59 } OBJECT_INFO_CLASS;
60
61 NTSTATUS NtQueryObject(IN HANDLE Handle,
62 IN OBJECT_INFO_CLASS ObjectInformationClass,
63 OUT PVOID ObjectInformation,
64 IN ULONG ObjectInformationLength,
65 OUT PULONG ReturnLength);
66
67
68 typedef struct _OBJECT_NAME_INFORMATION {
69 UNICODE_STRING Name;
70 } OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
71
72