Лекция 10
ОБМЕН ДАННЫМИ МЕЖДУ ПРОЦЕССАМИ (продолжение)
Отображение файлов в память
Передача данных через дисковый файл
|
|||
|
|||
HANDLE CreateFile(
LPCTSTR lpFileName, // имя файла
DWORD dwDesiredAccess, // GENERIC_READ, GENERIC_WRITE
DWORD dwShareMode, // FILE_SHARE_WRITE, FILE_SHARE_READ,
// FILE_SHARE_DELETE
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // NULL – дескриптор файла не
// наследуется
DWORD dwCreationDisposition, //
DWORD dwFlagsAndAttributes, //
HANDLE hTemplateFile // Копирование аттрибутов шаблона
);
dwCreationDisposition:
CREATE_ALWAYS 2 Всегда создает новый файл.
CREATE_NEW 1 Создает новый файл только, если он не существует.
OPEN_ALWAYS 4 Всегда открывает новый файл.
OPEN_EXISTING 3 Открывает файл, если он существует.
TRUNCATE_EXISTING 5 Открывает файл и стирает его содержимое только, если файл существует.
DwFlagsAndAttributes:
FILE_ATTRIBUTE_ARCHIVE 32 (0x20) Архивный файл
FILE_ATTRIBUTE_ENCRYPTED 16384 (0x4000) Шифрованный файл
FILE_ATTRIBUTE_HIDDEN 2 (0x2) Скрытый файл
FILE_ATTRIBUTE_NORMAL 128 (0x80)
FILE_ATTRIBUTE_READONLY 1 (0x1) Файл только для чтения
…...........................................................................................................................................................
FILE_FLAG_DELETE_ON_CLOSE 0x04000000 Файл удаляется, когда закрыты все дескрипторы
FILE_FLAG_NO_BUFFERING 0x20000000 Файл открывается без системного кэширования
FILE_FLAG_OVERLAPPED 0x40000000 Файл открывается для асинхронного ввода/вывода
…...................................................................................................................................................
BOOL WINAPI WriteFile(
HANDLE hFile,
LPCVOID lpBuffer,
DWORD nNumberOfBytesToWrite,
LPDWORD lpNumberOfBytesWritten,
LPOVERLAPPED lpOverlapped //Асинхронный вывод и
//установка начальной позиции
);
BOOL WINAPI ReadFile(
HANDLE hFile,
LPVOID lpBuffer,
DWORD nNumberOfBytesToRead,
LPDWORD lpNumberOfBytesRead,
LPOVERLAPPED lpOverlapped
);
Отображение файла в память (проецирование файла на память)
|
||||
|
||||
HANDLE CreateFileMapping(
HANDLE hFile, // дескриптор файла
LPSECURITY_ATTRIBUTES lpAttributes, //
DWORD flProtect, //
DWORD dwMaximumSizeHigh, // high-order DWORD объекта отображения
DWORD dwMaximumSizeLow, // low-order DWORD объекта отображения
LPCTSTR lpName // имя объекта отображения
);
LPVOID MapViewOfFile(
HANDLE hFileMappingObject, // дескриптор объекта отображения
DWORD dwDesiredAccess, // моды доступа
DWORD dwFileOffsetHigh, // high-order DWORD смещения
DWORD dwFileOffsetLow, // low-order DWORD смещения
SIZE_T dwNumberOfBytesToMap // количество байт отображения
);
Передача данных через swap-файл
|
||
|
Упражнение: на основе технологии отображения файла в память создайте приложение, эмулирующее чат.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.