Составители:
В качестве альтернативы можно использовать функцию EnumClipboardFormats(),
которая рассматривалась ранее. Эта функция возвращает идентификаторы всех форма-
тов, после чего следует вызвать функцию GetClipboardFormatName(), с тем чтобы полу-
чить имя формата в виде ASCII-строки:
GetClipboardFormatName( wFormat, lpszBuffer, nCharCount );
Следует подчеркнуть, что Windows не требует никакой информации о структуре
данных, которые передаются при использовании частных форматов. Интерпретация та-
ких данных находится исключительно в компетенции самого приложения. Операцион-
ная система должна знать только имя формата и дескриптор блока памяти.
§ 8.2. Обмен информацией посредством каналов
8.2.1. Общие положения и классификация каналов
Процессы, запущенные пользователем, не всегда имеют отношение друг к другу,
однако способность процессов обмениваться информацией иногда значительно повыша-
ет эффективность приложения и делает возможным решение задач, которые были бы не
под силу совокупности независимых процессов. Например, программа набора телефон-
ного номера и графический редактор имеют очень мало общего, однако если графиче-
ский редактор должен передавать информацию в удаленную систему, целесообразность
его связи с программой набора номера уже не вызывает сомнения. Windows обеспечива-
ет много возможностей для связи между приложениями (например, через буфер обмена,
DDE, OLE и т.д.).
Каналы представляют собой удобный механизм для обмена информацией между
процессами в различных программах [12]. В отличие от некоторых альтернативных ме-
ханизмов, с каналами не связаны формальные стандарты или протоколы передачи ин-
формации. Эта особенность каналов делает их более удобными в использовании и более
гибкими по сравнению, скажем, с механизмом DDE. Однако она же ограничивает воз-
можность применения каналов только программами, способными правильно распозна-
вать информацию, которой они обмениваются.
Поддержка каналов была впервые введена в Windows NT, а впоследствии - в Win-
dows 95 и Windows 98 (в виде анонимных каналов). Однако только Windows NT поддер-
живает возможность использования именованных каналов, которые не применимы в
Windows 98.
Канал представляет собой участок совместно используемой памяти, где процессы
оставляют свои сообщения друг для друга. Канал подобен файлу, данные в который за-
писываются одной программой, а считываются - другой. Поскольку каналы предназна-
чены для связи между процессами, Win32 API предоставляет набор команд, обеспечи-
вающих обмен информацией. Концептуально канал является гибридом файла и
электронного почтового ящика. Один процесс записывает в этот файл определенную
информацию, а другой - просматривает ее.
Канал появляется после того, как одна из программ принимает решение создать
его. Программа, которая создает канал, называется сервером канала. Другие процессы,
которые называются клиентами, могут связываться с каналом на другом его конце.
Сервер поддерживает жизнеспособность канала. Любой процесс может служить как сер-
вером, так и клиентом, или одновременно и сервером, и клиентом для разных каналов.
После того как канал будет создан и к нему подключится другой процесс, клиент
или сервер или одновременно и клиент, и сервер начнут записывать данные на своем
конце канала. Информация, записанная на одном конце канала, читается на другом его
174
В качестве альтернативы можно использовать функцию EnumClipboardFormats(), которая рассматривалась ранее. Эта функция возвращает идентификаторы всех форма- тов, после чего следует вызвать функцию GetClipboardFormatName(), с тем чтобы полу- чить имя формата в виде ASCII-строки: GetClipboardFormatName( wFormat, lpszBuffer, nCharCount ); Следует подчеркнуть, что Windows не требует никакой информации о структуре данных, которые передаются при использовании частных форматов. Интерпретация та- ких данных находится исключительно в компетенции самого приложения. Операцион- ная система должна знать только имя формата и дескриптор блока памяти. § 8.2. Обмен информацией посредством каналов 8.2.1. Общие положения и классификация каналов Процессы, запущенные пользователем, не всегда имеют отношение друг к другу, однако способность процессов обмениваться информацией иногда значительно повыша- ет эффективность приложения и делает возможным решение задач, которые были бы не под силу совокупности независимых процессов. Например, программа набора телефон- ного номера и графический редактор имеют очень мало общего, однако если графиче- ский редактор должен передавать информацию в удаленную систему, целесообразность его связи с программой набора номера уже не вызывает сомнения. Windows обеспечива- ет много возможностей для связи между приложениями (например, через буфер обмена, DDE, OLE и т.д.). Каналы представляют собой удобный механизм для обмена информацией между процессами в различных программах [12]. В отличие от некоторых альтернативных ме- ханизмов, с каналами не связаны формальные стандарты или протоколы передачи ин- формации. Эта особенность каналов делает их более удобными в использовании и более гибкими по сравнению, скажем, с механизмом DDE. Однако она же ограничивает воз- можность применения каналов только программами, способными правильно распозна- вать информацию, которой они обмениваются. Поддержка каналов была впервые введена в Windows NT, а впоследствии - в Win- dows 95 и Windows 98 (в виде анонимных каналов). Однако только Windows NT поддер- живает возможность использования именованных каналов, которые не применимы в Windows 98. Канал представляет собой участок совместно используемой памяти, где процессы оставляют свои сообщения друг для друга. Канал подобен файлу, данные в который за- писываются одной программой, а считываются - другой. Поскольку каналы предназна- чены для связи между процессами, Win32 API предоставляет набор команд, обеспечи- вающих обмен информацией. Концептуально канал является гибридом файла и электронного почтового ящика. Один процесс записывает в этот файл определенную информацию, а другой - просматривает ее. Канал появляется после того, как одна из программ принимает решение создать его. Программа, которая создает канал, называется сервером канала. Другие процессы, которые называются клиентами, могут связываться с каналом на другом его конце. Сервер поддерживает жизнеспособность канала. Любой процесс может служить как сер- вером, так и клиентом, или одновременно и сервером, и клиентом для разных каналов. После того как канал будет создан и к нему подключится другой процесс, клиент или сервер или одновременно и клиент, и сервер начнут записывать данные на своем конце канала. Информация, записанная на одном конце канала, читается на другом его 174
Страницы
- « первая
- ‹ предыдущая
- …
- 170
- 171
- 172
- 173
- 174
- …
- следующая ›
- последняя »