jjzjj

cNotes_buffer

全部标签

c++ - 具有重叠 I/O 的 FILE_FLAG_NO_BUFFERING - 字节读为零

我在使用带有重叠I/O的标志FILE_FLAG_NO_BUFFERING时观察到一个奇怪的行为。我调用了一系列ReadFile()函数调用,稍后使用GetOverlappedResult()查询它们的状态。我所说的奇怪行为是,即使文件句柄良好并且ReadFile()调用返回时没有任何错误(预期的ERROR_IO_PENDING除外),从GetOverlappedResult()调用返回的“字节读取”值是某些文件为零,每次我运行代码时,它都是一组不同的文件。如果我删除FILE_FLAG_NO_BUFFERING,事情就会开始正常工作,并且没有字节读取值为零。下面是我如何使用FILE_FL

c - 使用和不使用 FILE_FLAG_NO_BUFFERING 的 NTFS 文件访问时间

我正在尝试对NTFS的文件读取时间(顺序访问)进行基准测试。我的代码获取开始时间,执行大小等于4096字节(系统上NTFS的簇大小)的读取并记录结束时间。然后存储两个时间之间的差异,并重复该过程,直到到达文件末尾。我目前使用的文件大小是40K,所以得到10个时差值。当访问没有FILE_FLAG_NO_BUFFERING打开的文件(使用CreateFile)时,第一个block的访问时间接近30微秒,然后下降到大约7微秒用于后续访问(由于缓存)。当使用FILE_FLAG_NO_BUFFERING时,第一个block的访问时间接近21毫秒,随后的访问时间下降到大约175微秒。第一个bloc

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

正如标题所说,我正在编写一个网络程序,我在其中使用CreateFile打开网络驱动程序的句柄,并且我一直在试验NO_BUFFERING标志。大多数文档甚至都不会提及将其与通信设备一起使用,而那些这样做的文档(又名MSDN引用等)只是简单地提到您可以。有谁知道这会如何影响与设备的通信? 最佳答案 这是一个设备驱动程序实现细节,您在CreateFile()调用中指定的选项在IRP_MJ_REQUESTrequest中传递.我链接的那个是用于文件系统的,非常漂亮。通过IrpSp->Parameters.Create.Options链接单击

python - 在 Windows 中使用 Protocol Buffer

我正尝试在Windows中使用googleprotocolbuffer与python绑定(bind),但是我在安装步骤中遇到了一些问题。按照说明,我必须自己使用vs编译PB,但我的机器上没有安装vs,然后我在download找到了一个窗口二进制文件。页面。我还下载了完整的sourcecodepackage,然后我将protoc-2.5.0-win32.zip\protoc.exe放到C:\windows\system32。然后我转到protobuf-2.5.0.zip\python并运行pythonsetup.pyinstall来安装python绑定(bind)。但是我得到这样的错误:

windows - 关于Winsock Kernel Buffer和Nagle算法的疑问

阅读时this文章,我有疑问。我了解到,在传输小数据时,默认情况下会启用Nagle算法以合并小数据包。这导致在传输之前缓存一些数据。我相信Winsock内核缓冲区是缓存发生的地方。如果我错了,请纠正我。这是否意味着如果使用SO_SNDBUF选项将Winsock内核缓冲区设置为零,Nagle算法是否会被禁用?如果不是那么WINSOCK在哪里缓存小数据? 最佳答案 您引用的知识库文章以这种方式给出了您的答案...Tooptimizeperformanceattheapplicationlayer,Winsockcopiesdatabuf

c# - 在 Protocol Buffers 中表示 System.Decimal 的最佳方式是什么?

从this开始问题,在ProtocolBuffer中表示System.Decimal对象的最佳方式是什么? 最佳答案 好吧,protobuf-net会简单地为您处理这个;它运行类型的属性,并完全支持decimal。由于在proto中没有直接表达decimal的方式,它不会(当前)从“.proto”文件生成decimal属性,但它会是一个识别一些常见类型(“BCL.Decimal”或类似类型)并将其解释为十进制的不错的调整。至于代表它-我有一个discussiondocument在protobuf-netwiki区域中对此(我怀疑现在

c# - Protocol Buffer 从原始消息中检测类型

是否可以检测原始ProtocolBuffer消息的类型(在byte[]中)我遇到这样一种情况,端点可以接收不同的消息,我需要能够在反序列化之前检测到类型。我正在使用protobuf-net 最佳答案 您无法单独检测类型,因为protobuf规范不会为此向流添加任何数据;但是,根据上下文,有多种方法可以简化此过程:联合类型(如Jon所述)涵盖了一系列场景继承(特定于protobuf-net)可以是通用的——您可以有一个基本消息类型,以及任意数量的具体消息类型可以使用前缀来表示传入类型最后一种方法在原始TCP流的情况下实际上非常有值(v

c# - 专用于字节流的FIFO/Queue buffer

是否有任何.NET数据结构/类组合允许将字节数据附加到缓冲区的末尾,但所有查看和读取都是从头开始的,从而在我读取时缩短了缓冲区?MemoryStream类似乎完成了其中的一部分,但我需要为读取和写入维护不同的位置,并且它不会在读取数据后自动丢弃数据。已在对thisquestion的回复中发布了答案这基本上是我正在尝试做的,但我更喜欢我可以在同一进程的不同组件中进行异步I/O的操作,就像普通管道甚至网络流一样(我需要过滤/处理数据优先)。 最佳答案 我将发布一次我为工作项目编写的一些逻辑的精简副本。这个版本的优点是它与缓冲数据的链接列

c# - 从 wcf 绑定(bind) transferMode 从 "Buffered"更改为 "Streamed"是否被视为客户端的重大更改?

我有一个WCF服务端点,它通过流提供二进制文档。端点看起来像这样:publicStreamGetFile(intfileId){...}此服务端点的basicHttpBinding被错误地配置为使用TransferMode="Buffered"。服务端点当前由我无法控制的集成方使用。由于缓冲传输模式的内存消耗问题,我想将其更改为TransferMode="Streamed"。我能否安全地对服务绑定(bind)配置进行此更改,并期望这不会对任何集成方造成任何影响? 最佳答案 据我所知,WCF流模式传输是在客户端选择加入的,这意味着即使

c# - 抛出 FaultException 时 WCF 错误 "The size necessary to buffer the XML content exceeded the buffer quota"

我试图在WCF应用程序的服务器端抛出FaultException。我使用DTO作为此异常的有效负载。从某个时候(对于那种大对象)我开始在客户端收到“缓冲XML内容所需的大小超出了缓冲区配额”异常。所有绑定(bind)消息大小参数和maxDepth都设置为最大的值以排除怀疑。有人遇到过这个问题吗?网上好像还没有解决办法。设置没有帮助。 最佳答案 问题出在ClientRuntime的“MaxFaultSize”参数中,默认值为65535,因此默认情况下您无法在WCF的错误中传递大负载。要更改此值,您应该像这样编写自定义EndpointB