📄 loaddrv.h
字号:
#define DriverPath "%SystemRoot%\\system32\\drivers\\npf.sys"
#define ServiceName "npf"
// 安装驱动并启动服务
// lpszDriverPath: 驱动程序路径
// lpszServiceName: 服务名
BOOL StartDriver(LPCTSTR lpszDriverPath, LPCTSTR lpszServiceName)
{
SC_HANDLE hSCManager; // 服务控制管理器句柄
SC_HANDLE hService; // 服务句柄
BOOL bResult = FALSE; // 返回值
// 打开服务控制管理器
hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
if (NULL == hSCManager) {
printf("OpenSCManager failed (%d)\n", GetLastError());
return bResult;
}
if (hSCManager) {
// 创建服务
hService = CreateService(
hSCManager,
lpszServiceName,
lpszServiceName,
SERVICE_ALL_ACCESS,
SERVICE_KERNEL_DRIVER,
SERVICE_DEMAND_START,
SERVICE_ERROR_NORMAL,
lpszDriverPath,
NULL,
NULL,
NULL,
NULL,
NULL);
if (hService == NULL) {
if (::GetLastError() == ERROR_SERVICE_EXISTS) {
hService = ::OpenService(hSCManager, lpszServiceName, SERVICE_ALL_ACCESS);
}
}
if (hService) {
// 启动服务
bResult = StartService(hService, 0, NULL);
// 关闭服务句柄
CloseServiceHandle(hService);
}
// 关闭服务控制管理器句柄
CloseServiceHandle(hSCManager);
}
return bResult;
}
BOOL DeleteDriver(LPCTSTR lpszServiceName)
{
SC_HANDLE hSCManager; // 服务控制管理器句柄
SC_HANDLE hService; // 服务句柄
BOOL bResult = FALSE; // 返回值
// 打开服务控制管理器
hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
if (NULL == hSCManager) {
printf("OpenSCManager failed (%d)\n", GetLastError());
return bResult;
}
// Get a handle to the service.
hService = OpenService(
hSCManager, // SCM database
lpszServiceName, // name of service
DELETE); // need delete access
if (hService == NULL) {
printf("OpenService failed (%d)\n", GetLastError());
CloseServiceHandle(hSCManager);
return bResult;
}
// Delete the service.
if (! (bResult=DeleteService(hService)) ) {
printf("DeleteService failed (%d)\n", GetLastError());
}
else printf("Service deleted successfully\n");
CloseServiceHandle(hService);
CloseServiceHandle(hSCManager);
return bResult;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -