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.
This commit is contained in:
Keith Matthews 1999-03-13 12:53:39 +00:00 committed by Alexandre Julliard
parent cbb9549687
commit 397964746f
5 changed files with 341 additions and 49 deletions

View File

@ -8,7 +8,7 @@ type win16
6 pascal DdeDisconnectList(word) DdeDisconnectList16 6 pascal DdeDisconnectList(word) DdeDisconnectList16
7 pascal DdeConnect(long long long ptr) DdeConnect16 7 pascal DdeConnect(long long long ptr) DdeConnect16
8 pascal16 DdeDisconnect(long) DdeDisconnect16 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 10 pascal DdeSetUserHandle(word long long) DdeSetUserHandle16
11 pascal DdeClientTransaction(ptr long long long s_word s_word long ptr) 11 pascal DdeClientTransaction(ptr long long long s_word s_word long ptr)
DdeClientTransaction16 DdeClientTransaction16
@ -23,7 +23,7 @@ type win16
20 pascal16 DdeGetLastError(long) DdeGetLastError16 20 pascal16 DdeGetLastError(long) DdeGetLastError16
21 pascal DdeCreateStringHandle(long str s_word) DdeCreateStringHandle16 21 pascal DdeCreateStringHandle(long str s_word) DdeCreateStringHandle16
22 pascal16 DdeFreeStringHandle(long long) DdeFreeStringHandle16 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 24 pascal16 DdeKeepStringHandle(long long) DdeKeepStringHandle16
26 pascal DdeEnableCallback(long word word) DdeEnableCallback16 26 pascal DdeEnableCallback(long word word) DdeEnableCallback16

View File

@ -12,10 +12,23 @@
/* Codepage Constants /* Codepage Constants
*/ */
#define CP_WINANSI 1004 #define CP_WINANSI 1004
#define CP_WINUNICODE 1200 #define CP_WINUNICODE 1200
/* DDE synchronisation constants
*/
#define MSGF_DDEMGR 0x8001 #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 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_DISCONNECTS 0x00200000
#define CBF_SKIP_ALLNOTIFICATIONS 0x003c0000 #define CBF_SKIP_ALLNOTIFICATIONS 0x003c0000
#define CBR_BLOCK 0xFFFFFFFFL
/* /*
* Application command flags * 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 Return Codes section again copied from SDK as must be same
@ -130,6 +196,13 @@ typedef DWORD HSZ;
typedef DWORD HDDEDATA; typedef DWORD HDDEDATA;
typedef CHAR *LPTSTR; typedef CHAR *LPTSTR;
/*******************************************************
API Entry Points
*******************************************************/
typedef HDDEDATA (CALLBACK *PFNCALLBACK16)(UINT16,UINT16,HCONV,HSZ,HSZ, typedef HDDEDATA (CALLBACK *PFNCALLBACK16)(UINT16,UINT16,HCONV,HSZ,HSZ,
HDDEDATA,DWORD,DWORD); HDDEDATA,DWORD,DWORD);
typedef HDDEDATA (CALLBACK *PFNCALLBACK)(UINT,UINT,HCONV,HSZ,HSZ, typedef HDDEDATA (CALLBACK *PFNCALLBACK)(UINT,UINT,HCONV,HSZ,HSZ,
@ -161,6 +234,43 @@ typedef struct
DWORD dwSecurity; DWORD dwSecurity;
} CONVCONTEXT, *LPCONVCONTEXT; } 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 // Internal data structures
/* entry for handle table */ /* 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 Client_only; // bit wasteful of space but it will be faster
BOOL16 Unicode; /* Flag to indicate Win32 API used to initialise */ BOOL16 Unicode; /* Flag to indicate Win32 API used to initialise */
BOOL16 Win16; /* flag to indicate Win16 API used to initialize */ 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; struct DDE_HANDLE_ENTRY *Next_Entry;
PFNCALLBACK CallBack; PFNCALLBACK CallBack;
DWORD CBF_Flags; DWORD CBF_Flags;

View File

@ -556,6 +556,18 @@ typedef enum _SECURITY_IMPERSONATION_LEVEL {
} 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 * TOKEN_STATISTICS

View File

@ -17,6 +17,7 @@
#include "heap.h" #include "heap.h"
#include "shm_semaph.h" #include "shm_semaph.h"
#include "debug.h" #include "debug.h"
#include "winnt.h"
/* Has defined in atom.c file. /* Has defined in atom.c file.
*/ */
@ -28,7 +29,7 @@
static DDE_HANDLE_ENTRY *DDE_Handle_Table_Base = NULL; 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 const char inst_string[]= "DDEMaxInstance";
static LPCWSTR DDEInstanceAccess = (LPCWSTR)&inst_string; static LPCWSTR DDEInstanceAccess = (LPCWSTR)&inst_string;
static const char handle_string[] = "DDEHandleAccess"; static const char handle_string[] = "DDEHandleAccess";
@ -42,7 +43,7 @@ static HANDLE handle_mutex = 0;
/* typedef struct { /* typedef struct {
DWORD nLength; DWORD nLength;
LPVOID lpSecurityDescriptor; LPVOID lpSecurityDescriptor;
BOOL32 bInheritHandle; BOOL bInheritHandle;
} SECURITY_ATTRIBUTES; */ } SECURITY_ATTRIBUTES; */
#define TRUE 1 #define TRUE 1
@ -206,6 +207,7 @@ static void InsertHSZNode( DWORD idInst, HSZ hsz )
* Vn Date Author Comment * Vn Date Author Comment
* *
* 1.0 Jan 1999 Keith Matthews Initial version * 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 ) 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 ) if ( (err_no=GetLastError()) != 0 )
{ {
ERR(ddeml,"ReleaseMutex failed - %s mutex %li\n",mutex_name,err_no); 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 ) if ( release_handle_m )
{ {
ReleaseMutex(handle_mutex); ReleaseMutex(handle_mutex);
@ -223,7 +225,7 @@ static void InsertHSZNode( DWORD idInst, HSZ hsz )
} }
if ( release_this_i ) if ( release_this_i )
{ {
HeapFree(GetProcessHeap(), 0, this_instance); HeapFree(SystemHeap, 0, this_instance);
} }
return DMLERR_NO_ERROR; return DMLERR_NO_ERROR;
} }
@ -257,7 +259,7 @@ DWORD IncrementInstanceId()
WaitForSingleObject(inst_count_mutex,1000); // subsequent calls WaitForSingleObject(inst_count_mutex,1000); // subsequent calls
/* FIXME - needs refinement with popup for timeout, also is timeout interval OK */ /* 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(ddeml,"CreateMutex failed - inst_count %li\n",err_no);
err_no=Release_reserved_mutex (handle_mutex,"handle_mutex",0,1); err_no=Release_reserved_mutex (handle_mutex,"handle_mutex",0,1);
@ -275,23 +277,25 @@ DWORD IncrementInstanceId()
UINT16 WINAPI DdeInitialize16( LPDWORD pidInst, PFNCALLBACK16 pfnCallback, UINT16 WINAPI DdeInitialize16( LPDWORD pidInst, PFNCALLBACK16 pfnCallback,
DWORD afCmd, DWORD ulRes) DWORD afCmd, DWORD ulRes)
{ {
TRACE(ddeml,"DdeInitialize16 called - calling DdeInitializeA\n");
return (UINT16)DdeInitializeA(pidInst,(PFNCALLBACK)pfnCallback, return (UINT16)DdeInitializeA(pidInst,(PFNCALLBACK)pfnCallback,
afCmd, ulRes); afCmd, ulRes);
} }
/****************************************************************************** /******************************************************************************
* DdeInitialize32A (USER32.106) * DdeInitializeA (USER32.106)
*/ */
UINT WINAPI DdeInitializeA( LPDWORD pidInst, PFNCALLBACK pfnCallback, UINT WINAPI DdeInitializeA( LPDWORD pidInst, PFNCALLBACK pfnCallback,
DWORD afCmd, DWORD ulRes ) DWORD afCmd, DWORD ulRes )
{ {
TRACE(ddeml,"DdeInitializeA called - calling DdeInitializeW\n");
return DdeInitializeW(pidInst,pfnCallback,afCmd,ulRes); return DdeInitializeW(pidInst,pfnCallback,afCmd,ulRes);
} }
/****************************************************************************** /******************************************************************************
* DdeInitialize32W [USER32.107] * DdeInitializeW [USER32.107]
* Registers an application with the DDEML * Registers an application with the DDEML
* *
* PARAMS * PARAMS
@ -312,6 +316,7 @@ UINT WINAPI DdeInitializeA( LPDWORD pidInst, PFNCALLBACK pfnCallback,
* *
* 1.0 Pre 1998 Alexandre/Len Initial Stub * 1.0 Pre 1998 Alexandre/Len Initial Stub
* 1.1 Jan 1999 Keith Matthews Initial (near-)complete version * 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, UINT WINAPI DdeInitializeW( LPDWORD pidInst, PFNCALLBACK pfnCallback,
@ -333,6 +338,9 @@ UINT WINAPI DdeInitializeW( LPDWORD pidInst, PFNCALLBACK pfnCallback,
} }
if (!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 */ /* can't set up the instance with nothing to act as a callback */
TRACE(ddeml,"No callback provided\n"); TRACE(ddeml,"No callback provided\n");
return DMLERR_INVALIDPARAMETER; /* might be DMLERR_DLL_USAGE */ 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 // 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->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->CallBack=*pfnCallback;
this_instance->Txn_count=0; this_instance->Txn_count=0;
this_instance->Unicode = TRUE; this_instance->Unicode = TRUE;
@ -383,10 +391,10 @@ UINT WINAPI DdeInitializeW( LPDWORD pidInst, PFNCALLBACK pfnCallback,
s_att->lpSecurityDescriptor = NULL; s_att->lpSecurityDescriptor = NULL;
s_att->nLength = sizeof(s_att); s_att->nLength = sizeof(s_att);
handle_mutex = CreateMutexW(s_att,1,DDEHandleAccess); 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); ERR(ddeml,"CreateMutex failed - handle list %li\n",err_no);
HeapFree(GetProcessHeap(), 0, this_instance); HeapFree(SystemHeap, 0, this_instance);
return DMLERR_SYS_ERROR; return DMLERR_SYS_ERROR;
} }
TRACE(ddeml,"Handle Mutex created/reserved\n"); 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 */ /* FIXME - needs refinement with popup for timeout, also is timeout interval OK */
ERR(ddeml,"WaitForSingleObject failed - handle list %li\n",err_no); ERR(ddeml,"WaitForSingleObject failed - handle list %li\n",err_no);
HeapFree(GetProcessHeap(), 0, this_instance); HeapFree(SystemHeap, 0, this_instance);
return DMLERR_SYS_ERROR; return DMLERR_SYS_ERROR;
} }
if (DDE_Handle_Table_Base == NULL ) 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; if ( Release_reserved_mutex(handle_mutex,"handle_mutex",0,1)) return DMLERR_SYS_ERROR;
return DMLERR_DLL_USAGE; 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 !! // can't reinitialise if we have initialised nothing !!
reference_inst = DDE_Handle_Table_Base; 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 ? */ /* 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 ) 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 // 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 * PARAMS
* idInst [I] Instance identifier * 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 * PARAMS
* idInst [I] Instance identifier * 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 ) 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) 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) 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; 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) * 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 * RETURNS
* Success: TRUE * 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, HCONV WINAPI DdeConnect( DWORD idInst, HSZ hszService, HSZ hszTopic,
LPCONVCONTEXT pCC ) 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 ) 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, HDDEDATA WINAPI DdeCreateDataHandle( DWORD idInst, LPBYTE pSrc, DWORD cb,
DWORD cbOff, HSZ hszItem, UINT wFmt, 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 ) 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 * RETURNS
* Success: String handle * 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 * RETURNS
* Success: String handle * Success: String handle
@ -884,7 +934,7 @@ BOOL16 WINAPI DdeFreeStringHandle16( DWORD idInst, HSZ hsz )
/***************************************************************** /*****************************************************************
* DdeFreeStringHandle32 (USER32.101) * DdeFreeStringHandle (USER32.101)
* RETURNS: success: nonzero * RETURNS: success: nonzero
* fail: zero * fail: zero
*/ */
@ -910,7 +960,7 @@ BOOL16 WINAPI DdeFreeDataHandle16( HDDEDATA hData )
/***************************************************************** /*****************************************************************
* DdeFreeDataHandle32 (USER32.100) * DdeFreeDataHandle (USER32.100)
*/ */
BOOL WINAPI DdeFreeDataHandle( HDDEDATA hData ) 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 ) 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, HDDEDATA WINAPI DdeClientTransaction( LPBYTE pData, DWORD cbData,
HCONV hConv, HSZ hszItem, UINT wFmt, 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, BOOL16 WINAPI DdeAbandonTransaction16( DWORD idInst, HCONV hConv,
DWORD idTransaction ) DWORD idTransaction )
{ {
FIXME( ddeml, "empty stub\n" ); 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] * 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 * RETURNS
* Success: TRUE * Success: TRUE
@ -1003,7 +1074,7 @@ BOOL WINAPI DdePostAdvise(
/***************************************************************** /*****************************************************************
* DdeAddData (DDEML.15) * DdeAddData16 (DDEML.15)
*/ */
HDDEDATA WINAPI DdeAddData16( HDDEDATA hData, LPBYTE pSrc, DWORD cb, HDDEDATA WINAPI DdeAddData16( HDDEDATA hData, LPBYTE pSrc, DWORD cb,
DWORD cbOff ) DWORD cbOff )
@ -1012,9 +1083,87 @@ HDDEDATA WINAPI DdeAddData16( HDDEDATA hData, LPBYTE pSrc, DWORD cb,
return 0; 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 * RETURNS
* Size of memory object associated with handle * 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 ) 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 ) 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 ) 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 * PARAMS
* idInst [I] Instance identifier * 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 * PARAMS
* idInst [I] Instance identifier * 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 * Compares the value of two string handles. This comparison is
* not case sensitive. * not case sensitive.
@ -1277,3 +1426,24 @@ UINT WINAPI ReuseDDElParam(UINT lParam, UINT msgIn, UINT msgOut,
FIXME(ddeml, "stub.\n"); FIXME(ddeml, "stub.\n");
return 0; 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;
}

View File

@ -88,9 +88,9 @@ init MAIN_UserInit
84 stdcall CreateWindowExW(long wstr wstr long long long long long long long long ptr) CreateWindowExW 84 stdcall CreateWindowExW(long wstr wstr long long long long long long long long ptr) CreateWindowExW
85 stub CreateWindowStationA 85 stub CreateWindowStationA
86 stdcall CreateWindowStationW(wstr long long ptr) CreateWindowStationW 86 stdcall CreateWindowStationW(wstr long long ptr) CreateWindowStationW
87 stub DdeAbandonTransaction 87 stdcall DdeAbandonTransaction(long long long)DdeAbandonTransaction
88 stdcall DdeAccessData(long ptr) DdeAccessData 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 90 stdcall DdeClientTransaction(ptr long long long long long long ptr) DdeClientTransaction
91 stdcall DdeCmpStringHandles(long long) DdeCmpStringHandles 91 stdcall DdeCmpStringHandles(long long) DdeCmpStringHandles
92 stdcall DdeConnect(long long long ptr) DdeConnect 92 stdcall DdeConnect(long long long ptr) DdeConnect
@ -106,19 +106,19 @@ init MAIN_UserInit
102 stdcall DdeGetData(long ptr long long) DdeGetData 102 stdcall DdeGetData(long ptr long long) DdeGetData
103 stdcall DdeGetLastError(long) DdeGetLastError 103 stdcall DdeGetLastError(long) DdeGetLastError
104 stub DdeGetQualityOfService 104 stub DdeGetQualityOfService
105 stub DdeImpersonateClient 105 stdcall DdeImpersonateClient(long) DdeImpersonateClient
106 stdcall DdeInitializeA(ptr ptr long long) DdeInitializeA 106 stdcall DdeInitializeA(ptr ptr long long) DdeInitializeA
107 stdcall DdeInitializeW(ptr ptr long long) DdeInitializeW 107 stdcall DdeInitializeW(ptr ptr long long) DdeInitializeW
108 stdcall DdeKeepStringHandle(long long) DdeKeepStringHandle 108 stdcall DdeKeepStringHandle(long long) DdeKeepStringHandle
109 stdcall DdeNameService(long long long long) DdeNameService 109 stdcall DdeNameService(long long long long) DdeNameService
110 stdcall DdePostAdvise(long long long) DdePostAdvise 110 stdcall DdePostAdvise(long long long) DdePostAdvise
111 stub DdeQueryConvInfo 111 stdcall DdeQueryConvInfo(long long ptr) DdeQueryConvInfo
112 stdcall DdeQueryNextServer(long long) DdeQueryNextServer 112 stdcall DdeQueryNextServer(long long) DdeQueryNextServer
113 stdcall DdeQueryStringA(long long ptr long long) DdeQueryStringA 113 stdcall DdeQueryStringA(long long ptr long long) DdeQueryStringA
114 stdcall DdeQueryStringW(long long ptr long long) DdeQueryStringW 114 stdcall DdeQueryStringW(long long ptr long long) DdeQueryStringW
115 stdcall DdeReconnect(long) DdeReconnect 115 stdcall DdeReconnect(long) DdeReconnect
116 stub DdeSetQualityOfService 116 stdcall DdeSetQualityOfService(long ptr ptr) DdeSetQualityOfService
117 stub DdeSetUserHandle 117 stdcall DdeSetUserHandle (long long long) DdeSetUserHandle
118 stdcall DdeUnaccessData(long) DdeUnaccessData 118 stdcall DdeUnaccessData(long) DdeUnaccessData
119 stdcall DdeUninitialize(long) DdeUninitialize 119 stdcall DdeUninitialize(long) DdeUninitialize
120 stdcall DefDlgProcA(long long long long) DefDlgProcA 120 stdcall DefDlgProcA(long long long long) DefDlgProcA