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

UptoLike

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

по возможности, должен выполнить команду из функции обратного вызова до того, как
будет возвращен результат.
В ответ на принудительную или командную транзакцию сервер возвращает одно из
трех значений:
DDE_PACK - Данные получены и подтверждены.
DDE_FBUSY - Сервер занят и не может обработать данные или инструкции; повторите
попытку позже.
DDE_FNOTPROCESSED - Данные или инструкции отклонены.
Флаги, установленные в функции DdeInitialize, позволяют отфильтровывать неже-
лательные сообщения о принудительных (флаг CBF_FAIL_POKES) или командных
(флаг CBF_FAIL_EXECUTES) транзакциях для серверов, не поддерживающих эти тран-
закции [12].
8.4.4. Завершение DDE-диалога
При необходимости прекратить DDE-диалог клиент или сервер вызывают либо
функцию DdeDisconnect (завершить указанный диалог), либо функцию DdeDisconnect-
List (завершить группу диалогов). В обоих случаях конкретному приложению или всем
приложениям передается сообщение XTYP_DISCONNECT. Синтаксис вызова функции
DdeDisconpect имеет следующий вид:
DdeDisconnect( hConv );
где параметр hConv представляет собой дескриптор диалога, возвращаемый функцией
DdeConnect. Функция DdeDisconnectList вызывается так:
DdeDisconnectList( hConvList);
где параметр hConvList представляет собой дескриптор, возвращаемый функцией Dde-
ConnectList.
Когда DDEML получает сообщение XTYP_DISCONNECT, все активные в данный
момент транзакции текущего диалога (или диалогов) прекращаются. Согласно догово-
ренности, диалоги могут завершаться только приложениями-клиентами. Однако при
особых обстоятельствах подключения могут разрываться и приложениями-серверами
(например, в случае их закрытия).
Как клиенты, так и серверы должны быть готовы в любой момент получить сооб-
щение о разрыве подключения. При этом они должны закрыть соответствующие струк-
туры данных. В случае закрытия приложения или если оно больше не собирается уста-
навливать подключения к другим приложениям, программа должна отменить
инициализацию всех DDEML-функций обратного вызова.
При вызове функции DdeUninitialize информация о сервисе удаляется из DDEML-
таблиц, все активные в данный момент диалоги прекращаются и происходит рассылка
сообщения XTYP_UNREGISTER всем DDEML-функциям обратного вызова. Этапы
процесса завершения диалога и отключения от DDEML показаны на рис.8.4.
208
по возможности, должен выполнить команду из функции обратного вызова до того, как
будет возвращен результат.
      В ответ на принудительную или командную транзакцию сервер возвращает одно из
трех значений:
DDE_PACK - Данные получены и подтверждены.
DDE_FBUSY - Сервер занят и не может обработать данные или инструкции; повторите
попытку позже.
DDE_FNOTPROCESSED - Данные или инструкции отклонены.
      Флаги, установленные в функции DdeInitialize, позволяют отфильтровывать неже-
лательные сообщения о принудительных (флаг CBF_FAIL_POKES) или командных
(флаг CBF_FAIL_EXECUTES) транзакциях для серверов, не поддерживающих эти тран-
закции [12].

     8.4.4. Завершение DDE-диалога

      При необходимости прекратить DDE-диалог клиент или сервер вызывают либо
функцию DdeDisconnect (завершить указанный диалог), либо функцию DdeDisconnect-
List (завершить группу диалогов). В обоих случаях конкретному приложению или всем
приложениям передается сообщение XTYP_DISCONNECT. Синтаксис вызова функции
DdeDisconpect имеет следующий вид:

DdeDisconnect( hConv );

где параметр hConv представляет собой дескриптор диалога, возвращаемый функцией
DdeConnect. Функция DdeDisconnectList вызывается так:

DdeDisconnectList( hConvList);

где параметр hConvList представляет собой дескриптор, возвращаемый функцией Dde-
ConnectList.
     Когда DDEML получает сообщение XTYP_DISCONNECT, все активные в данный
момент транзакции текущего диалога (или диалогов) прекращаются. Согласно догово-
ренности, диалоги могут завершаться только приложениями-клиентами. Однако при
особых обстоятельствах подключения могут разрываться и приложениями-серверами
(например, в случае их закрытия).
     Как клиенты, так и серверы должны быть готовы в любой момент получить сооб-
щение о разрыве подключения. При этом они должны закрыть соответствующие струк-
туры данных. В случае закрытия приложения или если оно больше не собирается уста-
навливать подключения к другим приложениям, программа должна отменить
инициализацию всех DDEML-функций обратного вызова.
     При вызове функции DdeUninitialize информация о сервисе удаляется из DDEML-
таблиц, все активные в данный момент диалоги прекращаются и происходит рассылка
сообщения XTYP_UNREGISTER всем DDEML-функциям обратного вызова. Этапы
процесса завершения диалога и отключения от DDEML показаны на рис.8.4.




                                       208