我有以下代码:
//...
SafeFileHandle handle = NativeMethods.CreateFile(pipeName, FileAccess.ReadWrite, FileShare.None, IntPtr.Zero, FileMode.Open, FileAttributes.Normal, IntPtr.Zero);
if (handle.IsInvalid)
continue;
uint mode = (uint)PipeMode.ReadModeMessage; // mode==2
bool result = NativeMethods.SetNamedPipeHandleState(handle, ref mode, IntPtr.Zero, IntPtr.Zero);
//...
问题是对“SetNamedPipeHandleState”的调用失败:结果为假,GetLastError() 返回 5 (ERROR_ACCESS_DENIED)。除此之外,管道工作得很好——我可以读写数据。当然,除了它不在消息模式下工作 - 例如。两个 WriteFile 消息调用的内容由单个 ReadFile 调用读取。我在这里做错了什么?