等效Win32 API調用是這樣的:
SECURITY_DESCRIPTOR sd;
InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION);
SetSecurityDescriptorDacl(&sd, TRUE, NULL, FALSE);
SECURITY_ATTRIBUTES sa;
sa.nLength = sizeof(sa);
sa.lpSecurityDescriptor = &sd;
sa.bInheritHandle = FALSE;
HANDLE hMapping = CreateFileMapping(INVALID_HANDLE_VALUE, &sa, PAGE_READWRITE, 0, 10000, TEXT("ABC"));
if (!hMapping) ... // error handling
char *buffer = (char*) MapViewOfFile(hMapping, FILE_MAP_WRITE, 0, 0, 10000);
if (!buffer) ... // error handling
// use buffer as needed...
UnmapViewOfFile(buffer);
CloseHandle(hMapping);
這兩個應用程序必須調用CreateFileMapping()
具有相同lpName
值,以獲得在系統內核訪問相同的映射對象。無論哪個應用程序首先調用CreateFileMapping()
都會創建該對象,而第二個應用程序將獲取現有對象的句柄。然後,MapViewOfFile()
將調用進程中的內存訪問映射到該對象。通過這種方式,兩個應用程序都可以使用共享內存。當一個應用程序將數據寫入對象時,另一個應用程序將會看到它。
什麼是實際問題? –
我們是否應該知道'CreateFileMapping'和'MapViewOfFile'是什麼? –
@JonathanMee:WinAPI的功能:[CreateFileMapping](https://msdn.microsoft.com/en-us/library/windows/desktop/aa366537(v = vs.85).aspx)和[MapViewOfFile](https ://msdn.microsoft.com/en-us/library/windows/desktop/aa366761(v = vs.85)的.aspx)。 OP:你的目標是什麼,分享什麼?你能否提供更多信息? –