Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
0626114503_03 - Конспект лекций.doc
Скачиваний:
10
Добавлен:
21.04.2019
Размер:
554.5 Кб
Скачать

Ссобытия

HANDLE CreatEveut(LPSECURITY ATTRIBUTES ProcAttr,

BOOL ManualReset,

BOOL InitState,

LPCTSTR Name)

  1. параметры безопасности

  2. есть два типа событий: ручной и автоматический сброс

  3. начальное состояние события

  4. системное имя объекта

BOOL [Set/Reset]Eveut(HANDLE h)

установить / сбросить событие.

Способы взаимодействия процессов.

  1. Общие файлы

HANDLE CreateFile(

LPCTSTR Name, // имя файла

DWORD DesiredAccess, //требуемый режим доступа

DWORD SharedMode,//какой режим совместного использования //мы допускаем: 0 – никакого доступа, FILE_SHARE_READ – параллельное чтение,

//FILE_SHARE_WRITE – писать, FILE_SHARE_DELETE – удалить

LPSECURITY ATTRIBUTES ProcAttr,//атрибуты безопасности

DWORD CreationFlag,//что мы хотим сделать с физическим //файлом на диске: OPEN_EXISTING – открыть существующий файл, //CREATE_ALWAYS – создавать всегда, CREATE_NEW, OPEN_ALWAYS, //TRUNCATE_ EXISTING – если файл есть, он будет открыт – содержимое //уничтожено, если нет, то нет.

DOWRD FlagsAttr,

//FILE_ATTRIBUTE_ARCHIVE, FILE_ATTRIBUTE_READONLY,

//FILE_ATTRIBUTE_HIDDEN, FILE_ATTRIBUTE_SYSTEM,

//FILE_ATTRIBUTE_TEMPORARY – временный файл,

// FILE_ATTRIBUTE_OFFLINE, FILE_ATTRIBUTE_ENCRYPTED,

//Флаги: FILE_FLAG_DELETE_ON_CLOSE, FILE_FLAG_NO_BUFFERING,

// FILE_FLAG_OPEN_REPARSE_POINT, FILE_FLAG_OVERLAPPED,

// FILE_FLAG_RANDOM_ACCESS – подсказка ОС, что мы будем читать и писать в //случайных местах

// FILE_FLAG_SEQUENTIAL_SCAN – последовательно читать и писать

// FILE_FLAG_WRITE_THROUGH – не кэшировать, только запись

DWORD Bytes,

HANDLE hTemplate)

Чтение из файла:

BOOL ReadFile(

HANDLE h,

LPVOID Buf, //куда читать

DWORD BytesToRead,//сколько хотим прочитать

LPDWORD BytesRead,//сколько реально прочитали

LPOVERLAPPED ov

)

Запись в файл:

BOOL WriteFile(

HANDLE h,

LPVOID Buf,

DWORD BytesToWrite,..сколько хотим записать

LPDWORD BytesWrite,//сколько реально записали

LPOVERLAPPED ov

)

  1. отображение файлов на память.

Создать специальный объект отображения.

HANDLE CreateFileMapping(

HANDLE hfile,// дескриптор системного файла

LPSECURITY ATTRIBUTES ProcAttr,//атрибуты безопасности

DWORD protect, // атрибуты защиты страницы:

//PAGE_READONLY, PAGE_WRITECOPY

DWORD maxsizehigh,

DWORD maxsizelow,

LPCTSTR sysname) // системное имя

INVALID_HANDLE

создаем участок общей памяти:

LPVOID MapViewOfFile(

HANDLE hmap,

DWORD access // параметр доступа

DWORD ofshigh, // начальное смещение

DWORD ofslow,

DWORD bytestomap) ..длина отображения

Начинать отображения можно только с границы гранулярности.

Процедура отображения:

BOOL UnmapViewOfFile(LPVOID Ptr)

Именованные каналы.

Каналы – способ локального и сетевого взаимодействия.

  1. функции сервера

  2. функции клиента

Каналы должны быть с одним именем.

  1. СЕРВЕР

Создать канал: HANDLE CreateNamePipe(

LPCTSRT pipename,

DWORD openmode, // режим открытия

DWORD pipemode,

DWORD maxinstance,

DWORD outbufsize,

DWORD inbufsize,

LPSECURITY ATTRIBUTES ProcAttr,//атрибуты безопасности

)

Имя канала: \\.\pipe\<имя > - до 256 символов

FILE_FLAG_FIRST_PIPE_INSTANCE – может присутствовать во втором параметре:

PIPE_ACCESS_DUPLEX, PIPE_ACCESS_INBOUND, PIPE_ACCESS_OUTBOUND

FILE_FLAG_WRITE_THROUGH – если процессы находятся на разных машинах в сети

FILE_FLAG_OVERLAPPED – асинхронный режим (для канала)

PIPE_TYPE_BYTE и PIPE_TYPE_MESSAGE – каждая запись в канал – пакет

PIPE_READMODE_BYTE, PIPE_READMODE_MESSAGE

MAXINSTANCES – max допустимое число каналов с таким именем

PIPE_UNLIMITED_INSTANCES

DEFOULTTimeout – время ожидания