by fanxiushu 2024-03-24 转载或引用请注明原作者
接上文,当我们建立了蓝牙链接请求之后,就该传输数据了,
其实传输数据比起上章阐述的创建SDP和建立连接要简单许多。
使用类型 BRB_L2CA_ACL_TRANSFER 的BRB请求,就可以实现接收和发送操作,
至于具体是接收还是发送,根据设置的标志来区分,
因为我是把接收和发送请求都从驱动传输到应用层来处理的,
因此实现类似下面这样的代码:
static NTSTATUS cdo_ioctl_function(PDEVICE_OBJECT deviceObject, PIRP userIrp)
{
NTSTATUS status = STATUS_SUCCESS;
PIO_STACK_LOCATION irpStack = IoGetCurrentIrpStackLocation(userIrp); ///
PFILE_OBJECT fileObject = irpStack->FileObject;
bth_hid_user_t* user = (bth_hid_user_t*)fileObject->FsContext; ///
。。。。
switch (irpStack->Parameters.DeviceIoControl.IoControlCode)
{
。。。其他命令
case IOCTL_BTH_DATA_TRANSFER: //定义的用于接收或者发送的IOCTL命令
status = ioctl_bth_transfer(user, userIrp);
if (status =
Windows蓝牙驱动开发之模拟HID设备(二)(把Windows电脑模拟成蓝牙鼠标和蓝牙键盘等设备)
![](https://img-home.csdnimg.cn/images/20240711042549.png)