Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
slavikk07
3 / 3 / 0
Регистрация: 27.02.2013
Сообщений: 64
#1

Проекция файла - C++

21.12.2013, 15:28. Просмотров 533. Ответов 2
Метки нет (Все метки)

Здравствуйте!
Написать две программы. Первая программа создает проекцию файла в памяти и выделяет для нее блок адресов размером 8 MB. Вторая программа подключается к уже существующей проекции, записывает в нее данные, и отключается от проекции. Первая программа читает данные из проекции, выводит их на печать, закрывает проекцию.
Программы сделал!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <stdio.h>
#include <process.h>
#include <windows.h>
 
int main(void)
{
  HANDLE      hMapFile, hFile, event;
  char        *map_data;
  int i;
 
  hFile = CreateFile("Mydata.dat", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ,
                     NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
 
  hMapFile = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, 0,   "MapLab8");
  if (hMapFile != NULL && GetLastError() == ERROR_ALREADY_EXISTS) {
    printf("FileMapping handle %p exist!", hMapFile);
    CloseHandle(hMapFile);
    exit(1);
  }
  if(hMapFile == NULL) {
    printf("FileMapping handle not created!");
    exit(1);
  }
 
  event = CreateEvent(NULL, FALSE, FALSE, "MyEvent");
  if (event == NULL){
      printf("CreateEvent Failed!");
      exit(1);
  }
  WaitForSingleObject(event, INFINITE);
 
  map_data = (char *) MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, 8*1024*1024);
  if(map_data == NULL) {
    printf("Can't lock mapzone!");
    exit(1);
  }
  for (i = 0; i < 8*1024*1024; i++) printf("%c", map_data[i]);
  
  UnmapViewOfFile(map_data);
  CloseHandle(hMapFile);
  CloseHandle(hFile); CloseHandle(event);
  return 0;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>
#include <process.h>
#include <windows.h>
 
int main(void)
{
  HANDLE      hMap, event;
  char        *map_data;
  
  hMap = OpenFileMapping (FILE_MAP_ALL_ACCESS, FALSE, "MapLab8");
  if (hMap == NULL){
      printf ("Proection not exist!");
      exit(1);
  }
 
  event = OpenEvent(EVENT_ALL_ACCESS, FALSE, "MyEvent");
  if (event == NULL){
      printf("OpenEvent Failed!");
      exit(1);
  }
 
  map_data = (char*) MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 8*1024*1024); //сюда нужно написать
  if (map_data == NULL){
     printf("Can't lock mapzone!");
     exit(1);
  }
  strcpy (map_data, "Hie! It's me - slave.c\n");
  
  SetEvent(event);
  UnmapViewOfFile(map_data);
  CloseHandle(hMap); CloseHandle(event);
  return 0;
}
Как начать чтение файла, с 16гб, что нужно написать в место нулей в строчке с функцией MapViewOfFile... Там нужно только написать что нужно вместо нулей и всё)

СПАСИБО!

Добавлено через 1 минуту
Вопрос по теории! Код изменять не нужно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2013, 15:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проекция файла (C++):

Проекция файла! - C++
Как доказать преподавателю: что я сделал для того что бы не было гонок программ??? Что та или иная программа не выполняется первой или не...

Существует ли проекция точки? - C++
Даны абсцисса и аппликата точки и значения типа величин a, b, c и d из уравнения плоскости a*x+b*y+c*z=d. Всё дано числами типа double....

Проекция точек на плоскость - C++
Привет форумчане! Есть 3D плоскость, заданна тремя точками: QVector3D p1 = QVector3D(12.0, 0.0, 12.0); QVector3D p2 =...

Сформировать два текстовых файла из целых чисел. Записать в третий файл минимальный элемент первого файла и максимальный элемент второго файла - C++
Тема: работа с текстовыми файлами с использованием стандартных функций библиотеки stdio.h Нужно составить программу: Сформировать два...

Не работает проекция файла - C++ WinAPI
Привет всем. Проблема такая: COM порт принимает байты, и поток пишет их в файл. Если в функции write() использовать дескриптор...

Проекция 3Д на 2Д - Геометрия
Ну извиняйте Много прогуливал в школе :-http://www.enlight.ru/faq3d/articles/11.htm :) Добавлено через 1 час 34 минуты Вот еще...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Убежденный
Системный программист
Эксперт С++
15506 / 7004 / 1106
Регистрация: 02.05.2013
Сообщений: 11,440
Завершенные тесты: 1
21.12.2013, 15:49 #2
MapViewOfFile в качестве указателя файловой позиции принимает 64-битное число,
разбитое (видимо, для удобства) на два 32-битных DWORD-а, старший и младший.
16 ГБ - это в шестнадцатеричном виде 0x400000000, значит старший DWORD равен
четырем, а младший нулю.
slavikk07
3 / 3 / 0
Регистрация: 27.02.2013
Сообщений: 64
21.12.2013, 22:16  [ТС] #3
СПАСИБО!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.12.2013, 22:16
Привет! Вот еще темы с ответами:

Проекция раздела - Безопасность
Доброго времени суток! Появилос немного времени и решил вспомнить детство и установить себе сервер. В результате у меня создалась...

Аксонометрическая проекция - AutoCAD
Доброго времени суток! Необходимо построить аксонометрическую проекцию небольшой детальки (новичек в автокаде, да и с пространственным...

Проекция точки - Геометрия
Помогите пожалуйста решить, нужно Найти проекцию точки А , на прямую образованную пересечением плоскостей x+2y+37=12 и x-y=0

Проекция и перпендикуляр - Геометрия
Добрый день! Пожалуйста, объясните последовательно, как решается такое задание: Найти проекцию и перпендикуляр вектора (5,-2,4,0,3)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru