我想写入共享内存,然后将内容转储到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

10-04 23:15