在windows驱动开发流程中,写完sys驱动binary之后,为了让OS能够正确的从注册表中读取到对应的信息,并且将其load运行起来,还需要编写inf文件来描述配置驱动文件。不过这也不是必须的,可以通过ServiceControlManager直接创建一个指定驱动binary的Service并且启动。如下code:
HANDLE hSCManager;
HANDLE hService;
hSCManager = OpenSCManagerW(
NULL, // 可以指定一个远端服务器名
SERVICES_ACTIVE_DATABASE, // 目前应当指定SERVICES_ACTIVE_DATABASE
SC_MANAGER_CREATE_SERVICE); // 指定该SCM需要进行的操作
if (hSCManager == NULL)
{
printf("\nOpenSCManager failed");
return false;
}
hService = CreateService(hSCManager, // 之前创建的SCM句柄
"Test", // 服务器名
"TestDriver", // 显示名
SERVICE_START | DELETE | SERVICE_STOP, // 拥有的操作
SERVICE_KERNEL_DRIVER, // 创建的服务类型,和普通的服务不同,指明了创建的服务为内核驱动
SERVICE_DEMAND_START, // 服务的启动选项,可以选择自动启动,手动启动,以及Demand