请问一下:
看了DDK的文档,当用户调用DeviceIoControl的时候,驱动要获取用户传递的input和output缓冲区,需要根据IOCTL的所指定的传输方式(METHOD_BUFFERED ,METHOD_IN_DIRECT or METHOD_OUT_DIRECT 或METHOD_NEITHER )去获取。
但是,当我调用ReadFile或WriteFile的时候,并没有指定是用那种传输方式的,那么我要获取用户的缓冲区,该怎么获取呢?
另外,请问一下:
"传输方式(METHOD_BUFFERED ,METHOD_IN_DIRECT or METHOD_OUT_DIRECT 或METHOD_NEITHER )",是指对什么数据的传输方式呢?
谢谢
既然看了DDK,就再多点几下,不就可以找到答案了?
建议去看“CTL_CODE”“buffered I/O ”等DDK文档。里面有较为详细的描述。
传输方式一般来讲分为三种:采用缓冲区读取、直接读取、其他读取。
具体的多说也没用,还是看文档,和看DDK的示例代码吧。
看你的设备Flags是DO_BUFFERED_IO还是DO_DIRECT_IO。
引用: 引用 6 楼 cnzdgs 的回复:
DEVICE_OBJECT结构里面。
是Flags 成员吧?这个属性可以设置的吗?那个API可以设备呢?在创建设备的时候好像没有设置这个Flags的参数
就是Flags成员,创建设备后直接修改,不需要API。