我正在尝试在 VC++ DLL 和 C# 应用程序之间进行通信。我已经阅读了大量的资源和材料,我尝试使用 MemoryMapped 文件和管道来完成它,但不幸的是我无法开始工作。
以下是我创建用 C# 编写的“接收器”/服务器部分的方法:
// MemoryMappedFile approach
mmf = MemoryMappedFile.CreateNew(
@"myMMF",
1024*1024,
MemoryMappedFileAccess.ReadWriteExecute);
// Named Pipe approach
NamedPipeServerStream pipe = new NamedPipeServerStream("myPipe", PipeDirection.InOut);
这是 VC++ 对应的:
// MMF approach
HANDLE fmap = ::OpenFileMapping(FILE_MAP_READ | FILE_MAP_WRITE, false, (LPCWSTR)"myMMF");
if(fmap == NULL)
return errorMsg();
// Named pipe
HANDLE pipe = ::CreateFile((LPCWSTR)"\\\\.\\pipe\\myPipe", GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
if(pipe == INVALID_HANDLE_VALUE)
return errorMsg();
我的问题是,无论我使用哪种方法,打开调用总是返回“找不到文件”错误。在我的 64 位 Windows 7 上,这两个应用程序都在同一个用户帐户下运行。我在这里缺少什么?