Windows动态库hid.dll
+ -

Windows服务HidServ及Hid.dll工作原理

2022-05-06 1106 0

在Windows操作系统下,使用自定义HID接口通讯时,离不开hid.dll,就算你使用的是hidapi等第三方HID库,它的底层也是HID.dll这个库。而我们使用系统原生的hid.dll库时,也一般是这样引用的。

#include<hidsdi.h>
#pragma comment(lib,"hid.lib ")

所以,从这里来来,hid.dll是windows提供给用户的关于HID通讯的最底层的应用层库。

HID库

而这个hid.dll的标准库,却是以服务的形式存在于系统,这样的好处是无论是多少用户登录,只有此一份服务,与当前的用户会话无关。
在Windows设备管理器中,我们可以看到一个hidserv的服务,这个服务就是hid.dll的服务名。
设备管理器中的HidServ

而当我们转至详情时,可以看到进程名为svchost.exe,其命令行为

c:\windows\system32\svchost.exe -k LocalSystemNetworkRestricted -p

hidserv注册表项

而经过我们的研究,在注册表中该hidserv的服务信息如下:
注册表路径为:

计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\hidserv

其内容如下:
HidServ注册表项
HidServ注册表项

可以看到,这里的注册表记录着该服务的一些基本信息,如ImagePath和ServiceDll。

SVHOST hidserv

从上面的svchost.exe的命令行

c:\windows\system32\svchost.exe -k LocalSystemNetworkRestricted -p

可以知道,其分类为LocalSystemNetworkRestricted,在注册表的计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost路径下,找到LocalSystemNetworkRestricted项,可以看到其有hidserv的项。
SVHOST hidserv

HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936   

0 篇笔记 写笔记

hidapi库使用示例
GitHub上已经封装好的HidApi库来进行开发,下载地址是https://github.com/yigityuce/HidApi这里弄了一个简单的测试程序:#include #include #include "hi......
Windows服务HidServ及Hid.dll工作原理
在Windows操作系统下,使用自定义HID接口通讯时,离不开hid.dll,就算你使用的是hidapi等第三方HID库,它的底层也是HID.dll这个库。而我们使用系统原生的hid.dll库时,也一般是这样引用的。#include#pragma comment(......
虚拟键盘鼠标UVKM自义HID接口
这里可以参考一个Windows自定义HID接口来实现:HID.h#pragma once#include typedef struct _MOUSE_STRUCT{ UCHAR ReportId;//A0 union { ......
Windows应用层接口HIDAPI与固件指定的输入输出通讯的注意事项
HID设备分为专用设备和自定义设备。专用设备为系统独占设备,由系统打开,并进行数据的处理,如键盘鼠标,触摸屏。自定义设备为自定义通讯的设备,比如我们可用于固件升级。专用设备用CreateFile打开时返回GetLastError()==5。HID设备无论应用层是否打开,其实驱动已经开始进行数据的读......
关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!