Программирование для Windows NT (том 2)



         

Приложение Fmap/Client - часть 2


  if(hFileMapping == NULL)

  {

    fprintf(stdout,"OpenFileMapping: Error %ld\n",

      GetLastError());

    getch();

    return 0;

  }

  // Выполняем отображение файла на память.

  // В переменную lpFileMap будет записан указатель на

  // отображаемую область памяти

  lpFileMap = MapViewOfFile(hFileMapping,

    FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0);

  // Если выполнить отображение не удалось,

  // выводим код ошибки

  if(lpFileMap == 0)

  {

    fprintf(stdout,"MapViewOfFile: Error %ld\n",

      GetLastError());

    getch();

    return 0;

  }

  // Цикл ввода. Этот цикл завершает свою работу,

  // когда пользователь нажимает клавишу <ESC>,

  // имеющую код 27

  while(TRUE)

  {

    // Проверяем код введенной клавиши

    chr = getche();

   

    // Если нажали клавишу <ESC>, прерываем цикл

    if(chr == 27)

      break;

    // Записываем символ в отображенную память,

    // доступную серверному процессу

    *((LPSTR)lpFileMap) = chr;

    // Устанавливаем объект-событие в отмеченное

    // состояние

    SetEvent(hEvent);

  }

 

  // После завершения цикла переключаем оба события

  // в отмеченное состояние для отмены ожидания в

  // процессе отображения и для завершения этого процесса

  SetEvent(hEvent);

  SetEvent(hEventTermination);

 

  // Закрываем идентификаторы объектов-событий

  CloseHandle(hEvent);

  CloseHandle(hEventTermination);

  // Отменяем отображение файла

  UnmapViewOfFile(lpFileMap);

  // Освобождаем идентификатор созданного

  // объекта-отображения

  CloseHandle(hFileMapping);

  return 0;

}

После создания объектов-событий, предназначенных для синхронизации работы с приложением Fmap/Server, функция main приложения Fmap/Client открывает отображение при помощи функции OpenFileMapping, как это показано ниже:

hFileMapping = OpenFileMapping(

  FILE_MAP_READ | FILE_MAP_WRITE, FALSE, lpFileShareName);




Содержание  Назад  Вперед