gpt4 book ai didi

windows - FILE_FLAG_NO_BUFFERING 如何与向通信设备打开的句柄交互?

转载 作者:可可西里 更新时间:2023-11-01 10:34:47 25 4
gpt4 key购买 nike

正如标题所说,我正在编写一个网络程序,我在其中使用 CreateFile 打开网络驱动程序的句柄,并且我一直在试验 NO_BUFFERING 标志。

大多数文档甚至都不会提及将其与通信设备一起使用,而那些这样做的文档(又名 MSDN 引用等)只是简单地提到您可以。

有谁知道这会如何影响与设备的通信?

最佳答案

这是一个设备驱动程序实现细节,您在 CreateFile() 调用中指定的选项在 IRP_MJ_REQUEST request 中传递.我链接的那个是用于文件系统的,非常漂亮。通过 IrpSp->Parameters.Create.Options 链接单击 IoCreateFileSpecifyDeviceObjectHint()'s查看 FILE_NO_INTERMEDIATE_BUFFERING 的选项参数。

串行端口 IRP_MJ_REQUEST 的文档 is here .非常简单,根本没有参数:) 通常,用于通信端口的设备驱动程序接口(interface)的 winapi 非常直接。记录的 winapi 函数与其 underlying IOCTL 之间存在(几乎)直接映射. winapi 函数除了基本的错误检查外没有做太多事情,然后迅速将工作传递给驱动程序。

因此没有任何方法可以传递您指定的 FILE_FLAG_NO_BUFFERING 选项,所以它根本不会被使用。

否则合乎逻辑的结论是,串行端口 I/O 是中断驱动的,驱动程序必须缓冲以便不丢失字节并保持可接受的传输速率。您可以通过 SetupComm() 在技术上修改缓冲区大小但是,正如所记录的那样,这只是一个具有相当高几率的建议,驱动程序会忽略非常低的值。

关于windows - FILE_FLAG_NO_BUFFERING 如何与向通信设备打开的句柄交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33326562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com