管道createnamepipe 亦凉 2022-08-20 14:28 105阅读 0赞 HANDLE CreateNamedPipe( LPCTSTR lpName, // pipe name DWORD dwOpenMode, // pipe open mode DWORD dwPipeMode, // pipe-specific modes DWORD nMaxInstances, // maximum number of instances DWORD nOutBufferSize, // output buffer size DWORD nInBufferSize, // input buffer size DWORD nDefaultTimeOut, // time-out interval LPSECURITY\_ATTRIBUTES lpSecurityAttributes // SD ); 创建命名管道和打开已经存在的命名管道,其中lpName为管道名称,dwOpenMode为创建方式,可以是下面值的组合: PIPE\_ACCESS\_INBOUND:管道只能用作接收数据。 PIPE\_ACCESS\_OUTBOUND:管道只能用作发送数据。 PIPE\_ACCESS\_DUPLEX:管道既可以发送也可以接收数据。(上面这三个值只能够取其中一个) FILE\_FLAG\_WRITE\_THROUGH:管道用于同步发送和接收数据,只有在数据被发送到目标地址时发送函数才会返回,如果不设置这个参数那么在系统内部对于命名管道的处理上可能会因为减少网络附和而在数据积累到一定量时才发送,并且对于发送函数的调用会马上返回。 FILE\_FLAG\_OVERLAPPED:管道可以用于异步输入和输出,异步读写的有关方法和文件异步读写是相同的。 dwPipeMode指定管道类型,可以是下面值的组合: PIPE\_TYPE\_BYTE:数据在通过管道发送时作为字节流发送,不能与PIPE\_READMODE\_MESSAGE共用。 PIPE\_TYPE\_MESSAGE:数据在通过管道发送时作为消息发送,不能与PIPE\_READMODE\_BYTE共用。 PIPE\_READMODE\_BYTE:在接收数据时接收字节流。 PIPE\_READMODE\_MESSAGE:在接收数据时接收消息。 PIPE\_WAIT:使用等待模式,在读,写和建立连接时都需要管道的另一方完成相应动作后才会返回。 PIPE\_NOWAIT:使用非等待模式,在读,写和建立连接时不需要管道的另一方完成相应动作后就会立即返回。 nMaxInstances为管道的的最大数量,在第一次建立服务器方管道时这个参数表明该管道可以同时存在的数量。PIPE\_UNLIMITED\_INSTANCES表明不对数量进行限制。nOutBufferSize和nInBufferSize表示缓冲区的大小。nDefaultTimeOut表示在等待连接时最长的等待时间(以毫秒为单位),如果在创建时设置为NMPWAIT\_USE\_DEFAULT\_WAIT表明无限制的等待,而以后服务器方的其他管道实例也需要设置相同的值。lpSecurityAttributes为安全属性,一般设置为NULL。如果创建或打开失败则返回INVALID\_HANDLE\_VALUE。可以通过GetLastError得到错误。
还没有评论,来说两句吧...