Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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

Ссобытия

 

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

)

 

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

 

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

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 – время ожидания

 

Серверная сторона

CREATE_NAMED_PIPE

BOOL ConnectNamePipe(HANDLE h, LPOVERLAPPED Ov)

 

BOOL DisconnectNamedPipe(HANDLE h)

 

2. КЛИЕНТ

BOOL WiatNamedPipe(LPCTSTR Name, DWORD TimeOut)

 

Подключиться к каналу:

CreateFile

В виде имени – имя канала \\<pc>\piep\<имя>

 

BOOL CallNamedPipe(

LPCTSTR NamePipe, //имя канала

LPVOID InBuf, // входные параметры

DWORD InSize, // сколько будет отправлено байт

LPVOID OutBuf, // выходной результат

DWORD OutSize, // полный размер буфера

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

DWORD TimeOut)


<== предыдущая лекция | следующая лекция ==>
Синхронизация процессов | Введение. Управление процессами в среде UNIX
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 255; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.