我有两个可以通过win32 IPC APIs(CreateFileMapping()等)进行通信的C应用程序。
我需要用Python应用程序替换客户端应用程序。
我已经在Python侧尝试了以下库:
import win32file, win32api
但是这些库没有CreateFileMapping()函数。
我还尝试了mmap.mmap()函数,但我无法观察到任何通信。
我也尝试过在双方都使用"Global\SharedBuffer"和"SharedBuffer"作为共享内存名称。
我需要用Python应用程序替换客户端应用程序。
我已经在Python侧尝试了以下库:
import win32file, win32api
但是这些库没有CreateFileMapping()函数。
我还尝试了mmap.mmap()函数,但我无法观察到任何通信。
import mmap
sharedMemory = mmap.mmap(0, 512, "Local\\SharedBuffer")
sharedMemory.write("AB")
我也尝试过在双方都使用"Global\SharedBuffer"和"SharedBuffer"作为共享内存名称。
#define SHARED_BUFFER_NAME ((LPCSTR)L"Local\\SharedBuffer")
HANDLE bufferHandle = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, 512, SHARED_BUFFER_NAME);
// Create a map for accessing Shared Buffer
sharedBuffer = (char*)MapViewOfFile(bufferHandle, FILE_MAP_ALL_ACCESS, 0, 0, SHARED_BUFFER_SIZE);
memset(sharedBuffer, 0, SHARED_BUFFER_SIZE);
while (sharedBuffer[0] == 0);
while (1);
对我来说,win32 API 不是必需的。在 Windows 平台上,我只需要一个简单的 C 和 Python 应用程序之间的共享缓冲区。
谢谢。
const wchar_t*
强制转换为const char*
? - Brandon#define SHARED_BUFFER_NAME ((LPCSTR)L"Local\\SharedBuffer")
它应该是LPCWSTR
,但你将它强制转换为了const char*
,也就是LPCSTR
。 - Brandon