zoukankan      html  css  js  c++  java
  • 需要编写总线驱动程序?

    通常,一个设备有多路数据流。而ReadFile,WriteFile又只针对一个句柄。这就出现一个矛盾,这有几个解决方案

    1. 多个设备对象
    2. 编写总线驱动
    3. 设备对象命名空间

    虽然我没有找到WDK中推荐的做法,但在WHDC上,微软给出了推荐的做法。下面简单介绍一下吧。

    首先IoRegisterDeviceInterface接受一个ReferenceString,我们可以给一个字符串“ch0”。这样,设备接口生成的符号连接就加了这个字符串。打开设备用这个带ReferenceString的字符串枚举。也就是说CreateFile用不同的Path得到不同的句柄。区别在于句柄上的IRP,其IO_STACK_LOCATION中的FileObject->FileName。现在明了了

    NTSTATUS
    DispatchRead (
        IN PDEVICE_OBJECT DeviceObject,
        IN PIRP Irp
        )
    {
        NTSTATUS status=STATUS_SUCCESS;
        PIO_STACK_LOCATION stack= IoGetCurrentIrpStackLocation(Irp);
        /*
    比如设备有两个IRP队列,这里就可以区分了*/
        if(stack->FileObject->FileName...)
        {
          
        }
        else
        {

        }

        KdTrace(("Irp(%8.8lX)\n",Irp));
              
        COMPLETE_REQUEST_NOINCREMENT(Irp,status,0);
       
        return status;
    }

  • 相关阅读:
    mongodb单机搭建
    zeus部署
    hive单机部署
    datax部署
    hadoop/hbase/hive单机扩增slave
    读取Jar中的json文件
    Mybatis 一对多 简单映射配置
    java/kotlin 读取文件、写入文件
    ES6中Json、String、Map、Object之间的转换
    java 客户端发起http请求2
  • 原文地址:https://www.cnblogs.com/iwasmu/p/1723384.html
Copyright © 2011-2022 走看看