我想写入共享内存,然后将内容转储到win32 api中的文件中。
目前,我有以下代码:
HANDLE hFile, hMapFile;
LPVOID lpMapAddress;
hFile = CreateFile("input.map",
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
hMapFile = CreateFileMapping(hFile,
NULL,
PAGE_READWRITE,
0,
0,
TEXT("SharedObject"));
lpMapAddress = MapViewOfFile(hMapFile,
FILE_MAP_ALL_ACCESS,
0,
0,
0);
sprintf(MapViewOfFile, "<output 1>");
UnmapViewOfFile(lpMapAddress);
CloseHandle(hFile);
CloseHandle(hMapFile);
但是,第31行(sprintf调用)给出了错误:
error: cannot convert `void*(*)(void*, DWORD, DWORD, DWORD, DWORD)'
to `char*' for argument `1' to `int sprintf(char*, const char*, ...)'
我尝试过将lpMapAddress强制转换为LPTSTR,但没有任何效果。我究竟做错了什么?还是有更好的方法呢?
最佳答案
在里面
sprintf(MapViewOfFile, "<output 1>");
行,您要的是
lpMapAddress
,而不是MapViewOfFile
。或精确地说是(char*)lpMapAddress
。