Операционные системы. Учебное пособие. Марапулец Ю.В. - 172 стр.

UptoLike

Составители: 

В качестве альтернативы можно использовать функцию 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