我試圖在VC++ DLL和C#應用程序之間進行通信。我已經閱讀了大量的資源和材料,我試圖用MemoryMapped文件和Pipes來做,但不幸的是我無法工作。在Windows 7中使用MemoryMappedFiles或命名管道在VC++和C#中的進程間通信
下面是如何創建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上以相同的用戶帳戶運行。我在這裏錯過了什麼?
演員們都是壞人,好嗎? – 2011-03-24 21:04:23