bool InstallDriver(char* pszDriverPath, char* pszDriverName) { SC_HANDLE
hSCManager; SC_HANDLE hService; //Remove any previous instance of the
driver RemoveDriver(pszDriverName); hSCManager=OpenSCManager(NULL, NULL,
SC_MANAGER_ALL_ACCESS); if (hSCManager) { //Install the driver
hService=CreateService( hSCManager, pszDriverName, pszDriverName,
SERVICE_ALL_ACCESS, SERVICE_KERNEL_DRIVER, SERVICE_AUTO_START,
SERVICE_ERROR_NORMAL, pszDriverPath, NULL, NULL, NULL, NULL, NULL);
CloseServiceHandle(hSCManager); if (hService==NULL) return FALSE; } else
return FALSE; CloseServiceHandle(hService); return TRUE; }
bool RemoveDriver(char* pszDriverName) { SC_HANDLE hSCManager; SC_HANDLE
hService; BOOL bResult; SetLastError(0); StopDriver(pszDriverName); int
err=GetLastError(); hSCManager=OpenSCManager(NULL, NULL,
SC_MANAGER_ALL_ACCESS); if (hSCManager) {
hService=OpenService(hSCManager, pszDriverName, SERVICE_ALL_ACCESS);
CloseServiceHandle(hSCManager); if (hService) {
bResult=DeleteService(hService); CloseServiceHandle(hService); } else
return FALSE; } else return FALSE; return bResult; }
bool StartDriver(char* pszDriverName) { SC_HANDLE hSCManager; SC_HANDLE
hService; BOOL bResult; hSCManager=OpenSCManager(NULL, NULL,
SC_MANAGER_ALL_ACCESS); if (hSCManager) {
hService=OpenService(hSCManager, pszDriverName, SERVICE_ALL_ACCESS);
CloseServiceHandle(hSCManager); if (hService) {
bResult=StartService(hService, 0, NULL); if (bResult==FALSE) { int
err=GetLastError(); if (err==ERROR_SERVICE_ALREADY_RUNNING)
bResult=TRUE; } CloseServiceHandle(hService); } else return FALSE; }
else return FALSE; return bResult; }
InstallDriver("c:\\sys\\vdums.sys","VDUMS")) { StartDriver("VDUMS");
hf=CreateFile(VDUM_CTL_DOSDEV_NAME, GENERIC_READ | GENERIC_WRITE, 0,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if
(hf==INVALID_HANDLE_VALUE) { printf("Driver invalid\n"); }