函数原型

BOOL SetNamedPipeHandleState(HANDLE  hNamedPipe,LPDWORD lpMode,LPDWORD lpMaxCollectionCount,LPDWORD lpCollectDataTimeout
);

函数参数
hNamedPipe
此参数可以是CreateNamedPipe函数返回的管道服务器端的句柄,也可以是CreateFile函数返回的管道客户端的句柄。对于只读或读/写管道,句柄必须具有对命名管道的泛型读/写访问权限,或者对于只读管道,句柄必须具有泛型读/写属性访问权限。

lpMode
新的管道模式。模式是读取模式标志和等待模式标志的组合。如果未设置模式,则此参数可以为空。指定下列模式之一:

PIPE_READMODE_BYTE 数据以字节流的形式从管道中读取。如果未指定读取模式标志,则此模式为默认模式。
PIPE_READMODE_MESSAGE 数据作为消息流从管道中读取。如果为字节类型管道指定了此标志,则函数将失败。

可以指定下列等待模式之一:

PIPE_WAIT 已启用阻止模式。如果未指定等待模式标志,则此模式为默认模式。当在ReadFile、WriteFile或ConnectNamedPipe函数中指定阻塞模式管道句柄时,只有在有要读取的数据、所有数据都已写入或客户端已连接时,操作才会完成。使用此模式可能意味着在某些情况下无限期等待客户端进程执行操作。
PIPE_NOWAIT 非阻塞模式已启用。在这种模式下,ReadFile、WriteFile和ConnectNamedPipe总是立即返回。请注意,为了与Microsoft LAN Manager 2.0版兼容,支持非阻塞模式,不应用于使用命名管道实现异步输入和输出(I/O)。

lpMaxCollectionCount
传输到服务器之前在客户端计算机上收集的最大字节数。如果指定的管道句柄位于命名管道的服务器端,或者客户端和服务器进程位于同一台计算机上,则此参数必须为空。如果客户端进程在创建句柄时在CreateFile函数中指定文件标志写入标志,则忽略此参数。如果未设置集合计数,则此参数可以为空。

lpCollectDataTimeout
远程命名管道通过网络传输信息之前可以经过的最长时间(毫秒)。如果指定的管道句柄位于命名管道的服务器端,或者客户端和服务器进程位于同一台计算机上,则此参数必须为空。如果客户端进程在创建句柄时在CreateFile函数中指定了FILE_FLAG_WRITE_THROUGH标志,则忽略此参数。如果未设置集合计数,则此参数可以为空。

函数返回值
如果函数成功,则返回值为非零。
如果函数失败,则返回值为零。要获取扩展错误信息,请调用GetLastError。

函数功能
设置指定命名管道的读取模式和阻塞模式。如果指定的句柄位于命名管道的客户端,并且命名管道服务器进程位于远程计算机上,则该函数还可以用于控制本地缓冲。

SetNamedPipeHandleState相关推荐

  1. 进程间通信:同步双工管道

    因为工作需要,需要设计出一个双工的IPC.(转载请指明出处)在一番比较后,我发现管道是比较符合我们的需求的.但是我们需求要求管道的对方是可信任的,而在vista以下系统是没有GetNamedPipeC ...

  2. 使用命名管道的OVERLAPPED方式实现非阻塞模式编程 .

    命令管道是进程间通讯的一种常用方式,对于命令管道的介绍可以参考别的资料和书籍,这里推荐一个<VC++下命名管道编程的原理及实现>这篇博文,写得比较清楚.但是都是介绍了阻塞模式的编程,我这里 ...

  3. 在Python中对子进程进行非阻塞读取

    我正在使用子流程模块来启动子流程并连接到其输出流(stdout). 我希望能够在其stdout上执行非阻塞读取. 有没有一种方法可以使.readline成为非阻塞状态,或者在调用.readline之前 ...

  4. win7编程接口的一些变化

    原文链接:http://www.nirsoft.net/articles/windows_7_kernel_architecture_changes.html Windows 7 introduces ...

  5. 读书笔记之《Windows内核原理与实现》

    最近学习<Windows内核原理与实现>发现其博大精深,粗略过了一遍,很多东西比较茫然,看书之余把书中涉及的函数,结构,全局变量的所在页数总结出来,便于以后查阅. 由于半自动半手工,难免有 ...

  6. 管道实现进程间通讯 、WaitNamedPipe

    一.管道实现进程间通讯 主要的理论知识 1.什么是管道以及分类 管道是两个头的东西,每一个头各连接一个进程或者同一个进程的不同代码,依照管道的类别分有两种管道,匿名的和命名的:依照管道的传输方向分也能 ...

  7. KERNEL32.DLL中可供调用的API函数列表

      KERNEL32.DLL中可供调用的API函数列表,如下: ActivateActCtx AddAtomA AddAtomW AddConsoleAliasA AddConsoleAliasW A ...

  8. CEF:JavaScript 调用 C++ 函数 Demo(VS2013)

    上一篇 CEF:C++ 调用 JavaScript 函数 Demo(VS2013)讲了外部 C++ 代码如何调用网页内 JavaScript 函数的问题,这一篇换个方向,说一说网页内 JavaScri ...

  9. (转)C++进程间和线程间通信

     进程间和线程间通信(原文章出自http://blog.sina.com.cn/s/blog_4a93ccea0102ea1w.html) 1.许多程序和应用一起工作达到某个共同目的的任务集.每个 ...

  10. WindowsAPI函数大全

    Api函数名 函数说明 WIN16可用 WIN95可用 WINNT可用 AbortDoc 终止一项打印作业 是 是 是 AbortPath 终止或取消DC中的一切路径 否 是 是 AbortPrint ...

最新文章

  1. python1000个常用代码-比较了1000多个Python开源项目,精选出这34个
  2. Python垃圾回收机制详解
  3. 关于枚举,enum、Enum、EnumSet、RegularEnumSet、JumboEnumSet
  4. Linux下CURL设置请求超时时间
  5. php和mysql两种不同方式的分割字符串和类型转换
  6. 福音!微信个人公众号可以改名了!
  7. mysql union_Mysql union和union all用法
  8. springboot2.x 整合redis集群的几种方式
  9. 存储过程中“ 警告: 聚合或其他 SET 操作消除了 Null 值” 导致错误的解决
  10. How AI Is Transforming Medical Imaging
  11. Docker容器中bash: ip: command not found
  12. 机器学习 泛化误差和偏差-方差
  13. 【pyqt5学习】——添加菜单栏动作action,给动作触发triggered绑定事件
  14. 《动手学深度学习》(PyTorch版)代码注释 - 55 【Text_sentiment_classification(textCNN)】
  15. Azure- 使用 Helm 管理应用程序和包
  16. ds18b20驱动程序Linux,基于linux下的ds18b20驱动程序的编写
  17. sharing-jdbc分库分表方案设计
  18. 十年测试老鸟聊聊移动端兼容性测试
  19. 初学者javaweb基本使用方法
  20. 异常检测之孤立森林算法详细解释且配上代码运行实例

热门文章

  1. Codeforces Round #232 (Div. 1) 解题报告
  2. eclipse tomcat cannot create a server using the...
  3. 在Flash中使影片剪辑等候一段时间播放
  4. 如何使用ES6模块export,export default和import
  5. JAVA开发的APP怎么上传_苹果App Store上传应用流程详解
  6. PHPExcel存放多个sheet报错: Invalid parameters passed.
  7. Rabbit MQ 延迟插件rabbitmq_delayed_message_exchange的安装
  8. OFFICE使用技术:让几个自选图形间距相等
  9. 有效解决办法:marven:Fatal error compiling: 无效的目标发行版: 11
  10. 2021-3测试通过:eclipse安装svn插件