나는 다음과 같은 코드 조각이 :설정 명명 된 파이프 메시지 모드
//...
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)를 반환합니다. 그 외에는 파이프가 잘 작동합니다. 데이터를 읽고 쓸 수 있습니다. 물론 메시지 모드에서 작동하지 않는 것을 제외하고는 - 예를 들어. 하나의 ReadFile 호출로 두 개의 WriteFile 메시지 호출 내용을 읽습니다. 여기서 내가 뭘 잘못하고 있니?
나는 파이프가 메시지 모드에서 Hans Passant (삭제 된)의 답변에 주석으로 작성되었다고 이미 썼습니다. 나는 FileAccess.ReadWrite가 GENERIC_READ | GENERIC_WRITE와 같은 것으로 번역 할 것이라고 생각했지만 (당신이 지적했듯이) 그 경우는 아니었다. –