|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
DdeClientTransaction
The DdeClientTransaction function begins a data transaction between a client and a server. Only a dynamic data exchange (DDE) client application can call this function, and the application can use it only after establishing a conversation with the server.
HDDEDATA DdeClientTransaction(
LPBYTE pData, // pointer to data to pass to server DWORD cbData, // length of data HCONV hConv, // handle to conversation HSZ hszItem, // handle to item name string UINT wFmt, // clipboard data format UINT wType, // transaction type DWORD dwTimeout, // time-out duration LPDWORD pdwResult // pointer to transaction result );
Parameters
pData
Points to the beginning of the data the client must pass to the server. Optionally, an application can specify the data handle (HDDEDATA) to pass to the server and in that case the cbData parameter should be set to 0xFFFFFFFF. This parameter is required only if the wType parameter is XTYP_EXECUTE or XTYP_POKE. Otherwise, this parameter should be NULL. For the optional usage of this parameter, XTYP_POKE transactions where pData is a data handle, the handle must have been created by a previous call to the DdeCreateDataHandle function, employing the same data format specified in the wFmt parameter.
cbData
Specifies the length, in bytes, of the data pointed to by the pData parameter. A value of 0xFFFFFFFF indicates that pData is a data handle that identifies the data being sent.
hConv
Identifies the conversation in which the transaction is to take place.
hszItem
Identifies the data item for which data is being exchanged during the transaction. This handle must have been created by a previous call to the DdeCreateStringHandle function. This parameter is ignored (and should be set to 0L) if the wType parameter is XTYP_EXECUTE.
wFmt
Specifies the standard clipboard format in which the data item is being submitted or requested. If the transaction specified by the wType parameter does not pass data or is XTYP_EXECUTE, this parameter should be zero. If the transaction specified by the wType parameter references non-execute DDE data (XTYP_POKE, XTYP_ADVSTART, XTYP_ADVSTOP, XTYP_REQUEST), the wFmt value must be either a valid predefined (CF_) DDE format or a valid registered clipboard format.
wType
Specifies the transaction type. This parameter can be one of the following types:
Type Meaning XTYP_ADVSTART Begins an advise loop. Any number of distinct advise loops can exist within a conversation. An application can alter the advise loop type by combining the XTYP_ADVSTART transaction type with one or more of the following flags:
Flag Meaning XTYPF_NODATA Instructs the server to notify the client of any data changes without actually sending the data. This flag gives the client the option of ignoring the notification or requesting the changed data from the server. XTYPF_ACKREQ Instructs the server to wait until the client acknowledges that it received the previous data item before sending the next data item. This flag prevents a fast server from sending data faster than the client can process it. XTYP_ADVSTOP Ends an advise loop. XTYP_EXECUTE Begins an execute transaction. XTYP_POKE Begins a poke transaction. XTYP_REQUEST Begins a request transaction.
dwTimeout
Specifies the maximum length of time, in milliseconds, that the client will wait for a response from the server application in a synchronous transaction. This parameter should be TIMEOUT_ASYNC for asynchronous transactions.
pdwResult
Points to a variable that receives the result of the transaction. An application that does not check the result can use NULL for this value. For synchronous transactions, the low-order word of this variable contains any applicable DDE_ flags resulting from the transaction. This provides support for applications dependent on DDE_APPSTATUS bits. It is, however, recommended that applications no longer use these bits because they may not be supported in future versions of the Dynamic Data Exchange Management Library (DDEML). For asynchronous transactions, this variable is filled with a unique transaction identifier for use with the DdeAbandonTransaction function and the XTYP_XACT_COMPLETE transaction.
Return Values
If the function succeeds, the return value is a data handle that identifies the data for successful synchronous transactions in which the client expects data from the server. The return value is nonzero for successful asynchronous transactions and for synchronous transactions in which the client does not expect data. The return value is zero for all unsuccessful transactions.
Errors
The DdeGetLastError function can be used to get the error code, which may be one of the following values: DMLERR_ADVACKTIMEOUT DMLERR_BUSY DMLERR_DATAACKTIMEOUT DMLERR_DLL_NOT_INITIALIZED DMLERR_EXECACKTIMEOUT DMLERR_INVALIDPARAMETER DMLERR_MEMORY_ERROR DMLERR_NO_CONV_ESTABLISHED DMLERR_NO_ERROR DMLERR_NOTPROCESSED DMLERR_POKEACKTIMEOUT DMLERR_POSTMSG_FAILED DMLERR_REENTRANCY DMLERR_SERVER_DIED DMLERR_UNADVACKTIMEOUT
Remarks
When an application has finished using the data handle returned by DdeClientTransaction, the application should free the handle by calling the DdeFreeDataHandle function. Transactions can be synchronous or asynchronous. During a synchronous transaction, DdeClientTransaction does not return until the transaction either completes successfully or fails. Synchronous transactions cause a client to enter a modal loop while waiting for various asynchronous events. Because of this, a client application can still respond to user input while waiting on a synchronous transaction, but the application cannot begin a second synchronous transaction because of the activity associated with the first. DdeClientTransaction fails if any instance of the same task has a synchronous transaction already in progress.
During an asynchronous transaction, DdeClientTransaction returns after the transaction has begun, passing a transaction identifier for reference. When the server's DDE callback function finishes processing an asynchronous transaction, the system sends an XTYP_XACT_COMPLETE transaction to the client. This transaction provides the client with the results of the asynchronous transaction that it initiated by calling DdeClientTransaction. A client application can choose to abandon an asynchronous transaction by calling the DdeAbandonTransaction function.
See Also
DdeAbandonTransaction, DdeAccessData, DdeConnect, DdeConnectList, DdeCreateDataHandle, DdeCreateStringHandle, DdeFreeDataHandle, XTYP_ADVSTART, XTYP_ADVSTOP, XTYP_EXECUTE, XTYP_POKE, XTYP_REQUEST
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
DdeClientTransaction
Функция DdeClientTransaction начинает сделке данных между клиентом и сервер. Только динамический обмен данных клиента (DDE) приложение может назвать эту функцию, и приложение может использовать это только после того, как установить разговор с сервером.
HDDEDATA DdeClientTransaction(
LPBYTE pData, // УКАЗАТЕЛЬ в данные, чтобы проходить в сервер DWORD cbData, // длина данных HCONV hConv, // ручки в разговор HSZ hszItem, // ручку в строку имени пункта UINT wFmt, // буфера формата данных UINT wType, // типа сделки DWORD dwTimeout, // длительности задержки LPDWORD pdwResult // указатель в результат сделки );
Параметры
pData
Точки на начало данных клиент должен пройти в сервер. Дополнительно, приложение может определить ручку данных (HDDEDATA), чтобы проходить в сервер и в этом случае параметр cbData должен быть установлен на 0xFFFFFFFF. Этот параметр требуется только если параметр wType - XTYP_EXECUTE или XTYP_POKE. В противном случае, этот параметр должен быть НЕДЕЙСТВИТЕЛЕН. Для дополнительного использования этого параметра, сделок XTYP_POKE где pData - ручка данных, ручка по-видимому создана предшествующим вызовом на функция DdeCreateDataHandle, применяющим тот же формат данных определялись в параметре wFmt.
cbData
Определяет длину, в байтах, данных указанных, чтобы параметром pData. Величина 0xFFFFFFFF указывает, что pData - ручка данных, которая идентифицирует данные, посыланные.
hConv
Идентифицирует разговор в котором сделка должна произойти.
hszItem
Идентифицирует пункт данных для которого данные заменяется в течение сделки. Эта ручка по-видимому создана предшествующим вызовом в функцию DdeCreateStringHandle. Этот параметр проигнорирован (и должно быть установлено на 0L) если параметр wType - XTYP_EXECUTE.
wFmt
Определяет стандартный формат буфера в котором пункт данных подается или запрашивается. Если сделка определялась бы параметром wType не передает данные или - XTYP_EXECUTE, этот параметр должен - нулевым. Если сделка определялась бы ссылками параметра wType не-выполнять данные DDE (XTYP_POKE, XTYP_ADVSTART, XTYP_ADVSTOP, XTYP_REQUEST), величина wFmt должна быть или правильный встроенный (CF_) формат DDE или правильный зарегистрированный формат буфера.
wType
Определяет тип сделки. Этот параметр может быть одним из следующего типов:
Значение Типа XTYP_ADVSTART Начинает советовать цикл. Любое число четкое рекомендует, чтобы циклы могли просуществовать в пределах разговора. Приложение может изменить советовать тип цикла объединяя тип сделки XTYP_ADVSTART с одним или более из следующего флагов:
Значение Флага XTYPF_NODATA Указывает сервер, чтобы уведомлять клиент о любых изменениях данных без действительно посылать данные. Этот флаг дает клиенту опцию игнорирующего уведомления или запроса замененных данных с сервера. XTYPF_ACKREQ Указывает сервер, чтобы ожидаться пока клиент не признает, что он получил предшествующий пункт данных перед посылкой следующего пункта данных. Этот флаг мешает быстрый сервер чтобы посылать данные быстрее чем клиент может обработать это. XTYP_ADVSTOP Заканчивает советовать цикл. XTYP_EXECUTE Начинает выполнять сделку. XTYP_POKE Начинает сделку тычка. XTYP_REQUEST Начинает сделку запроса.
dwTimeout
Определяет максимальный период времени, в течение миллисекунд, что клиент подождет ответ из приложения сервера в синхронной сделке. Этот параметр должен быть TIMEOUT_ASYNC для асинхронных сделок.
pdwResult
Точки на переменную, которые получают результат сделки. Приложение, что не проверяет, что результат может использовать НЕДЕЙСТВИТЕЛЬНЫЙ для этой величины. Для синхронных сделок, младшее слово этой переменной содержит любые прилагаемые флаги DDE_, проистекающие из сделки. Это обеспечивает поддержку для зависящих от применения на битах DDE_APPSTATUS. Это, тем не менее, рекомендовано, что приложения больше использование эти биты поскольку они не могут поддерживаны в будущих версиях Биржевого Управления Динамической Библиотеки Данных (DDEML). Для асинхронных сделок, эта переменная заполнена уникальным идентификатором сделки для использования с функцией DdeAbandonTransaction и сделка XTYP_XACT_COMPLETE.
Обратные Величины
Если функция добивается успеха, обратная величина является ручкой данных, которая идентифицирует данные для успешных синхронных сделок в которых клиент ожидает данные из сервера. Обратная величина ненулевая для успешных асинхронных сделок и для синхронных сделок в которых клиент не ожидает данные. Обратная величина является нулем для всех неудачных сделок.
Ошибки
Функция DdeGetLastError может быть использована, чтобы получать код ошибки, который может быть одним из следующего величин: DMLERR_ADVACKTIMEOUT DMLERR_BUSY DMLERR_DATAACKTIMEOUT DMLERR_DLL_NOT_INITIALIZED DMLERR_EXECACKTIMEOUT DMLERR_INVALIDPARAMETER DMLERR_MEMORY_ERROR DMLERR_NO_CONV_ESTABLISHED DMLERR_NO_ERROR DMLERR_NOTPROCESSED DMLERR_POKEACKTIMEOUT DMLERR_POSTMSG_FAILED DMLERR_REENTRANCY DMLERR_SERVER_DIED DMLERR_UNADVACKTIMEOUT
Замечания
Когда приложение завершило используя ручку данных возвращался DdeClientTransaction, приложение должно освобождать ручку вызывая функцию DdeFreeDataHandle. Сделки могут быть синхронными или асинхронными. В течение синхронной сделки, DdeClientTransaction не возвращается до сделки или завершает успешно или терпит неудачу. Синхронные сделки заставляют клиента, чтобы вводить модальный цикл при ожидании различных асинхронных событий. Из-за этого, приложение клиента может все еще среагировать на ввод пользователя при ожидании в синхронной сделке, но приложение не может начать синхронную сделку секунды из-за деятельности связанной первым. DdeClientTransaction ТЕРПИТ неудачу если любой пример той же самой задачи имеет синхронную сделку уже в процессе развития.
В течение асинхронной сделки, DdeClientTransaction возвращается после того, как сделка начала, прохождение идентификатора сделки для ссылки. Когда функция возврата сервера DDE завершает обработку асинхронной сделки, система посылает сделку XTYP_XACT_COMPLETE клиенту. Эта сделка обеспечивает клиента результатами асинхронной сделки, которые она введена вызовом DdeClientTransaction. Приложение клиента может решить покидать асинхронную сделку вызывая функцию DdeAbandonTransaction.
Смотри Также
DdeAbandonTransaction, DdeAccessData, DdeConnect, DdeConnectList, DdeCreateDataHandle, DdeCreateStringHandle, DdeFreeDataHandle, XTYP_ADVSTART, XTYP_ADVSTOP, XTYP_EXECUTE, XTYP_POKE, XTYP_REQUEST
|
|
|
|
| |