在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.
...但无需此调用即可使用。我不想调用此函数。 (!)
有什么建议吗?