1 #include "DriverTester.h"
5 RegisterDriver(LPCWSTR lpDriverName
,
11 hSCManager
= OpenSCManagerW(NULL
,
13 SC_MANAGER_ALL_ACCESS
);
18 hService
= CreateServiceW(hSCManager
,
22 SERVICE_KERNEL_DRIVER
,
34 CloseServiceHandle(hService
);
35 CloseServiceHandle(hSCManager
);
40 DWORD err
= GetLastError();
42 if (err
== ERROR_SERVICE_MARKED_FOR_DELETE
)
44 StopDriver(DRIVER_NAME
);
48 CloseServiceHandle(hSCManager
);
50 // return TRUE if the driver is already registered
51 return (err
== ERROR_SERVICE_EXISTS
);
56 StartDriver(LPCWSTR lpDriverName
)
62 hSCManager
= OpenSCManagerW(NULL
,
64 SC_MANAGER_ALL_ACCESS
);
68 hService
= OpenServiceW(hSCManager
,
73 CloseServiceHandle(hSCManager
);
77 bRet
= StartServiceW(hService
, 0, NULL
);
80 if (GetLastError() == ERROR_SERVICE_ALREADY_RUNNING
)
82 wprintf(L
"%s.sys already running\n", DRIVER_NAME
);
87 CloseServiceHandle(hService
);
88 CloseServiceHandle(hSCManager
);
94 StopDriver(LPCWSTR lpDriverName
)
98 SERVICE_STATUS serviceStatus
;
101 hSCManager
= OpenSCManagerW(NULL
,
103 SC_MANAGER_ALL_ACCESS
);
107 hService
= OpenServiceW(hSCManager
,
112 CloseServiceHandle(hSCManager
);
116 bRet
= ControlService(hService
,
117 SERVICE_CONTROL_STOP
,
121 if (GetLastError() == ERROR_SERVICE_NOT_ACTIVE
)
123 wprintf(L
"%s.sys wasn't running\n", DRIVER_NAME
);
128 CloseServiceHandle(hService
);
129 CloseServiceHandle(hSCManager
);
135 UnregisterDriver(LPCWSTR lpDriverName
)
138 SC_HANDLE hSCManager
;
141 hSCManager
= OpenSCManagerW(NULL
,
143 SC_MANAGER_ALL_ACCESS
);
147 hService
= OpenServiceW(hSCManager
,
152 CloseServiceHandle(hSCManager
);
156 bRet
= DeleteService(hService
);
158 CloseServiceHandle(hService
);
159 CloseServiceHandle(hSCManager
);