命名管道-SetNamedPipeHandleState做什么?

时间:2019-01-24 08:35:58

标签: named-pipes

在MSDN示例中

https://docs.microsoft.com/en-us/windows/desktop/ipc/named-pipe-client

客户端这样做

while (true)
{
pipe = CreateFile
if pipe is not invalid break
if GetLastError return
if !wait for pipe return
}

// The pipe connected; change to message-read mode. 
*** Why do I need to call this function? ****
dwMode = PIPE_READMODE_MESSAGE; 
fSuccess = SetNamedPipeHandleState( 
hPipe,    // pipe handle 
&dwMode,  // new pipe mode 
NULL,     // don't set maximum bytes 
NULL);    // don't set maximum time 

if ( ! fSuccess) 
{
   _tprintf( TEXT("SetNamedPipeHandleState failed. GLE=%d\n"), GetLastError() ); 
   return -1;
}

...现在将我们的消息写到管道

这是我的问题 1.这是做什么的?在该示例中,没有其他地方给SetNamedPipeHandleState提供了另一个值 2.没有它,我的应用程序可以很愉快地工作 3.在某些情况下,资源管理器将我的应用程序作为注册的应用程序启动。在这种情况下,它无法连接到服务器,因为它使用

error 87

    ERROR_INVALID_PARAMETER

87 (0x57)

The parameter is incorrect.

...但无需此调用即可使用。我不想调用此函数。 (!)

有什么建议吗?

0 个答案:

没有答案