Article ID: 83413 - Last Review: August 2, 2004 - Revision: 1.1 Freeing Memory in a DDEML Server ApplicationThis article was previously published under Q83413 SUMMARY
A Dynamic Data Exchange Management Library (DDEML) server application
calls the DdeCreateDataHandle function to allocate a block of memory
for data it will send to a client application. DdeCreateDataHandle
returns a handle to a block of memory that can be passed between
applications.
The server application owns every data handle it creates. However, it is not necessary to call DdeFreeDataHandle under every circumstance. This article details the circumstances under which the server application must call DdeFreeDataHandle and when the DDEML will automatically free a data handle. MORE INFORMATION
If the server application specifies the HDATA_APPOWNED flag in the
afCmd parameter to DdeCreateDataHandle, it must explicitly call
DdeFreeDataHandle to free the memory handle. Using HDATA_APPOWNED data
handles is convenient when data, such as system topic information, is
likely to be passed to a client application more than once, because the
server calls DdeCreateDataHandle only once, regardless of the number
of times the data handle is passed to a client application.
When it closes down, a server application must call DdeFreeDataHandle for each data handle that it has not passed to a client application. When the server creates a handle without specifying HDATA_APPOWNED, and passes the handle to a client application in an asynchronous transaction, the DDEML frees the data handle when the client returns from its callback function. Therefore, the server is not required to free the data handle it passes to a client because the DDEML frees the handle. However, if the data handle is never sent to a client application, the server must call DdeFreeDataHandle to free the handle. It is the client application's responsibility to call DdeFreeDataHandle for any data provided by a server in a synchronous transaction. APPLIES TO
| Article Translations
|

Back to the top
