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

UptoLike

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

сервиса. По идентификатору экземпляра DDEML узнает о том, какая процедура обрат-
ного вызова и какой поток поддерживают данный сервис.
HDDEDATA DdeNameService (DWORD dwInstID, // идентификатор экземпляра
HSZ hszl, // строка с именем сервиса
HSZ hszRes, // зарезервирован
UINT uFlags ); // флаги
Значение параметра dwInstID возвращается функцией DdeInitialize. Параметр
uFlags может содержать следующие флаги:
DNS_REGISTER - Регистрация имени сервиса.
DNS_UNREGISTER - Отмена регистрации имени сервиса. Если аргумент hszl имеет
значение NULL, происходит отмена регистрации всех сервисов данного сервера.
DNS_FILTERON - Предотвращает получение сервером сообщений XTYP_CONNECT
для незарегистрированных сервисов.
DNS_FILTEROFF - Позволяет серверу получать сообщения XTYP_CONNECT при вы-
зове любой DDE-программой функции DdeConnect.
Возвращаемый функцией DdeNameService результат в действительности представ-
ляет собой логическое значение, причем он соответствует ошибке, а ненулевое значение
- успешному выполнению функции. Но в настоящее время он имеет тип HDDEDATA,
что позволяет в будущем расширить диапазон значений этого индикатора.
Если приложение поддерживает более одного сервиса, каждый из них должен ре-
гистрироваться отдельно. Использование для каждого сервиса отдельного потока так-
же имеет ряд преимуществ (в частности, в этом случае обеспечивается неизменность
дескриптора экземпляра потока на протяжении всего времени существования данного
сервиса).
"Сердцем" любого DDEML-приложения является функция DdeCallback. Windows
передает ей восемь параметров вызова. Функция DdeCallback аналогична функции
WndProc в том, что возвращаемый ею ответ определяется приложением. Ниже приведен
список поступающих в функцию DdeCallback сообщений с указанием типов ожидаемых
ответов (табл. 8.5).
Таблица 8.5
Сообщение Ответ
XTYP_ADVSTART, XTYP_CONNECT Логическое значение (TRUE, FALSE)
XTYP_ADVREQ, XTYP_REQUEST,
XTYP_WILDCONNECT
Дескриптор блока данных (или NULL)
XTYP_ADVDATA, XTYP_EXECUTE,
XTYP_POKE
Флаг : DDE_FACK, DDE_FBUSY или
DDE_FNOTPROCESSED
XTYP_ADVSTOP, XTYP_DISCONNECT,
XTYP_CONNECT_CONFIRM, XTYP_ERROR,
XTYP_REGISTER, XTYP_UNREGISTER,
XTYP_XACT_COMPLETE
Нет ответа; только уведомление
Функция DdeClientTransaction дает команду DDEML отправить сообщение серве-
ру. Тип сообщения зависит от характера действий, запрашиваемых клиентом. В табл. 8.6
перечислены некоторые типы сообщений и соответствующие им транзакции, выполняе-
мые сервером.
Таблица 8.6
Сообщение Транзакция
204
сервиса. По идентификатору экземпляра DDEML узнает о том, какая процедура обрат-
ного вызова и какой поток поддерживают данный сервис.

HDDEDATA DdeNameService (DWORD dwInstID,           // идентификатор экземпляра
                        HSZ hszl,                  // строка с именем сервиса
                        HSZ hszRes,                // зарезервирован
                        UINT uFlags );             // флаги

      Значение параметра dwInstID возвращается функцией DdeInitialize. Параметр
uFlags может содержать следующие флаги:
DNS_REGISTER - Регистрация имени сервиса.
DNS_UNREGISTER - Отмена регистрации имени сервиса. Если аргумент hszl имеет
значение NULL, происходит отмена регистрации всех сервисов данного сервера.
DNS_FILTERON - Предотвращает получение сервером сообщений XTYP_CONNECT
для незарегистрированных сервисов.
DNS_FILTEROFF - Позволяет серверу получать сообщения XTYP_CONNECT при вы-
зове любой DDE-программой функции DdeConnect.
      Возвращаемый функцией DdeNameService результат в действительности представ-
ляет собой логическое значение, причем он соответствует ошибке, а ненулевое значение
- успешному выполнению функции. Но в настоящее время он имеет тип HDDEDATA,
что позволяет в будущем расширить диапазон значений этого индикатора.
      Если приложение поддерживает более одного сервиса, каждый из них должен ре-
гистрироваться отдельно. Использование для каждого сервиса отдельного потока так-
же имеет ряд преимуществ (в частности, в этом случае обеспечивается неизменность
дескриптора экземпляра потока на протяжении всего времени существования данного
сервиса).
      "Сердцем" любого DDEML-приложения является функция DdeCallback. Windows
передает ей восемь параметров вызова. Функция DdeCallback аналогична функции
WndProc в том, что возвращаемый ею ответ определяется приложением. Ниже приведен
список поступающих в функцию DdeCallback сообщений с указанием типов ожидаемых
ответов (табл. 8.5).

                                                                        Таблица 8.5
             Сообщение                                        Ответ
XTYP_ADVSTART, XTYP_CONNECT                    Логическое значение (TRUE, FALSE)
XTYP_ADVREQ, XTYP_REQUEST,                     Дескриптор блока данных (или NULL)
XTYP_WILDCONNECT
XTYP_ADVDATA, XTYP_EXECUTE,                    Флаг : DDE_FACK, DDE_FBUSY или
XTYP_POKE                                      DDE_FNOTPROCESSED
XTYP_ADVSTOP, XTYP_DISCONNECT,                 Нет ответа; только уведомление
XTYP_CONNECT_CONFIRM, XTYP_ERROR,
XTYP_REGISTER, XTYP_UNREGISTER,
XTYP_XACT_COMPLETE


       Функция DdeClientTransaction дает команду DDEML отправить сообщение серве-
ру. Тип сообщения зависит от характера действий, запрашиваемых клиентом. В табл. 8.6
перечислены некоторые типы сообщений и соответствующие им транзакции, выполняе-
мые сервером.
                                                                       Таблица 8.6
Сообщение           Транзакция

                                        204