Windows蓝牙驱动开发之模拟HID设备(二)(把Windows电脑模拟成蓝牙鼠标和蓝牙键盘等设备)

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 =

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-03-26 07:16:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-26 07:16:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-26 07:16:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-26 07:16:03       20 阅读

热门阅读

  1. node.js常用的命令

    2024-03-26 07:16:03       16 阅读
  2. ARMd7 作业

    2024-03-26 07:16:03       16 阅读
  3. spring boot中使用spring cache

    2024-03-26 07:16:03       18 阅读
  4. arm iic通信

    2024-03-26 07:16:03       20 阅读
  5. GPT-4:下一代人工智能的突破与挑战

    2024-03-26 07:16:03       20 阅读
  6. 使用GPT将文档生成问答对

    2024-03-26 07:16:03       16 阅读
  7. Spring和spring Boot的区别

    2024-03-26 07:16:03       13 阅读
  8. 考研复习时间表(3-4月)(待完善)

    2024-03-26 07:16:03       18 阅读