From 397964746fc15f39ac7398cfa9821f7e4fd5cdff Mon Sep 17 00:00:00 2001 From: Keith Matthews Date: Sat, 13 Mar 1999 12:53:39 +0000 Subject: [PATCH] Added coded stubs for DdeQueryConvInfo (16 & 32 bit), DdeAddData (32 bit), DdeAbandonTransaction (32 bit), DdeImpersonateClient (32) DdeSetQualityOfService, DdeSetUserHandle. Corrected heap handling in DdeInitializeW, refined CreateMutex error handling. General tidying. --- if1632/ddeml.spec | 4 +- include/ddeml.h | 112 +++++++++++++++++++- include/winnt.h | 12 +++ misc/ddeml.c | 250 +++++++++++++++++++++++++++++++++++++------- relay32/user32.spec | 12 +-- 5 files changed, 341 insertions(+), 49 deletions(-) diff --git a/if1632/ddeml.spec b/if1632/ddeml.spec index 6a89e419f0b..992c8b7fd24 100644 --- a/if1632/ddeml.spec +++ b/if1632/ddeml.spec @@ -8,7 +8,7 @@ type win16 6 pascal DdeDisconnectList(word) DdeDisconnectList16 7 pascal DdeConnect(long long long ptr) DdeConnect16 8 pascal16 DdeDisconnect(long) DdeDisconnect16 -9 stub DdeQueryConvInfo #(word long ptr) DdeQueryConvInfo +9 pascal16 DdeQueryConvInfo (word long ptr) DdeQueryConvInfo16 10 pascal DdeSetUserHandle(word long long) DdeSetUserHandle16 11 pascal DdeClientTransaction(ptr long long long s_word s_word long ptr) DdeClientTransaction16 @@ -23,7 +23,7 @@ type win16 20 pascal16 DdeGetLastError(long) DdeGetLastError16 21 pascal DdeCreateStringHandle(long str s_word) DdeCreateStringHandle16 22 pascal16 DdeFreeStringHandle(long long) DdeFreeStringHandle16 -23 stub DdeQueryString #(long word ptr long word) DdeQueryString +23 pascal DdeQueryString (long word ptr long word) DdeQueryString16 24 pascal16 DdeKeepStringHandle(long long) DdeKeepStringHandle16 26 pascal DdeEnableCallback(long word word) DdeEnableCallback16 diff --git a/include/ddeml.h b/include/ddeml.h index a8f6f3f710d..0de1c6cf063 100644 --- a/include/ddeml.h +++ b/include/ddeml.h @@ -12,10 +12,23 @@ /* Codepage Constants */ + #define CP_WINANSI 1004 #define CP_WINUNICODE 1200 +/* DDE synchronisation constants + */ + #define MSGF_DDEMGR 0x8001 + +#define QID_SYNC16 -1L +#define QID_SYNC 0xFFFFFFFF + +/* Type variation for MS deliberate departures from ANSI standards + */ + +#define EXPENTRY CALLBACK + /*************************************************** FLAGS Section - copied from Microsoft SDK as must be standard, probably Copyright Microsoft Corporation @@ -40,6 +53,8 @@ #define CBF_SKIP_DISCONNECTS 0x00200000 #define CBF_SKIP_ALLNOTIFICATIONS 0x003c0000 +#define CBR_BLOCK 0xFFFFFFFFL + /* * Application command flags */ @@ -85,6 +100,57 @@ ****************************************************/ +/**************************************************** + + Message Types Section + +****************************************************/ + +#define XTYPF_NOBLOCK 0x0002 /* CBR_NOBLOCK will not work */ +#define XTYPF_NODATA 0x0004 /* DDE_FDEFERUPD */ +#define XTYPF_ACKREQ 0x0008 /* DDE_FACKREQ */ + +#define XCLASS_MASK 0xFC00 +#define XCLASS_BOOL 0x1000 +#define XCLASS_DATA 0x2000 +#define XCLASS_FLAGS 0x4000 +#define XCLASS_NOTIFICATION 0x8000 + +#define XTYP_ADVDATA (0x0010 | XCLASS_FLAGS) +#define XTYP_XACT_COMPLETE (0x0080 | XCLASS_NOTIFICATION ) +#define XTYP_REGISTER (0x00A0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK ) +#define XTYP_REQUEST (0x00B0 | XCLASS_DATA ) +#define XTYP_DISCONNECT (0x00C0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK ) +#define XTYP_UNREGISTER (0x00D0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK ) + +/************************************************** + + End of Message Types Section + +****************************************************/ + +/***************************************************** + + DDE Codes for wStatus field + +*****************************************************/ + +#define DDE_FACK 0x8000 +#define DDE_FBUSY 0x4000 +#define DDE_FDEFERUPD 0x4000 +#define DDE_FACKREQ 0x8000 +#define DDE_FRELEASE 0x2000 +#define DDE_FREQUESTED 0x1000 +#define DDE_FAPPSTATUS 0x00FF +#define DDE_FNOTPROCESSED 0x0000 + + +/***************************************************** + + End of wStatus codes + +*****************************************************/ + /**************************************************** Return Codes section again copied from SDK as must be same @@ -130,6 +196,13 @@ typedef DWORD HSZ; typedef DWORD HDDEDATA; typedef CHAR *LPTSTR; + +/******************************************************* + + API Entry Points + +*******************************************************/ + typedef HDDEDATA (CALLBACK *PFNCALLBACK16)(UINT16,UINT16,HCONV,HSZ,HSZ, HDDEDATA,DWORD,DWORD); typedef HDDEDATA (CALLBACK *PFNCALLBACK)(UINT,UINT,HCONV,HSZ,HSZ, @@ -161,6 +234,43 @@ typedef struct DWORD dwSecurity; } CONVCONTEXT, *LPCONVCONTEXT; +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; + +typedef struct +{ + DWORD cb; + DWORD hUser; + HCONV hConvPartner; + HSZ hszSvcPartner; + HSZ hszServiceReq; + HSZ hszTopic; + HSZ hszItem; + UINT wFmt; + UINT wType; + UINT wStatus; + UINT wConvst; + UINT wLastError; + HCONVLIST hConvList; + CONVCONTEXT ConvCtxt; + HWND hwnd; + HWND hwndPartner; +} CONVINFO, *LPCONVINFO; // Internal data structures /* entry for handle table */ @@ -169,7 +279,7 @@ typedef struct DDE_HANDLE_ENTRY { BOOL16 Client_only; // bit wasteful of space but it will be faster BOOL16 Unicode; /* Flag to indicate Win32 API used to initialise */ BOOL16 Win16; /* flag to indicate Win16 API used to initialize */ - LPDWORD Instance_id; // needed to track monitor usage + DWORD Instance_id; // needed to track monitor usage struct DDE_HANDLE_ENTRY *Next_Entry; PFNCALLBACK CallBack; DWORD CBF_Flags; diff --git a/include/winnt.h b/include/winnt.h index 216e4a2a401..35e02c334f7 100644 --- a/include/winnt.h +++ b/include/winnt.h @@ -556,6 +556,18 @@ typedef enum _SECURITY_IMPERSONATION_LEVEL { } SECURITY_IMPERSONATION_LEVEL; +typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE, + * PSECURITY_CONTEXT_TRACKING_MODE; +// +// Quality of Service +// + +typedef struct _SECURITY_QUALITY_OF_SERVICE { + DWORD Length; + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; + SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; + BOOL EffectiveOnly; +} SECURITY_QUALITY_OF_SERVICE, *PSECURITY_QUALITY_OF_SERVICE; /* * TOKEN_STATISTICS diff --git a/misc/ddeml.c b/misc/ddeml.c index 6ab81ccda3b..8432b4b3edf 100644 --- a/misc/ddeml.c +++ b/misc/ddeml.c @@ -17,6 +17,7 @@ #include "heap.h" #include "shm_semaph.h" #include "debug.h" +#include "winnt.h" /* Has defined in atom.c file. */ @@ -28,7 +29,7 @@ static DDE_HANDLE_ENTRY *DDE_Handle_Table_Base = NULL; -static LPDWORD DDE_Max_Assigned_Instance = 0; // OK for present, may have to worry about wrap-around later +static DWORD DDE_Max_Assigned_Instance = 0; // OK for present, may have to worry about wrap-around later static const char inst_string[]= "DDEMaxInstance"; static LPCWSTR DDEInstanceAccess = (LPCWSTR)&inst_string; static const char handle_string[] = "DDEHandleAccess"; @@ -42,7 +43,7 @@ static HANDLE handle_mutex = 0; /* typedef struct { DWORD nLength; LPVOID lpSecurityDescriptor; - BOOL32 bInheritHandle; + BOOL bInheritHandle; } SECURITY_ATTRIBUTES; */ #define TRUE 1 @@ -206,6 +207,7 @@ static void InsertHSZNode( DWORD idInst, HSZ hsz ) * Vn Date Author Comment * * 1.0 Jan 1999 Keith Matthews Initial version + * 1.1 Mar 1999 Keith Matthews Corrected Heap handling. * */ DWORD Release_reserved_mutex (HANDLE mutex, LPTSTR mutex_name, BOOL release_handle_m, BOOL release_this_i ) @@ -214,7 +216,7 @@ static void InsertHSZNode( DWORD idInst, HSZ hsz ) if ( (err_no=GetLastError()) != 0 ) { ERR(ddeml,"ReleaseMutex failed - %s mutex %li\n",mutex_name,err_no); - HeapFree(GetProcessHeap(), 0, this_instance); + HeapFree(SystemHeap, 0, this_instance); if ( release_handle_m ) { ReleaseMutex(handle_mutex); @@ -223,7 +225,7 @@ static void InsertHSZNode( DWORD idInst, HSZ hsz ) } if ( release_this_i ) { - HeapFree(GetProcessHeap(), 0, this_instance); + HeapFree(SystemHeap, 0, this_instance); } return DMLERR_NO_ERROR; } @@ -257,7 +259,7 @@ DWORD IncrementInstanceId() WaitForSingleObject(inst_count_mutex,1000); // subsequent calls /* FIXME - needs refinement with popup for timeout, also is timeout interval OK */ } - if ( (err_no=GetLastError()) == ERROR_INVALID_HANDLE ) + if ( (err_no=GetLastError()) != 0 ) { ERR(ddeml,"CreateMutex failed - inst_count %li\n",err_no); err_no=Release_reserved_mutex (handle_mutex,"handle_mutex",0,1); @@ -275,23 +277,25 @@ DWORD IncrementInstanceId() UINT16 WINAPI DdeInitialize16( LPDWORD pidInst, PFNCALLBACK16 pfnCallback, DWORD afCmd, DWORD ulRes) { + TRACE(ddeml,"DdeInitialize16 called - calling DdeInitializeA\n"); return (UINT16)DdeInitializeA(pidInst,(PFNCALLBACK)pfnCallback, afCmd, ulRes); } /****************************************************************************** - * DdeInitialize32A (USER32.106) + * DdeInitializeA (USER32.106) */ UINT WINAPI DdeInitializeA( LPDWORD pidInst, PFNCALLBACK pfnCallback, DWORD afCmd, DWORD ulRes ) { + TRACE(ddeml,"DdeInitializeA called - calling DdeInitializeW\n"); return DdeInitializeW(pidInst,pfnCallback,afCmd,ulRes); } /****************************************************************************** - * DdeInitialize32W [USER32.107] + * DdeInitializeW [USER32.107] * Registers an application with the DDEML * * PARAMS @@ -312,6 +316,7 @@ UINT WINAPI DdeInitializeA( LPDWORD pidInst, PFNCALLBACK pfnCallback, * * 1.0 Pre 1998 Alexandre/Len Initial Stub * 1.1 Jan 1999 Keith Matthews Initial (near-)complete version + * 1.2 Mar 1999 Keith Matthews Corrected Heap handling, CreateMutex failure handling * */ UINT WINAPI DdeInitializeW( LPDWORD pidInst, PFNCALLBACK pfnCallback, @@ -333,6 +338,9 @@ UINT WINAPI DdeInitializeW( LPDWORD pidInst, PFNCALLBACK pfnCallback, } if (!pfnCallback ) { + /* this one may be wrong - MS dll seems to accept the condition, leave this until we find out more !! */ + + /* can't set up the instance with nothing to act as a callback */ TRACE(ddeml,"No callback provided\n"); return DMLERR_INVALIDPARAMETER; /* might be DMLERR_DLL_USAGE */ @@ -353,7 +361,7 @@ UINT WINAPI DdeInitializeW( LPDWORD pidInst, PFNCALLBACK pfnCallback, // messy bit, spec implies that 'Client Only' can be set in 2 different ways, catch 1 here this_instance->Client_only=afCmd&APPCMD_CLIENTONLY; - this_instance->Instance_id = pidInst; // May need to add calling proc Id + this_instance->Instance_id = *pidInst; // May need to add calling proc Id this_instance->CallBack=*pfnCallback; this_instance->Txn_count=0; this_instance->Unicode = TRUE; @@ -383,10 +391,10 @@ UINT WINAPI DdeInitializeW( LPDWORD pidInst, PFNCALLBACK pfnCallback, s_att->lpSecurityDescriptor = NULL; s_att->nLength = sizeof(s_att); handle_mutex = CreateMutexW(s_att,1,DDEHandleAccess); - if ( (err_no=GetLastError()) == ERROR_INVALID_HANDLE ) + if ( (err_no=GetLastError()) != 0 ) { ERR(ddeml,"CreateMutex failed - handle list %li\n",err_no); - HeapFree(GetProcessHeap(), 0, this_instance); + HeapFree(SystemHeap, 0, this_instance); return DMLERR_SYS_ERROR; } TRACE(ddeml,"Handle Mutex created/reserved\n"); @@ -472,7 +480,7 @@ UINT WINAPI DdeInitializeW( LPDWORD pidInst, PFNCALLBACK pfnCallback, /* FIXME - needs refinement with popup for timeout, also is timeout interval OK */ ERR(ddeml,"WaitForSingleObject failed - handle list %li\n",err_no); - HeapFree(GetProcessHeap(), 0, this_instance); + HeapFree(SystemHeap, 0, this_instance); return DMLERR_SYS_ERROR; } if (DDE_Handle_Table_Base == NULL ) @@ -480,13 +488,13 @@ UINT WINAPI DdeInitializeW( LPDWORD pidInst, PFNCALLBACK pfnCallback, if ( Release_reserved_mutex(handle_mutex,"handle_mutex",0,1)) return DMLERR_SYS_ERROR; return DMLERR_DLL_USAGE; } - HeapFree(GetProcessHeap(), 0, this_instance); // finished - release heap space used as work store + HeapFree(SystemHeap, 0, this_instance); // finished - release heap space used as work store // can't reinitialise if we have initialised nothing !! reference_inst = DDE_Handle_Table_Base; /* must first check if we have been given a valid instance to re-initialise !! how do we do that ? */ while ( reference_inst->Next_Entry != NULL ) { - if ( pidInst == reference_inst->Instance_id && pfnCallback == reference_inst->CallBack ) + if ( *pidInst == reference_inst->Instance_id && pfnCallback == reference_inst->CallBack ) { // Check 1 - cannot change client-only mode if set via APPCMD_CLIENTONLY @@ -546,7 +554,7 @@ BOOL16 WINAPI DdeUninitialize16( DWORD idInst ) /***************************************************************** - * DdeUninitialize32 [USER32.119] Frees DDEML resources + * DdeUninitialize [USER32.119] Frees DDEML resources * * PARAMS * idInst [I] Instance identifier @@ -581,7 +589,7 @@ HCONVLIST WINAPI DdeConnectList16( DWORD idInst, HSZ hszService, HSZ hszTopic, /****************************************************************************** - * DdeConnectList32 [USER32.93] Establishes conversation with DDE servers + * DdeConnectList [USER32.93] Establishes conversation with DDE servers * * PARAMS * idInst [I] Instance identifier @@ -613,7 +621,7 @@ HCONV WINAPI DdeQueryNextServer16( HCONVLIST hConvList, HCONV hConvPrev ) /***************************************************************** - * DdeQueryNextServer32 [USER32.112] + * DdeQueryNextServer [USER32.112] */ HCONV WINAPI DdeQueryNextServer( HCONVLIST hConvList, HCONV hConvPrev ) { @@ -622,7 +630,16 @@ HCONV WINAPI DdeQueryNextServer( HCONVLIST hConvList, HCONV hConvPrev ) } /***************************************************************** - * DdeQueryString32A [USER32.113] + * DdeQueryStringA [USER32.113] + * + ***************************************************************** + * + * Change History + * + * Vn Date Author Comment + * + * 1.0 Dec 1998 Corel/Macadamian Initial version + * */ DWORD WINAPI DdeQueryStringA(DWORD idInst, HSZ hsz, LPSTR psz, DWORD cchMax, INT iCodePage) { @@ -655,7 +672,16 @@ DWORD WINAPI DdeQueryStringA(DWORD idInst, HSZ hsz, LPSTR psz, DWORD cchMax, INT } /***************************************************************** - * DdeQueryString32W [USER32.114] + * DdeQueryStringW [USER32.114] + * + ***************************************************************** + * + * Change History + * + * Vn Date Author Comment + * + * 1.0 Dec 1998 Corel/Macadamian Initial version + * */ DWORD WINAPI DdeQueryStringW(DWORD idInst, HSZ hsz, LPWSTR psz, DWORD cchMax, INT iCodePage) { @@ -690,6 +716,30 @@ DWORD WINAPI DdeQueryStringW(DWORD idInst, HSZ hsz, LPWSTR psz, DWORD cchMax, IN return ret; } +/***************************************************************** +* +* DdeQueryString16 (DDEML.23) +* +****************************************************************** + * + * Change History + * + * Vn Date Author Comment + * + * 1.0 March 1999 K Matthews stub only + */ + +DWORD DdeQueryString16(DWORD idInst, HSZ hsz, LPSTR lpsz, DWORD cchMax, int codepage) +{ + FIXME(ddeml,"(%ld, 0x%lx, %p, %ld, %d): stub \n", + idInst, + hsz, + lpsz, + cchMax, + codepage); + return 0; +} + /***************************************************************** * DdeDisconnectList (DDEML.6) @@ -701,7 +751,7 @@ BOOL16 WINAPI DdeDisconnectList16( HCONVLIST hConvList ) /****************************************************************************** - * DdeDisconnectList32 [USER32.98] Destroys list and terminates conversations + * DdeDisconnectList [USER32.98] Destroys list and terminates conversations * * RETURNS * Success: TRUE @@ -727,7 +777,7 @@ HCONV WINAPI DdeConnect16( DWORD idInst, HSZ hszService, HSZ hszTopic, /***************************************************************** - * DdeConnect32 (USER32.92) + * DdeConnect (USER32.92) */ HCONV WINAPI DdeConnect( DWORD idInst, HSZ hszService, HSZ hszTopic, LPCONVCONTEXT pCC ) @@ -747,7 +797,7 @@ BOOL16 WINAPI DdeDisconnect16( HCONV hConv ) } /***************************************************************** - * DdeSetUserHandle (DDEML.10) + * DdeSetUserHandle16 (DDEML.10) */ BOOL16 WINAPI DdeSetUserHandle16( HCONV hConv, DWORD id, DWORD hUser ) { @@ -772,7 +822,7 @@ HDDEDATA WINAPI DdeCreateDataHandle16( DWORD idInst, LPBYTE pSrc, DWORD cb, } /***************************************************************** - * DdeCreateDataHandle32 (USER32.94) + * DdeCreateDataHandle (USER32.94) */ HDDEDATA WINAPI DdeCreateDataHandle( DWORD idInst, LPBYTE pSrc, DWORD cb, DWORD cbOff, HSZ hszItem, UINT wFmt, @@ -792,7 +842,7 @@ HDDEDATA WINAPI DdeCreateDataHandle( DWORD idInst, LPBYTE pSrc, DWORD cb, } /***************************************************************** - * DdeDisconnect32 (USER32.97) + * DdeDisconnect (USER32.97) */ BOOL WINAPI DdeDisconnect( HCONV hConv ) { @@ -821,7 +871,7 @@ HSZ WINAPI DdeCreateStringHandle16( DWORD idInst, LPCSTR str, INT16 codepage ) /***************************************************************** - * DdeCreateStringHandle32A [USER32.95] + * DdeCreateStringHandleA [USER32.95] * * RETURNS * Success: String handle @@ -846,7 +896,7 @@ HSZ WINAPI DdeCreateStringHandleA( DWORD idInst, LPCSTR psz, INT codepage ) /****************************************************************************** - * DdeCreateStringHandle32W [USER32.96] Creates handle to identify string + * DdeCreateStringHandleW [USER32.96] Creates handle to identify string * * RETURNS * Success: String handle @@ -884,7 +934,7 @@ BOOL16 WINAPI DdeFreeStringHandle16( DWORD idInst, HSZ hsz ) /***************************************************************** - * DdeFreeStringHandle32 (USER32.101) + * DdeFreeStringHandle (USER32.101) * RETURNS: success: nonzero * fail: zero */ @@ -910,7 +960,7 @@ BOOL16 WINAPI DdeFreeDataHandle16( HDDEDATA hData ) /***************************************************************** - * DdeFreeDataHandle32 (USER32.100) + * DdeFreeDataHandle (USER32.100) */ BOOL WINAPI DdeFreeDataHandle( HDDEDATA hData ) { @@ -931,7 +981,7 @@ BOOL16 WINAPI DdeKeepStringHandle16( DWORD idInst, HSZ hsz ) /***************************************************************** - * DdeKeepStringHandle32 (USER32.108) + * DdeKeepStringHandle (USER32.108) */ BOOL WINAPI DdeKeepStringHandle( DWORD idInst, HSZ hsz ) { @@ -954,7 +1004,7 @@ HDDEDATA WINAPI DdeClientTransaction16( LPVOID pData, DWORD cbData, /***************************************************************** - * DdeClientTransaction32 (USER32.90) + * DdeClientTransaction (USER32.90) */ HDDEDATA WINAPI DdeClientTransaction( LPBYTE pData, DWORD cbData, HCONV hConv, HSZ hszItem, UINT wFmt, @@ -966,16 +1016,37 @@ HDDEDATA WINAPI DdeClientTransaction( LPBYTE pData, DWORD cbData, } /***************************************************************** - * DdeAbandonTransaction (DDEML.12) + * + * DdeAbandonTransaction16 (DDEML.12) + * */ BOOL16 WINAPI DdeAbandonTransaction16( DWORD idInst, HCONV hConv, DWORD idTransaction ) { FIXME( ddeml, "empty stub\n" ); - return 0; + return TRUE; } +/***************************************************************** + * + * DdeAbandonTransaction (USER32.87) + * +****************************************************************** + * + * Change History + * + * Vn Date Author Comment + * + * 1.0 March 1999 K Matthews stub only + */ +BOOL WINAPI DdeAbandonTransaction( DWORD idInst, HCONV hConv, + DWORD idTransaction ) +{ + FIXME( ddeml, "empty stub\n" ); + return TRUE; +} + /***************************************************************** * DdePostAdvise16 [DDEML.13] */ @@ -986,7 +1057,7 @@ BOOL16 WINAPI DdePostAdvise16( DWORD idInst, HSZ hszTopic, HSZ hszItem ) /****************************************************************************** - * DdePostAdvise32 [USER32.110] Send transaction to DDE callback function. + * DdePostAdvise [USER32.110] Send transaction to DDE callback function. * * RETURNS * Success: TRUE @@ -1003,7 +1074,7 @@ BOOL WINAPI DdePostAdvise( /***************************************************************** - * DdeAddData (DDEML.15) + * DdeAddData16 (DDEML.15) */ HDDEDATA WINAPI DdeAddData16( HDDEDATA hData, LPBYTE pSrc, DWORD cb, DWORD cbOff ) @@ -1012,9 +1083,87 @@ HDDEDATA WINAPI DdeAddData16( HDDEDATA hData, LPBYTE pSrc, DWORD cb, return 0; } +/***************************************************************** + * + * DdeAddData (USER32.89) + * +****************************************************************** + * + * Change History + * + * Vn Date Author Comment + * + * 1.0 March 1999 K Matthews stub only + */ +HDDEDATA WINAPI DdeAddData( HDDEDATA hData, LPBYTE pSrc, DWORD cb, + DWORD cbOff ) +{ + FIXME( ddeml, "empty stub\n" ); + return 0; +} + + +/***************************************************************** + * + * DdeImpersonateClient (USER32.105) + * +****************************************************************** + * + * Change History + * + * Vn Date Author Comment + * + * 1.0 March 1999 K Matthews stub only + */ + +BOOL WINAPI DdeImpersonateClient( HCONV hConv) +{ + FIXME( ddeml, "empty stub\n" ); + return TRUE; +} + + +/***************************************************************** + * + * DdeSetQualityOfService (USER32.116) + * +****************************************************************** + * + * Change History + * + * Vn Date Author Comment + * + * 1.0 March 1999 K Matthews stub only + */ + +BOOL WINAPI DdeSetQualityOfService( HWND hwndClient, CONST SECURITY_QUALITY_OF_SERVICE *pqosNew, + PSECURITY_QUALITY_OF_SERVICE pqosPrev) +{ + FIXME( ddeml, "empty stub\n" ); + return TRUE; +} + +/***************************************************************** + * + * DdeSetUserHandle (USER32.117) + * +****************************************************************** + * + * Change History + * + * Vn Date Author Comment + * + * 1.0 March 1999 K Matthews stub only + */ + +BOOL WINAPI DdeSetUserHandle( HCONV hConv, DWORD id, DWORD hUser) +{ + FIXME( ddeml, "empty stub\n" ); + return TRUE; +} /****************************************************************************** - * DdeGetData32 [USER32.102] Copies data from DDE object ot local buffer + * DdeGetData [USER32.102] Copies data from DDE object ot local buffer * * RETURNS * Size of memory object associated with handle @@ -1052,7 +1201,7 @@ LPBYTE WINAPI DdeAccessData16( HDDEDATA hData, LPDWORD pcbDataSize ) } /***************************************************************** - * DdeAccessData32 (USER32.88) + * DdeAccessData (USER32.88) */ LPBYTE WINAPI DdeAccessData( HDDEDATA hData, LPDWORD pcbDataSize ) { @@ -1069,7 +1218,7 @@ BOOL16 WINAPI DdeUnaccessData16( HDDEDATA hData ) } /***************************************************************** - * DdeUnaccessData32 (USER32.118) + * DdeUnaccessData (USER32.118) */ BOOL WINAPI DdeUnaccessData( HDDEDATA hData ) { @@ -1087,7 +1236,7 @@ BOOL16 WINAPI DdeEnableCallback16( DWORD idInst, HCONV hConv, UINT16 wCmd ) } /***************************************************************** - * DdeEnableCallback32 (USER32.99) + * DdeEnableCallback (USER32.99) */ BOOL WINAPI DdeEnableCallback( DWORD idInst, HCONV hConv, UINT wCmd ) { @@ -1107,7 +1256,7 @@ HDDEDATA WINAPI DdeNameService16( DWORD idInst, HSZ hsz1, HSZ hsz2, /****************************************************************************** - * DdeNameService32 [USER32.109] {Un}registers service name of DDE server + * DdeNameService [USER32.109] {Un}registers service name of DDE server * * PARAMS * idInst [I] Instance identifier @@ -1137,7 +1286,7 @@ UINT16 WINAPI DdeGetLastError16( DWORD idInst ) /****************************************************************************** - * DdeGetLastError32 [USER32.103] Gets most recent error code + * DdeGetLastError [USER32.103] Gets most recent error code * * PARAMS * idInst [I] Instance identifier @@ -1161,7 +1310,7 @@ int WINAPI DdeCmpStringHandles16( HSZ hsz1, HSZ hsz2 ) } /***************************************************************** - * DdeCmpStringHandles32 (USER32.91) + * DdeCmpStringHandles (USER32.91) * * Compares the value of two string handles. This comparison is * not case sensitive. @@ -1277,3 +1426,24 @@ UINT WINAPI ReuseDDElParam(UINT lParam, UINT msgIn, UINT msgOut, FIXME(ddeml, "stub.\n"); return 0; } + +/****************************************************************** + * DdeQueryConvInfo16 (DDEML.9) + * + */ +UINT16 WINAPI DdeQueryConvInfo16( HCONV hconv, DWORD idTransaction , LPCONVINFO16 lpConvInfo) +{ + FIXME(ddeml,"stub.\n"); + return 0; +} + + +/****************************************************************** + * DdeQueryConvInfo (USER32.111) + * + */ +UINT WINAPI DdeQueryConvInfo( HCONV hconv, DWORD idTransaction , LPCONVINFO lpConvInfo) +{ + FIXME(ddeml,"stub.\n"); + return 0; +} diff --git a/relay32/user32.spec b/relay32/user32.spec index 559720c4200..d33151f91c8 100644 --- a/relay32/user32.spec +++ b/relay32/user32.spec @@ -88,9 +88,9 @@ init MAIN_UserInit 84 stdcall CreateWindowExW(long wstr wstr long long long long long long long long ptr) CreateWindowExW 85 stub CreateWindowStationA 86 stdcall CreateWindowStationW(wstr long long ptr) CreateWindowStationW - 87 stub DdeAbandonTransaction + 87 stdcall DdeAbandonTransaction(long long long)DdeAbandonTransaction 88 stdcall DdeAccessData(long ptr) DdeAccessData - 89 stub DdeAddData + 89 stdcall DdeAddData(long ptr long long) DdeAddData 90 stdcall DdeClientTransaction(ptr long long long long long long ptr) DdeClientTransaction 91 stdcall DdeCmpStringHandles(long long) DdeCmpStringHandles 92 stdcall DdeConnect(long long long ptr) DdeConnect @@ -106,19 +106,19 @@ init MAIN_UserInit 102 stdcall DdeGetData(long ptr long long) DdeGetData 103 stdcall DdeGetLastError(long) DdeGetLastError 104 stub DdeGetQualityOfService -105 stub DdeImpersonateClient +105 stdcall DdeImpersonateClient(long) DdeImpersonateClient 106 stdcall DdeInitializeA(ptr ptr long long) DdeInitializeA 107 stdcall DdeInitializeW(ptr ptr long long) DdeInitializeW 108 stdcall DdeKeepStringHandle(long long) DdeKeepStringHandle 109 stdcall DdeNameService(long long long long) DdeNameService 110 stdcall DdePostAdvise(long long long) DdePostAdvise -111 stub DdeQueryConvInfo +111 stdcall DdeQueryConvInfo(long long ptr) DdeQueryConvInfo 112 stdcall DdeQueryNextServer(long long) DdeQueryNextServer 113 stdcall DdeQueryStringA(long long ptr long long) DdeQueryStringA 114 stdcall DdeQueryStringW(long long ptr long long) DdeQueryStringW 115 stdcall DdeReconnect(long) DdeReconnect -116 stub DdeSetQualityOfService -117 stub DdeSetUserHandle +116 stdcall DdeSetQualityOfService(long ptr ptr) DdeSetQualityOfService +117 stdcall DdeSetUserHandle (long long long) DdeSetUserHandle 118 stdcall DdeUnaccessData(long) DdeUnaccessData 119 stdcall DdeUninitialize(long) DdeUninitialize 120 stdcall DefDlgProcA(long long long long) DefDlgProcA