/* -*- tab-width: 8; c-basic-offset: 8 -*- */ /* * DDEML library * * Copyright 1997 Alexandre Julliard * Copyright 1997 Len White * Copyright 1999 Keith Matthews * Copyright 2000 Corel * Copyright 2001 Eric Pouech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include "winbase.h" #include "windef.h" #include "wine/windef16.h" #include "wingdi.h" #include "winuser.h" #include "winerror.h" #include "dde.h" #include "ddeml.h" #include "dde/dde_private.h" #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(ddeml); typedef HDDEDATA (CALLBACK *PFNCALLBACK16)(UINT16,UINT16,HCONV,HSZ,HSZ,HDDEDATA,DWORD,DWORD); typedef struct { UINT16 cb; UINT16 wFlags; UINT16 wCountryID; INT16 iCodePage; DWORD dwLangID; DWORD dwSecurity; } CONVCONTEXT16, *LPCONVCONTEXT16; typedef struct { DWORD cb; DWORD hUser; HCONV hConvPartner; HSZ hszSvcPartner; HSZ hszServiceReq; HSZ hszTopic; HSZ hszItem; UINT16 wFmt; UINT16 wType; UINT16 wStatus; UINT16 wConvst; UINT16 wLastError; HCONVLIST hConvList; CONVCONTEXT16 ConvCtxt; } CONVINFO16, *LPCONVINFO16; /* ### start build ### */ extern LONG CALLBACK WDML_CallTo16_long_llllllll (FARPROC16,LONG,LONG,LONG,LONG,LONG,LONG,LONG,LONG); /* ### stop build ### */ /****************************************************************** * WDML_InvokeCallback16 * * */ HDDEDATA WDML_InvokeCallback16(PFNCALLBACK pfn, UINT uType, UINT uFmt, HCONV hConv, HSZ hsz1, HSZ hsz2, HDDEDATA hdata, DWORD dwData1, DWORD dwData2) { return WDML_CallTo16_long_llllllll((FARPROC16)pfn, uType, uFmt, hConv, hsz1, hsz2, hdata, dwData1, dwData2); } /****************************************************************************** * DdeInitialize (DDEML.2) */ UINT16 WINAPI DdeInitialize16(LPDWORD pidInst, PFNCALLBACK16 pfnCallback, DWORD afCmd, DWORD ulRes) { return WDML_Initialize(pidInst, (PFNCALLBACK)pfnCallback, afCmd, ulRes, FALSE, TRUE); } /***************************************************************** * DdeUninitialize (DDEML.3) */ BOOL16 WINAPI DdeUninitialize16(DWORD idInst) { FIXME(" stub calling DdeUninitialize\n"); return (BOOL16)DdeUninitialize(idInst); } /***************************************************************** * DdeConnectList [DDEML.4] */ HCONVLIST WINAPI DdeConnectList16(DWORD idInst, HSZ hszService, HSZ hszTopic, HCONVLIST hConvList, LPCONVCONTEXT16 pCC) { return DdeConnectList(idInst, hszService, hszTopic, hConvList, (LPCONVCONTEXT)pCC); } /***************************************************************** * DdeQueryNextServer [DDEML.5] */ HCONV WINAPI DdeQueryNextServer16(HCONVLIST hConvList, HCONV hConvPrev) { return DdeQueryNextServer(hConvList, hConvPrev); } /***************************************************************** * DdeDisconnectList (DDEML.6) */ BOOL16 WINAPI DdeDisconnectList16(HCONVLIST hConvList) { return (BOOL16)DdeDisconnectList(hConvList); } /***************************************************************** * DdeQueryString (DDEML.23) */ DWORD WINAPI DdeQueryString16(DWORD idInst, HSZ hsz, LPSTR lpsz, DWORD cchMax, INT16 codepage) { FIXME("(%ld, 0x%x, %p, %ld, %d): stub \n", idInst, hsz, lpsz, cchMax, codepage); return 0; } /***************************************************************** * DdeConnect (DDEML.7) */ HCONV WINAPI DdeConnect16(DWORD idInst, HSZ hszService, HSZ hszTopic, LPCONVCONTEXT16 pCC16) { CONVCONTEXT cc; CONVCONTEXT* pCC = NULL; if (pCC16) { pCC = &cc; cc.cb = sizeof(cc); cc.wFlags = pCC16->wFlags; cc.iCodePage = pCC16->iCodePage; cc.dwLangID = pCC16->dwLangID; cc.dwSecurity = pCC16->dwSecurity; } return DdeConnect(idInst, hszService, hszTopic, pCC); } /***************************************************************** * DdeDisconnect (DDEML.8) */ BOOL16 WINAPI DdeDisconnect16(HCONV hConv) { return (BOOL16)DdeDisconnect(hConv); } /***************************************************************** * DdeSetUserHandle (DDEML.10) */ BOOL16 WINAPI DdeSetUserHandle16(HCONV hConv, DWORD id, DWORD hUser) { return DdeSetUserHandle(hConv, id, hUser); } /***************************************************************** * DdeCreateDataHandle (DDEML.14) */ HDDEDATA WINAPI DdeCreateDataHandle16(DWORD idInst, LPBYTE pSrc, DWORD cb, DWORD cbOff, HSZ hszItem, UINT16 wFmt, UINT16 afCmd) { return DdeCreateDataHandle(idInst, pSrc, cb, cbOff, hszItem, wFmt, afCmd); } /***************************************************************** * DdeCreateStringHandle (DDEML.21) */ HSZ WINAPI DdeCreateStringHandle16(DWORD idInst, LPCSTR str, INT16 codepage) { if (codepage) { return DdeCreateStringHandleA(idInst, str, codepage); } else { TRACE("Default codepage supplied\n"); return DdeCreateStringHandleA(idInst, str, CP_WINANSI); } } /***************************************************************** * DdeFreeStringHandle (DDEML.22) */ BOOL16 WINAPI DdeFreeStringHandle16(DWORD idInst, HSZ hsz) { TRACE("idInst %ld hsz 0x%x\n",idInst,hsz); return (BOOL)DdeFreeStringHandle(idInst, hsz); } /***************************************************************** * DdeFreeDataHandle (DDEML.19) */ BOOL16 WINAPI DdeFreeDataHandle16(HDDEDATA hData) { return (BOOL)DdeFreeDataHandle(hData); } /***************************************************************** * DdeKeepStringHandle (DDEML.24) */ BOOL16 WINAPI DdeKeepStringHandle16(DWORD idInst, HSZ hsz) { return (BOOL)DdeKeepStringHandle(idInst, hsz); } /***************************************************************** * DdeClientTransaction (DDEML.11) */ HDDEDATA WINAPI DdeClientTransaction16(LPVOID pData, DWORD cbData, HCONV hConv, HSZ hszItem, UINT16 wFmt, UINT16 wType, DWORD dwTimeout, LPDWORD pdwResult) { return DdeClientTransaction((LPBYTE)pData, cbData, hConv, hszItem, wFmt, wType, dwTimeout, pdwResult); } /***************************************************************** * * DdeAbandonTransaction (DDEML.12) * */ BOOL16 WINAPI DdeAbandonTransaction16(DWORD idInst, HCONV hConv, DWORD idTransaction) { return DdeAbandonTransaction(idInst, hConv, idTransaction); } /***************************************************************** * DdePostAdvise [DDEML.13] */ BOOL16 WINAPI DdePostAdvise16(DWORD idInst, HSZ hszTopic, HSZ hszItem) { return (BOOL16)DdePostAdvise(idInst, hszTopic, hszItem); } /***************************************************************** * DdeAddData (DDEML.15) */ HDDEDATA WINAPI DdeAddData16(HDDEDATA hData, LPBYTE pSrc, DWORD cb, DWORD cbOff) { return DdeAddData(hData, pSrc, cb, cbOff); } /***************************************************************** * DdeGetData [DDEML.16] */ DWORD WINAPI DdeGetData16( HDDEDATA hData, LPBYTE pDst, DWORD cbMax, DWORD cbOff) { return DdeGetData(hData, pDst, cbMax, cbOff); } /***************************************************************** * DdeAccessData (DDEML.17) */ LPBYTE WINAPI DdeAccessData16(HDDEDATA hData, LPDWORD pcbDataSize) { /* FIXME: there's a memory leak here... */ return (LPBYTE)MapLS(DdeAccessData(hData, pcbDataSize)); } /***************************************************************** * DdeUnaccessData (DDEML.18) */ BOOL16 WINAPI DdeUnaccessData16(HDDEDATA hData) { return DdeUnaccessData(hData); } /***************************************************************** * DdeEnableCallback (DDEML.26) */ BOOL16 WINAPI DdeEnableCallback16(DWORD idInst, HCONV hConv, UINT16 wCmd) { return DdeEnableCallback(idInst, hConv, wCmd); } /***************************************************************** * DdeNameService (DDEML.27) */ HDDEDATA WINAPI DdeNameService16(DWORD idInst, HSZ hsz1, HSZ hsz2, UINT16 afCmd) { return DdeNameService(idInst, hsz1, hsz2, afCmd); } /***************************************************************** * DdeGetLastError (DDEML.20) */ UINT16 WINAPI DdeGetLastError16(DWORD idInst) { return (UINT16)DdeGetLastError(idInst); } /***************************************************************** * DdeCmpStringHandles (DDEML.36) */ INT16 WINAPI DdeCmpStringHandles16(HSZ hsz1, HSZ hsz2) { return DdeCmpStringHandles(hsz1, hsz2); } /****************************************************************** * DdeQueryConvInfo (DDEML.9) * */ UINT16 WINAPI DdeQueryConvInfo16(HCONV hconv, DWORD idTransaction, LPCONVINFO16 lpConvInfo) { FIXME("stub.\n"); return 0; }