Reactos
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
11typedef LONG NTSTATUS;
12
13//
14// umode methods
15//
16BOOL RegisterDriver(LPCWSTR lpDriverName, LPCWSTR lpPathName);
17BOOL StartDriver(LPCWSTR lpDriverName);
18BOOL StopDriver(LPCWSTR lpDriverName);
19BOOL UnregisterDriver(LPCWSTR lpDriverName);
20
21//
22// undoc methods
23//
24BOOL ConvertPath(LPCWSTR lpPath, LPWSTR lpDevice);
25BOOL LoadVia_SystemLoadGdiDriverInformation(LPWSTR lpDriverPath);
26BOOL LoadVia_SystemExtendServiceTableInformation(LPWSTR lpDriverPath);
27BOOL NtStartDriver(LPCWSTR lpService);
28BOOL NtStopDriver(LPCWSTR lpService);
29
30
31//
32// undocumented stuff
33//
34#define SystemLoadGdiDriverInformation 26
35#define SystemExtendServiceTableInformation 38
36NTSYSAPI NTSTATUS NTAPI
37NtSetSystemInformation(IN INT SystemInformationClass,
38 IN PVOID SystemInformation,
39 IN ULONG SystemInformationLength );
40NTSTATUS
41NtUnloadDriver(IN PUNICODE_STRING DriverServiceName);
42
43typedef 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
53typedef enum _OBJECT_INFORMATION_CLASS {
54 ObjectBasicInformation,
55 ObjectNameInformation,
56 ObjectTypeInformation,
57 ObjectAllTypesInformation,
58 ObjectHandleInformation
59} OBJECT_INFO_CLASS;
60
61NTSTATUS NtQueryObject(IN HANDLE Handle,
62 IN OBJECT_INFO_CLASS ObjectInformationClass,
63 OUT PVOID ObjectInformation,
64 IN ULONG ObjectInformationLength,
65 OUT PULONG ReturnLength);
66
67
68typedef struct _OBJECT_NAME_INFORMATION {
69 UNICODE_STRING Name;
70} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
71
72