两个易语言驱动操作模块

易语言 2020-07-23 15:10:57

两个易语言驱动操作模块

.子程序 加载驱动_, 整数型, 公开, 成功返回驱动句柄,失败返回-1
.参数 驱动路径, 文本型, , sys驱动程序完整路径
.参数 服务名, 文本型, , 表示服务名称的字符串,名称中不允许使用"/"或"\"字符
.参数 显示名, 文本型, , 表示服务名称的字符串,这个名称是供用户界面程序识别函数时使用的
.参数 驱动名, 文本型, , 欲创建的驱动名,文本"\\.\"加上驱动名
.局部变量 hDevice, 整数型, , , 驱动句柄
.局部变量 hSCManager, 整数型, , , 控制管理器数据库的句柄
.局部变量 hService, 整数型, , , 服务句柄

hSCManager = OpenSCManagerA (字符 (0), 字符 (0), #SC_MANAGER_CREATE_SERVICE)
.如果真 (hSCManager = 0)
返回 (-1)
.如果真结束
hService = CreateServiceA (hSCManager, 服务名, 显示名, #SERVICE_START, #SERVICE_KERNEL_DRIVER, #SERVICE_DEMAND_START, #SERVICE_ERROR_IGNORE, 驱动路径, 0, 0, 0, 0, 0)
.如果真 (hService = 0)
hService = OpenServiceA (hSCManager, 服务名, #SERVICE_START)
.如果真 (hService = 0) ' 调用CreateService注册服务失败!
CloseServiceHandle (hSCManager)
返回 (-1)
.如果真结束

.如果真结束
StartServiceA (hService, 0, 0)
CloseServiceHandle (hService)
CloseServiceHandle (hSCManager)
hDevice = CreateFileA (驱动名, #GENERIC_READ + #GENERIC_WRITE, 0, 0, #OPEN_EXISTING, 0, 0)
返回 (hDevice) ' 返回驱动句柄