Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторная работа №5
.cpp#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream.h>
void main(){
int choice;
do{
system("cls");
cout<<"1. Create File Mapping Object\n";
cout<<"2. Map View Of File\n";
cout<<"3. Unmap View Of File\n";
cout<<"4. Close Handle\n";
cout<<"5. Exit\n";
cout<<"Enter your choice: ";
cin>>choice;
switch(choice){
case 1: HANDLE fileMapping;
LPSECURITY_ATTRIBUTES fileMappingAttributes;
DWORD protect;
DWORD maximumSizeHigh;
DWORD maximumSizeLow;
TCHAR name[255];
//file
DWORD desiredAccess;
DWORD shareMode;
LPSECURITY_ATTRIBUTES securityAttributes;
DWORD creationDisposition;
DWORD flagsAndAttributes;
HANDLE templateFile;
HANDLE file;
TCHAR fileName[255];
//
desiredAccess=(GENERIC_READ|GENERIC_WRITE) ;
shareMode=0;//exclusive access to the file
securityAttributes=0;//default security descriptor
flagsAndAttributes=0;
templateFile=0;//no template file
creationDisposition=OPEN_EXISTING;//open
cout<<"Input file name: ";
cin>>fileName;
file = CreateFile(fileName,desiredAccess,shareMode,securityAttributes,creationDisposition,flagsAndAttributes,templateFile);
if(file==INVALID_HANDLE_VALUE){
cout<<"The specified file does not exists!\n"<<endl;
getch();
}
else{
fileMappingAttributes = 0;
protect = PAGE_READWRITE;
maximumSizeHigh = 0;
maximumSizeLow = 0;
cout<<"Input the name of the mapping object: ";
cin>>name;
fileMapping = CreateFileMapping(file, fileMappingAttributes, protect, maximumSizeHigh, maximumSizeLow, name);
if(GetLastError() == ERROR_ALREADY_EXISTS){
cout<<"Object already exists!";
getch();
}
else if(fileMapping == NULL){
cout<<"Error";
getch();
}
}
break;
case 2: LPVOID mapViewAddr;//starting address of the mapped view
DWORD fileOffsetHigh;
DWORD fileOffsetLow;
DWORD numberOfBytesToMap;
char* view;
desiredAccess = FILE_MAP_WRITE;
numberOfBytesToMap = 0;//the entire file is mapped
fileOffsetHigh = 0;// sysInfo.dwAllocationGranularity*10;
fileOffsetLow = 0;
mapViewAddr = MapViewOfFile( fileMapping, desiredAccess, fileOffsetHigh, fileOffsetLow, numberOfBytesToMap );
if(!mapViewAddr){ cout<<"Error"<<endl;exit(1);}
else printf("Starting address of the mapped view: %x", mapViewAddr);
view=(char*)mapViewAddr;
cout<<" "<<view<<endl;
getch();
break;
case 3: if(!UnmapViewOfFile(mapViewAddr)){
cout<<"Error"<<endl;
getch();
}
break;
case 4: if(!CloseHandle(file)){
cout<<"Error1";
getch();
}
if(!CloseHandle(fileMapping)){
cout<<"Error2";
getch();
}
}
}while(choice!=5);
}
Соседние файлы в предмете Операционные системы