usbhid中所需要的函数

本文介绍了USBHID驱动中涉及的关键函数,包括动态链接库入口函数USBInstallDriver、USBUnInstallDriver和USBDeviceAttach,以及消息回调函数USBDeviceNotifications。此外,详细阐述了流接口函数如HID_Init、HID_Deinit、HID_Open、HID_Close和HID_IOControl的功能,这些函数分别负责设备初始化、卸载、打开、关闭和I/O控制。通过对这些函数的使用,可以实现对USBHID设备的有效管理和通信。

DllEntry  动态链接库入口函数,首先调用

三个接口函数:

USBInstallDriver
USBUnInstallDriver

USBDeviceAttach

消息回调函数:

USBDeviceNotifications

ClearEndpointZeroStall
DetermineDestination
HidPdd_GetReport
HidPdd_SetReport
GetStringDescriptor
HidPdd_GetString
HidPdd_GetIdle
HidPdd_SetIdle
EnableRemoteWakeup
HidPdd_IssueCommand

流接口函数:
HID_Init
HID_Deinit
HID_Open
HID_Close
HID_IOControl

流接口函数功能:

1 DWORD XXX_Init (LPCTSTR pContext, LPCVOID lpvBusContext)

pContext :指向一个字符串,包含注册表中该流接口活动键值的路径

lpvBusContext :此参数是被处理过的一个指针数据,由函数 ActiveDeviceEx  的第四参数lpvParam传递而来(若该对应的驱动由 ActiveDeviceEx  调用而加载则 lpvBusContext 被传递过来,否则为0)

该函数是驱动挂载后第一个被执行的。主要负责完成对设备的初始化操作和驱动的安全性检查。由 ActiveDeviceEx 通过设备管理器调用。其返回值一般是一个数据结构指针,作为函数参数传递给其他流接口函数。

 

2 BOOL XXX_Deinit (DWORD hDeviceContext)

hDeviceContext XXX_Init 的返回值。

整个驱动中最后执行。用来停止和卸载设备。由 DeactivateDevice 触发设备管理器调用。成功返回 TRUE

 

3 DWORD XXX_Open (DWORD hDeviceContext, DWORD AccessCode ,    DWORD ShareMode)

hDeviceContext XXX_Init 的返回值。

AccessCode 访问模式标志,读、写或其他。

ShareMode 驱动的共享方式标志

打开设备,为后面的操作初始化数据就够,准备相应的资源。应用程序通过 CreateFile 函数间接调用之。返回一个结构指针,用于区分哪个应用程序调用了驱动,这个值还作为参数传递给其他接口函数 XXX_Read XXX_Write XXX_Seek XXX_IOControl

4 BOOL XXX_Close (DWORD hOpenContext)

hOpenContext XXX_Open 返回值。

关闭设备,释放资源。由 CloseHandle 函数间接调用。

5 BOOL XXX_IOControl (DWORD hOpenContext, DWORD dwCode, PBYTE pBufIn, DWORD dwLenIn, PBYTE pBufOut,

 DWORD dwLenOut,   PDWORD pdwActualOut)

hOpenContext XXX_Open 返回值。

dwCode 控制命令字。

pdwActualOut 实际输出数据长度。

用于向设备发送命令,应用程序通过 DeviceIoControl 调用来实现该功能。要调用这个接口还需要在应用层和驱动之间建立一套相同的命令,通过宏定义 CTL_CODE(DeviceType, Function, Method, Access 来实现。如:

#define IOCTL_INIT_PORTS / CTL_CODE(FILE_DEVICE_UNKNOWN,0X801,

METHOD_BUFFERED,FILE_ANY_ACCESS)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值