命名管道读取超时

2024-03-02

我正在尝试为命名管道的读取操作设置超时。
为了从命名管道中读取数据,我使用ReadFile功能。
我读到可以使用以下命令为此函数设置超时SetCommTimeouts函数,但当我尝试使用它时,出现系统错误 1:“函数不正确”。
这是我的代码(这是客户端):

m_pipe = CreateFileA(pipeName,   // pipe name 
                         GENERIC_READ |  // read and write access 
                         GENERIC_WRITE, 
                         0,              // no sharing 
                         NULL,           // default security attributes
                         OPEN_EXISTING,  // opens existing pipe 
                         0,              // default attributes 
                         NULL);          // no template file 

    if (m_pipe != INVALID_HANDLE_VALUE)
    {
            DWORD mode = PIPE_READMODE_MESSAGE | PIPE_WAIT;
            ok = SetNamedPipeHandleState(m_pipe, &mode, NULL, NULL);
            COMMTIMEOUTS cto;
            cto.ReadTotalTimeoutConstant = 1000;
            BOOL time = SetCommTimeouts(m_pipe, &cto);
    }

我做错了什么还是SetCommTimeouts方法不应该与管道一起使用吗?还有其他方法可以让读取超时吗?


如果超时的目的是为了不卡住forever您可以考虑致电PeekNamedPipe(...) http://msdn.microsoft.com/en-us/library/windows/desktop/aa365779%28v=vs.85%29.aspx在定时循环中。这样你就可以时不时的检查一下是否有什么东西可以读。 或者PeekNamedPipe可以用来决定管道上的读取是否真的会得到任何东西before执行读取。这样可以避免“等待”读取。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

命名管道读取超时 的相关文章

  • 有没有快速创建集合的方法?

    目前我正在创建一个像这样的新集 std set a s s insert a1 s insert a2 s insert a3 s insert a10 有没有办法创建s在一行 int myints 10 20 30 40 50 std s
  • FileStream 构造函数和默认缓冲区大小

    我们有一个使用 NET 4 用 C 编写的日志记录类 我想添加一个构造函数参数 该参数可以选择设置文件选项 WriteThrough http msdn microsoft com en us library system io fileo
  • ASP.NET Web API 客户端 ProgressMessageHandler Post 任务卡在 WinForm 应用程序中

    我在用着HttpClient and ProgressMessageHandler来自MS ASP NET Web API 客户端库 http nuget org packages Microsoft AspNet WebApi Clien
  • 防止 boost::asio::io_context 在空轮询调用时停止

    此代码调用发布的句柄 boost asio io context ioc boost asio post ioc std cout lt lt lol lt lt std endl ioc poll 而这并没有 boost asio io
  • 根据 N 个值中最小的一个返回不同的结果

    不确定如何使标题更具描述性 所以我只是从一个例子开始 我使用下面的代码位 它从枚举中选择一个方向 具体取决于四个轴中哪一个与给定方向相比形成最小角度 static Direction VectorToDirection Vector2 di
  • 如何在 SqlDataReader.Read() 期间从死锁异常中恢复

    我的 NET 应用程序的事件日志显示 它在从 Sql Server 读取数据时偶尔会出现死锁 这种情况通常非常罕见 因为我们已经优化了查询以避免死锁 但有时仍然会发生 过去 我们在调用ExecuteReader函数在我们的SqlComman
  • 指向特征矩阵的指针数组

    我在代码中使用 Eigen 的 MatrixXd 矩阵 在某个时刻我需要一个 3D 矩阵 由于 Eigen 没有三维矩阵类型 因为它仅针对线性代数进行了优化 因此我创建了一个 MatrixXd 类型的指针数组 Eigen MatrixXd
  • 找不到 assimp-vc140-mt.dll ASSIMP

    我已经从以下位置下载了 Assimp 项目http assimp sourceforge net main downloads html http assimp sourceforge net main downloads html Ass
  • ASP.Net Core 内容配置附件/内联

    我正在从 WebAPI 控制器返回一个文件 Content Disposition 标头值自动设置为 附件 例如 处置 附件 文件名 30956 pdf 文件名 UTF 8 30956 pdf 当它设置为附件时 浏览器将要求保存文件而不是打
  • 如何在子 shell 中运行 cmd.exe 批处理文件

    我有一个批处理文件 通常像这样调用 longjob cmd gt result txt 2 gt 1 这工作正常 但脚本在执行过程中更改了目录 将我的 shell 留在该目录中 这很麻烦 有没有办法在子 shell 中运行命令 同时仍然允许
  • 无法在内存位置找到异常源:cudaError_enum

    我正在尝试确定 Microsoft C 异常的来源 test fft exe 中 0x770ab9bc 处的第一次机会异常 Microsoft C 异常 内存位置 0x016cf234 处的 cudaError enum 我的构建环境是 I
  • 运行选定的代码生成器时出错:“未将对象引用设置到对象的实例。”错误?

    我已经尝试了所有解决方案 例如修复 VS 2013 但没有用 当您通过右键单击控制器文件夹来创建控制器并添加控制器时 然后右键单击新创建的控制器的操作并选择添加视图 当我尝试创建视图时 就会发生这种情况 它不是一个新项目 而是一个现有项目
  • 每个租户的唯一用户名和电子邮件

    我正在使用以下代码编写多租户应用程序ASP NET Core 2 1 我想覆盖默认的与用户创建相关的验证机制 目前我无法创建多个具有相同的用户UserName My ApplicationUser模型有一个名为TenantID 我想要实现的
  • 将标量添加到特征矩阵(向量)

    我刚刚开始使用 Eigen 库 无法理解如何向所有矩阵成员添加标量值 假设我有一个矩阵 Eigen Matrix3Xf mtx Eigen Matrix3Xf Ones 3 4 mtx mtx 1 main cxx 104 13 error
  • 如何在c的case语句中使用省略号?

    CASE expr no commas ELLIPSIS expr no commas 我在c的语法规则中看到了这样的规则 但是当我尝试重现它时 int test float i switch i case 1 3 printf hi 它失
  • IEnumerable.Except 不起作用,那么我该怎么办?

    我有一个 linq to sql 数据库 非常简单 我们有 3 个表 项目和用户 有一个名为 User Projects 的连接表将它们连接在一起 我已经有了一个获得的工作方法IEnumberable
  • 使用taskkill停止Windows服务

    我需要帮助来使用 C 终止 Windows 服务 现在要终止该服务 请使用以下选项 从命令 sc queryex ServiceName 发现后PID服务的 taskkill pid 1234 exemple f 为了便于阅读 但如果您明白
  • 如何获取Windows批处理的父文件夹

    我正在编写一个批处理文件 我需要获取该bat文件的父文件夹 有可能吗 注意 我的意思是批处理文件的父文件夹 而不是调用该批处理的提示的当前目录 Thanks 批处理的父文件夹位于变量中 dp0位于 例子 echo off setlocal
  • C++ Streambuf 方法可以抛出异常吗?

    我正在尝试找到一种方法来获取读取或写入流的字符数 即使存在错误并且读 写结束时间较短 该方法也是可靠的 我正在做这样的事情 return stream rdbuf gt sputn buffer buffer size 但如果streamb
  • 矩阵到数组 C#

    这将是转换方阵的最有效方法 例如 1 2 3 4 5 6 7 8 9 into 1 2 3 4 5 6 7 8 9 in c 我在做 int array2D new int 1 2 3 4 5 6 7 8 9 int array1D new

随机推荐

  • 如何阻止会话

    当导航到 Facebook 社交网络时 我发现我可以打开 2 个帐户 1 个在 Firefox 中 另一个在 Internet Explorer 中 或者可能是多个帐户 这不太好 因为 Facebook 政策只允许同时打开一个会话 启动会话
  • 将 Devexpress GridControl 动态添加到 C# Windows 应用程序

    我想动态添加 Devexpress GridControl 在运行时我想显示过滤器行 另外 我希望在具有动态创建的 GridControl 的同一窗体上有一个按钮 单击该按钮时 它应该显示网格控件的过滤器对话框弹出窗口 提供的示例可以满足您
  • 读取 bash 中具有默认值的变量

    我需要在 bash 脚本中从终端读取一个值 我希望能够提供用户可以更改的默认值 Please enter your name Ricardo 在此脚本中 提示是 请输入您的姓名 默认值为 Ricardo 光标将位于默认值之后 有没有办法在
  • 使用 Ghostscript 作为 x11 查看器(gs x11 视口定位)?

    我已经知道了Ghostscript 前端 http en wikipedia org wiki Ghostscript Front ends观众 但我想知道如何gs本身可以用来查看PDF文档吗 我能得到的最接近的是明确指定x11窗口作为输出
  • 当有匹配时,使用 MERGE 后如何获取标识值?

    假设我有一个带有身份字段的表 如果记录尚不存在 我想在其中插入一条记录 在下面的示例中 我检查存储在 Field1 中的值是否已存在于表中 如果没有 我插入一条新记录 表的定义 MyTable MyTableId int Identity
  • 解码字符串中的“=C3=A4”

    我尝试了很多不同的方法来正确显示我的字符串 但我无法使其工作 这就是字符串 f C3 A4hrt German word f hrt 我的文件以 utf 8 编码 该文件在 Joomla 中加载 我都尝试过 geschichte gt in
  • Elastic BeanStalk EC2 实例的日志耗尽了整个磁盘空间

    我有一个 Elastic BeanStalk 环境 在 1 个 EC2 实例上运行我的应用程序 当我最初配置环境时 我添加了负载均衡器 但从那时起我将其设置为仅使用 1 个实例 在容器内运行的应用程序显然会产生大量日志 几天后它们会耗尽整个
  • 如何使用 React hook 检测 Next.js SSR 中的窗口大小?

    我正在使用 Next js 构建一个应用程序反应日期 https github com airbnb react dates 我有两个组件日期范围选择器组件和DayPickerRangeController成分 我想渲染日期范围选择器当窗口
  • 将动态二维数组传递给函数

    我正在用 C 编写一个 n x n 矩阵乘法程序 其中 a 和 b 是输入 x 是输出 a b 和 x 已分配 但我不确定如何正确地将指针传递给乘法函数 下面是我想做的事情的概述 void multiplication float a fl
  • 如何在不冒失去对称属性的风险的情况下用hibernate实现equals?

    在阅读了 再次 很久以前就应该这样做 正确实现 equals 和 hashcode 后 我得出了这些结论 这对我有用 如果是 JDK 7 之前的版本 更喜欢使用 Apache commons equalsbuilder 和 hashcode
  • Java内部类和私有字段的可见性

    直到今天我才意识到这一点 但在 Java 中 私有字段在内部类上并不是真正私有的 您可以实例化一个类并访问这些字段 就好像它们是公共的一样 我的问题是为什么这是用 Java 完成的 哪些设计决策导致了封装的破坏 允许这样做有什么好处吗 pu
  • 转换为同一个类时出现 ClassCastException

    我有 2 个不同的 Java 项目 其中一个有 2 个类 dynamicbeans DynamicBean2 and dynamic Validator 在另一个项目中 我动态加载这两个类并将它们存储在Object class Form C
  • 字符串仅包含给定的字符集

    我需要知道给定的字符串是否是有效的日期时间格式字符串 因为该字符串可能代表其他内容 我尝试了 DateTime ParseExact somedate ToString format format 认为它会因无效格式而呕吐 但事实并非如此
  • 从匿名函数作用域中提取数据

    由于此应用程序的复杂性 我需要包装 Facebook API 调用 如下所示 In main file read is always undefined var read fb connect readStream In fb wrappe
  • 算法帮忙!与其伙伴一起搜索字符串的快速算法

    我正在寻找一种用于在巨大字符串中进行搜索的快速算法 它是由数亿到数十亿个字符组成的生物体基因组序列 该字符串中仅存在 4 个字符 A C G T 并且 A 只能与 T 配对 而 C 与 G 配对 现在我正在搜索两个可以反向并行配对的子字符串
  • 在 Markdown 上使用 Pandoc 时,如何从 YAML 标头中更改 PDF 输出字体?

    是否有一种 内置 方法可以设置在 Pandoc YAML 标头中使用的不同字体 或多种字体 理想情况下 我会在 Markdown 文件的 YAML 标头中执行类似的操作 font MySansSerifFontName 我在 Linux U
  • jslint --edition=latest 意外的 ES6 功能。常量

    我正在尝试使用node jslinthttps github com reid node jslint https github com reid node jslint为了保持我的代码干净 我的 nodejs 脚本中有一个 const 但
  • 诺基亚 6300 出现应用程序错误

    我正在使用这段代码来连接 Servlet 尝试访问互联网时的移动应用程序 手机中出现以下消息 允许网络访问 是或否 如果我在诺基亚 6300 中对该消息单击 否 则会出现 应用程序错误 警告 并且会自动关闭该应用程序 我尝试过其他诺基亚手机
  • spring singleton bean 字段未填充

    我需要一个带有一些内部字段的服务 单例 比如待处理线程的列表 是的 所有内容都被编写为线程安全的 问题是 如果我 autowire这个 bean 的字段似乎是空的 调试我发现代理正确绑定到实例 字段CGLIB CALLBACK X正确链接到
  • 命名管道读取超时

    我正在尝试为命名管道的读取操作设置超时 为了从命名管道中读取数据 我使用ReadFile功能 我读到可以使用以下命令为此函数设置超时SetCommTimeouts函数 但当我尝试使用它时 出现系统错误 1 函数不正确 这是我的代码 这是客户