Reactos
at master 72 lines 2.0 kB view raw
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