Поделиться через


Функция DdeInitializeA (ddeml.h)

Регистрирует приложение с помощью библиотеки управления динамическими данными Exchange (DDEML). Приложение должно вызывать эту функцию перед вызовом любой другой функции библиотеки управления Динамическими данными (DDEML).

Синтаксис

UINT DdeInitializeA(
  [in, out] LPDWORD     pidInst,
  [in]      PFNCALLBACK pfnCallback,
  [in]      DWORD       afCmd,
            DWORD       ulRes
);

Параметры

[in, out] pidInst

Тип: LPDWORD

Идентификатор экземпляра приложения. При инициализации этот параметр должен указывать на 0. Если функция завершается успешно, этот параметр указывает на идентификатор экземпляра для приложения. Это значение должно быть передано в качестве параметра idInst во всех остальных функциях DDEML, требующих его. Если приложение использует несколько экземпляров библиотеки динамической компоновки DDEML (DLL), приложение должно предоставить другую функцию обратного вызова для каждого экземпляра.

Если pidInst указывает на ненулевое значение, подразумевается повторная инициализация DDEML. В этом случае pidInst должны указывать на допустимый идентификатор экземпляра приложения.

[in] pfnCallback

Тип: PFNCALLBACK

Указатель на функцию обратного вызова DDE, определяемую приложением. Эта функция обрабатывает транзакции DDE, отправленные системой. Дополнительные сведения см. в функции обратного вызова DdeCallback.

[in] afCmd

Тип: DWORD

Набор флагов APPCMD_, CBF_и MF_. Флаги APPCMD_ предоставляют специальные инструкции для DdeInitialize. Флаги CBF_ указывают фильтры, которые препятствуют достижению функции обратного вызова определенных типов транзакций. Флаги MF_ указывают типы действий DDE, отслеживаемых приложением мониторинга DDE. Использование этих флагов повышает производительность приложения DDE, устраняя ненужные вызовы функции обратного вызова.

Этот параметр может быть одним или несколькими из следующих значений.

Ценность Значение
APPCLASS_MONITOR
0x000000001L
Позволяет приложению отслеживать действия DDE в системе. Этот флаг предназначен для использования приложениями мониторинга DDE. Приложение задает типы действий DDE для отслеживания путем объединения одного или нескольких флагов монитора с флагом APPCLASS_MONITOR. Дополнительные сведения см. в следующем разделе "Примечания".
APPCLASS_STANDARD
0x000000000L
Регистрирует приложение как стандартное (немониторингное) приложение DDEML.
APPCMD_CLIENTONLY
0x00000010L
Запрещает приложению стать сервером в беседе DDE. Приложение может быть только клиентом. Этот флаг снижает потребление ресурсов DDEML. Он включает функции флага CBF_FAIL_ALLSVRXACTIONS.
APPCMD_FILTERINITS
0x000000020L
Запрещает DDEML отправлять XTYP_CONNECT и XTYP_WILDCONNECT транзакции в приложение, пока приложение не создаст его строковые дескрипторы и зарегистрировало его имена служб или отключило фильтрацию путем последующего вызова DdeNameService или функции DdeInitialize. Этот флаг всегда действует, когда приложение вызывает DdeInitialize в первый раз независимо от того, указывает ли приложение флаг. При последующих вызовах DdeInitialize, не указывая этот флаг, отключает фильтры имени службы приложения, но указывая, что он включает фильтры имени службы приложения.
CBF_FAIL_ALLSVRXACTIONS
0x0003f000
Запрещает функцию обратного вызова получать транзакции сервера. Система возвращает DDE_FNOTPROCESSED каждому клиенту, который отправляет транзакцию в это приложение. Этот флаг эквивалентен сочетанию всех флагов CBF_FAIL_.
CBF_FAIL_ADVISES
0x00004000
Запрещает функцию обратного вызова получать XTYP_ADVSTART и XTYP_ADVSTOP транзакции. Система возвращает DDE_FNOTPROCESSED каждому клиенту, который отправляет XTYP_ADVSTART или XTYP_ADVSTOP транзакцию на сервер.
CBF_FAIL_CONNECTIONS
0x00002000
Запрещает функцию обратного вызова получать XTYP_CONNECT и XTYP_WILDCONNECT транзакции.
CBF_FAIL_EXECUTES
0x00008000
Запрещает функцию обратного вызова получать транзакции XTYP_EXECUTE. Система возвращает DDE_FNOTPROCESSED клиенту, который отправляет XTYP_EXECUTE транзакцию на сервер.
CBF_FAIL_POKES
0x00010000
Запрещает функцию обратного вызова получать XTYP_POKE транзакции. Система возвращает DDE_FNOTPROCESSED клиенту, который отправляет XTYP_POKE транзакцию на сервер.
CBF_FAIL_REQUESTS
0x00020000
Запрещает функцию обратного вызова получать XTYP_REQUEST транзакции. Система возвращает DDE_FNOTPROCESSED клиенту, который отправляет XTYP_REQUEST транзакцию на сервер.
CBF_FAIL_SELFCONNECTIONS
0x00001000
Запрещает функцию обратного вызова получать XTYP_CONNECT транзакции из собственного экземпляра приложения. Этот флаг запрещает приложению устанавливать беседу DDE с собственным экземпляром. Приложение должно использовать этот флаг, если он должен взаимодействовать с другими экземплярами себя, но не с самим собой.
CBF_SKIP_ALLNOTIFICATIONS
0x003c0000
Запрещает функцию обратного вызова получать уведомления. Этот флаг эквивалентен сочетанию всех CBF_SKIP_ флагов.
CBF_SKIP_CONNECT_CONFIRMS
0x00040000
Запрещает функцию обратного вызова получать уведомления XTYP_CONNECT_CONFIRM.
CBF_SKIP_DISCONNECTS
0x00200000
Запрещает функцию обратного вызова получать уведомления XTYP_DISCONNECT.
CBF_SKIP_REGISTRATIONS
0x00080000
Запрещает функцию обратного вызова получать уведомления XTYP_REGISTER.
CBF_SKIP_UNREGISTRATIONS
0x00100000
Запрещает функцию обратного вызова получать уведомления XTYP_UNREGISTER.
MF_CALLBACKS
0x08000000
Уведомляет функцию обратного вызова всякий раз, когда транзакция отправляется в любую функцию обратного вызова DDE в системе.
MF_CONV
0x40000000
Уведомляет функцию обратного вызова всякий раз, когда беседа устанавливается или завершается.
MF_ERRORS
0x10000000
Уведомляет функцию обратного вызова при возникновении ошибки DDE.
MF_HSZ_INFO
0x01000000
Уведомляет функцию обратного вызова всякий раз, когда приложение DDE создает, освобождает или увеличивает количество использования строкового дескриптора или когда дескриптор строки освобождается в результате вызова функции DdeUninitialize.
MF_LINKS
0x20000000
Уведомляет функцию обратного вызова всякий раз, когда запускается или заканчивается цикл советов.
MF_POSTMSGS
0x04000000
Уведомляет функцию обратного вызова всякий раз, когда система или приложение публикует сообщение DDE.
MF_SENDMSGS
0x02000000
Уведомляет функцию обратного вызова всякий раз, когда система или приложение отправляет DDE-сообщение.

ulRes

Тип: DWORD

Скрытный; должно быть равно нулю.

Возвращаемое значение

Тип: UINT

Если функция выполнена успешно, возвращаемое значение DMLERR_NO_ERROR.

Если функция завершается ошибкой, возвращаемое значение является одним из следующих значений:

Замечания

Приложение, использующее несколько экземпляров DDEML, не должно передавать объекты DDEML между экземплярами.

Приложение мониторинга DDE не должно пытаться выполнять операции DDE (устанавливать беседы, выдачи транзакций и т. д.) в контексте одного экземпляра приложения.

Синхронная транзакция завершается ошибкой DMLERR_REENTRANCY, если любой экземпляр той же задачи уже выполняет синхронную транзакцию.

Флаг CBF_FAIL_ALLSVRXACTIONS приводит к фильтрации всех транзакций сервера DDEML и может быть изменен последующим вызовом DdeInitialize. Флаг APPCMD_CLIENTONLY запрещает DDEML создавать ключевые ресурсы сервера и не может быть изменен последующим вызовом DdeInitialize.

Существует версия ANSI и версия Юникода DdeInitialize. Вызываемая версия определяет тип процедур окна, используемых для управления беседами DDE (ANSI или Юникод), а значение по умолчанию для элемента iCodePage структуры CONVCON TEXT (CP_WINANSI или CP_WINUNICODE).

Заметка

Заголовок ddeml.h определяет DdeInitialize как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 2000 Профессиональный [только классические приложения]
минимальный поддерживаемый сервер Windows 2000 Server [только классические приложения]
целевая платформа Виндоус
заголовка ddeml.h (include Windows.h)
библиотеки User32.lib
DLL User32.dll

См. также

обзор библиотеки управления динамическими данными Exchange