gpt4 book ai didi

c++ - CreateFileMapping MapViewOfFile

转载 作者:行者123 更新时间:2023-11-28 01:11:46 25 4
gpt4 key购买 nike

使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com