КАТЕГОРИИ: Архитектура-(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)
Дата добавления: 2014-01-07; Просмотров: 255; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |