- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 win32api,我希望下面的程序创建两个进程并创建一个文件映射。 (使用 C++)
我不知道我应该在 Handle CreateFileMapping(...
.我试过:
PROCCESS_INFORMATION hfile.
此外,第一个参数应该是INVALID_HANDLE_VALUE
,但我不知道将什么写入MapViewOfFile
作为第一个参数。
第一个程序的代码:(我没有编写 2.&3。因为即使是第一个也不起作用)
//Initial process creates proccess 2 and 3
#include <iostream>
#include <windows.h>
#include <string>
using namespace std;
void main()
{
bool ret;
bool retwait;
bool bhandleclose;
STARTUPINFO startupinfo;
GetStartupInfo (&startupinfo);
PROCESS_INFORMATION pro2info;
PROCESS_INFORMATION pro3info;
//create proccess 2
wchar_t wcsCommandLine[] = L"D:\\betriebssystemePRA2pro2.exe";
ret = CreateProcess(NULL, wcsCommandLine, NULL, NULL, false, CREATE_NEW_CONSOLE, NULL,
NULL, &startupinfo, &pro2info);
if (ret==false){
cout<<"Prozess konnte nicht erzeugt werden. Fehler:"<<GetLastError();
ExitProcess(0);
}
//***************
//create process3
wchar_t wcs2CommandLine[] = L"D:\\betriebssystemePRA2pro3.exe";
ret = CreateProcess(NULL, wcs2CommandLine, NULL, NULL, false, CREATE_NEW_CONSOLE, NULL,
NULL, &startupinfo, &pro3info);
if (ret==false){
cout<<"Prozess konnte nicht erzeugt werden. Fehler:"<<GetLastError();
ExitProcess(0);
}
//***************
//create mapping object
// program2:
PROCESS_INFORMATION hfile;
CreateFileMapping( //erzeugt filemapping obj returned ein handle
INVALID_HANDLE_VALUE, //mit dem handle-->kein seperates file nötig
NULL,
PAGE_READWRITE, //rechte (lesen&schreiben)
0,
5,
L"myfile"); //systemweit bekannter name
LPVOID mappointer = MapViewOfFile( //virtuelle speicherraum, return :zeiger, der auf den bereich zeigt
INVALID_HANDLE_VALUE, //handle des filemappingobj.
FILE_MAP_ALL_ACCESS,
0,
0,
100);
//wait
cout<<"beliebige Taste druecken"<<endl;
cin.get();
//close
bool unmap;
unmap = UnmapViewOfFile (mappointer);
if (unmap==true)
cout<<"Unmap erfolgreich"<<endl;
else
cout<<"Unmap nicht erfolgreich"<<endl;
bhandleclose=CloseHandle (INVALID_HANDLE_VALUE);
cout<<bhandleclose<<endl;
bhandleclose=CloseHandle (pro2info.hProcess);
bhandleclose=CloseHandle (pro3info.hProcess);
ExitProcess(0);
}
最佳答案
MapViewOfFile 获取 CreateFileMapping 返回的句柄:
HANDLE hFileMapping = CreateFileMapping(...);
LPVOID lpBaseAddress = MapViewOfFile(hFileMapping, ...);
关于c++ - CreateFileMapping MapViewOfFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2623165/
如果我在同一进程中为同一文件创建 2 个单独的映射,指针是否会共享? 换句话说: LPCTSTR filename = //... HANDLE file1 = CreateFile(filename
如果我在同一进程中为同一文件创建 2 个单独的映射,指针是否会共享? 换句话说: LPCTSTR filename = //... HANDLE file1 = CreateFile(filename
所以我试图将一个整数 a =3 从服务器端传递到客户端。问题是,当我在客户端执行消息 printf 时,显示的值不是 3,而是一个随机数(某些值)就像 19923)。我试图在服务器端通过值(&a)传递
我正在尝试使用 VS2010 在 Windows 上对文件进行内存映射。我在 DLL 中执行此操作。DLL 的第一个实例可以很好地映射文件。同一进程中的第二个实例导致 *ppvData = ::Map
我正在尝试通过共享内存为学校作业实现 IPC。我创建了一个名为 SharedMemoryBuffer 的类来处理创建文件映射和 View 。 我的 Init() 函数如下所示: BYTE * Shar
使用 win32api,我希望下面的程序创建两个进程并创建一个文件映射。 (使用 C++) 我不知道我应该在 Handle CreateFileMapping(....我试过: PROCCESS_IN
早上好,MapViewOfFile 有可能返回同一个地址两次吗?但是,UnmapViewOfFile 在必须取消映射同一地址两次时会出现错误。我们收到错误 487:地址无效。下面是一些伪代码,展示了我
我有一些使用 MapViewOfFile 共享数据的程序,但我遇到了奇怪的访问冲突,这似乎是由于访问映射文件数据造成的。 一些共享数据有指针,但是这些指针只被一个进程设置和使用,而是由进程内的多个线程
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Why won't the loader load at the desired location “Map
我基本上试图将我的结构转换或复制到我的其他进程部分 View ,但我不断收到错误 C2760: syntax error: unexpected token 'identifier', expecte
我想将 MapViewOfFile 的返回值(据我所知是指向 void 的指针)“强制转换”到我自己的类,以便我能够使用该对象。我知道内存的结构。 headerSize 位于字节号 4 到字节号 8,
如何使用 CreateFileMapping 和 MapViewOfFile 将共享内存分配给静态缓冲区,如下所示。 #pragma data_seg(".ABC") __declspec (dlle
我正在尝试使用需要 DWORD 的函数。 这些是规范: dwFileOffsetHigh [in] A high-order DWORD of the file offset where the vi
您好 StackOverflow 的用户。 我一直在使用 C++ 中 Win32 API 的 MapViewOfFile,我是它的新手,但我一直在尝试为 mapview 文件创建一个信号量,所以一个实
下午好,众所周知,在处理大文件时无法映射到 Win32 中的一个 View ,创建仔细映射的代码并根据需要取消映射文件区域。 pastebin 网址是: 我创建并测试了一个处理大文件的 cMemory
``我正在努力做我的家庭作业,但我无法继续,需要你的帮助。我有两个使用相同文件 (log.txt) 的进程。当我尝试同时写一些东西时,它会覆盖并且只有一个进程写入 txt。 这是我的创作过程, ent
开发游戏(PT 中的“jogo”), 服务器最多可以同时运行 5 个游戏, 客户端将通过映射内存访问。 这就是我所拥有的: 服务器: #define MAX_JOGOS 5 typedef struc
以下代码是否会将文件中的数据加载到系统内存中,以便访问结果指针永远不会阻塞线程? auto ptr = VirtualLock(MapViewOfFile(file_map, FILE_MAP_REA
我有一个非常大的文件,我需要分成小块读取它,然后处理每一 block 。我正在使用 MapViewOfFile 函数在内存中映射一 block ,但在阅读第一部分后我无法阅读第二部分。当我尝试映射它时
只是想知道我是否正在像这样在 Windows 平台上创建共享内存阵列: HANDLE hFile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAG
我是一名优秀的程序员,十分优秀!