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

UptoLike

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

Рис.8.4. Процесс закрытия клиента и сервера
При возникновении ошибки DDE-функция возвращает значение NULL или
FALSE. Более подробная информация об ошибке может быть получена с помощью
функции DdeGetLastError:
UINT DdeGetLastError( DWORD dwInstID );
Поскольку функция DdeGetLastError требует задания идентификатора экземпляра
приложения, она не может применяться для получения информации об ошибке в случае
невыполнения функции DdeInitialize. Поэтому она возвращает собственные, расширен-
ные коды ошибок.
DMLERR_NO_ERROR - Успешная инициализация.
DMLERR_DLL_USAGE - Программа зарегистрирована для DDE-мониторинга и не
может использовать DDEML для выполнения транзакций.
DMLERR_INVALID_PARAMETER - Параметр содержит недопустимую информацию.
DMLERR_SYS_ERROR - Произошла внутренняя ошибка DDEML.
8.4.5. Синхронные и асинхронные транзакции
DDEML-клиенты могут выбирать между выполнением синхронных и асинхрон-
ных транзакций [12]. Отличие между синхронными и асинхронными операциями прояв-
ляется только на уровне программы-клиента. С точки зрения программы-сервера, тран-
закции обоих типов выглядят одинаково.
Преимущество асинхронных транзакций заключается в том, что они выполняются
быстрее и проще программируются. Асинхронные транзакции применяются сильно за-
груженными программами, которые должны обрабатывать значительный объем данных
при взаимодействии с DDEML-сервером, или программами, которые вынуждены регу-
лярно взаимодействовать с медленным сервером и хотят избежать нежелательных пе-
риодов ожидания ответа.
209
                       Рис.8.4. Процесс закрытия клиента и сервера

    При возникновении ошибки DDE-функция возвращает значение NULL или
FALSE. Более подробная информация об ошибке может быть получена с помощью
функции DdeGetLastError:

UINT DdeGetLastError( DWORD dwInstID );

     Поскольку функция DdeGetLastError требует задания идентификатора экземпляра
приложения, она не может применяться для получения информации об ошибке в случае
невыполнения функции DdeInitialize. Поэтому она возвращает собственные, расширен-
ные коды ошибок.
DMLERR_NO_ERROR - Успешная инициализация.
DMLERR_DLL_USAGE - Программа зарегистрирована для DDE-мониторинга и не
может использовать DDEML для выполнения транзакций.
DMLERR_INVALID_PARAMETER - Параметр содержит недопустимую информацию.
DMLERR_SYS_ERROR - Произошла внутренняя ошибка DDEML.

     8.4.5. Синхронные и асинхронные транзакции

     DDEML-клиенты могут выбирать между выполнением синхронных и асинхрон-
ных транзакций [12]. Отличие между синхронными и асинхронными операциями прояв-
ляется только на уровне программы-клиента. С точки зрения программы-сервера, тран-
закции обоих типов выглядят одинаково.
     Преимущество асинхронных транзакций заключается в том, что они выполняются
быстрее и проще программируются. Асинхронные транзакции применяются сильно за-
груженными программами, которые должны обрабатывать значительный объем данных
при взаимодействии с DDEML-сервером, или программами, которые вынуждены регу-
лярно взаимодействовать с медленным сервером и хотят избежать нежелательных пе-
риодов ожидания ответа.

                                          209