67 if (!atom)
return FALSE;
80 FIXME(
"too high value for count\n");
94 FIXME(
"CBR_BLOCK returned for ADVREQ\n");
106 TRACE(
"with data\n");
122 ERR(
"post message failed\n");
161 TRACE(
"(%d,%p,%p,%x)\n", idInst, hsz1, hsz2, afCmd);
168 TRACE(
"Instance not found as initialised\n");
178 WARN(
"Reserved parameter no-zero !!\n");
186 TRACE(
"General unregister unexpected flags\n");
197 ERR(
"Trying to register already registered service!\n");
202 TRACE(
"Adding service name\n");
211 wndclass.
cbSize =
sizeof(wndclass);
232 TRACE(
"Created nameServer=%p for instance=%08x\n", hwndServer, idInst);
234 pServer->hwndServer = hwndServer;
246 TRACE(
"General de-register - finished\n");
272 return (HDDEDATA)
TRUE;
290 wndclass.
cbSize =
sizeof(wndclass);
307 hwndServerName, 0, 0, 0);
313 wndclass.
cbSize =
sizeof(wndclass);
330 hwndServerName, 0, 0, 0);
333 TRACE(
"Created convServer=%p (nameServer=%p) for instance=%08x unicode=%d\n",
337 hwndClient, hwndServerConv);
381 TRACE(
"WM_DDE_INITIATE message received!\n");
416 memset(pcc, 0,
sizeof(*pcc));
417 pcc->
cb =
sizeof(*pcc);
422 TRACE(
"Don't do self connection as requested\n");
424 else if (hszApp && hszTop)
433 0, 0, hszTop, hszApp, 0, (
ULONG_PTR)pcc,
self);
442 hszTop, hszApp, 0, (
ULONG_PTR)pcc,
self);
451 0, 0, hszTop, hszApp, 0, (
ULONG_PTR)pcc,
self);
456 FIXME(
"CBR_BLOCK returned for WILDCONNECT\n");
487 FIXME(
"WM_DDE_REQUEST message received!\n");
490 FIXME(
"WM_DDE_ADVISE message received!\n");
493 FIXME(
"WM_DDE_UNADVISE message received!\n");
496 FIXME(
"WM_DDE_EXECUTE message received!\n");
499 FIXME(
"WM_DDE_POKE message received!\n");
502 FIXME(
"WM_DDE_TERMINATE message received!\n");
525 if (pXAct) pXAct->
atom = uiHi;
536 HDDEDATA hDdeData = 0;
549 TRACE(
"No data returned from the Callback\n");
615 HDDEDATA hDdeData = 0;
632 TRACE(
"No data returned from the Callback\n");
651 TRACE(
"Adding Link with hConv %p\n", pConv);
686 if (pXAct) pXAct->
atom = uiHi;
701 ERR(
"Unsupported yet options (null item or clipboard format)\n");
709 ERR(
"Couldn't find link for %p, dropping request\n", pXAct->
hszItem);
717 pConv->hszTopic, pXAct->
hszItem, 0, 0, 0);
838 FIXME(
"Unsupported returned value %p\n", hDdeData);
894 HDDEDATA hDdeDataOut;
908 FIXME(
"Unsupported returned value %p\n", hDdeDataOut);
955 0, 0, (pConv->wStatus &
ST_ISSELF) ? 1 : 0);
975 FIXME(
"WM_DDE_INITIATE shouldn't be there!\n");
1002 WARN(
"Shouldn't receive a ACK message (never requests them). Ignoring it\n");
1043 ERR(
"Got a message (%x) on a not known conversation, dropping request\n", iMsg);
1048 ERR(
"mismatch between C/S windows and conversation\n");
1053 ERR(
"mismatch in instances\n");
1060 FIXME(
"WM_DDE_INITIATE message received!\n");
1088 WARN(
"Shouldn't receive a ACK message (never requests them). Ignoring it\n");
1092 FIXME(
"Unsupported message %x\n", iMsg);
1102 TRACE(
"Transactions are blocked, add to the queue and exit\n");
HDDEDATA WINAPI DdeCreateDataHandle(DWORD, LPBYTE, DWORD, DWORD, HSZ, UINT, UINT)
ATOM WINAPI GlobalDeleteAtom(ATOM nAtom)
static HDDEDATA map_W_to_A(DWORD instance, void *ptr, DWORD size)
static WDML_QUEUE_STATE WDML_ServerHandleUnadvise(WDML_CONV *pConv, WDML_XACT *pXAct)
int WINAPI GetClassNameA(_In_ HWND hWnd, _Out_writes_to_(nMaxCount, return) LPSTR lpClassName, _In_ int nMaxCount)
int WINAPI lstrcmpiA(LPCSTR lpString1, LPCSTR lpString2)
#define WideCharToMultiByte
LPBYTE WINAPI DdeAccessData(HDDEDATA, LPDWORD)
WDML_XACT * WDML_AllocTransaction(WDML_INSTANCE *pInstance, UINT ddeMsg, UINT wFmt, HSZ hszItem) DECLSPEC_HIDDEN
BOOL WINAPI DdePostAdvise(DWORD idInst, HSZ hszTopic, HSZ hszItem)
GLuint GLuint GLsizei count
static WDML_QUEUE_STATE WDML_ServerHandleExecute(WDML_CONV *pConv, WDML_XACT *pXAct)
ATOM WDML_MakeAtomFromHsz(HSZ hsz) DECLSPEC_HIDDEN
#define DMLERR_MEMORY_ERROR
static const WCHAR szServerNameClass[]
#define XTYP_CONNECT_CONFIRM
void WDML_AddLink(WDML_INSTANCE *pInstance, HCONV hConv, WDML_SIDE side, UINT wType, HSZ hszItem, UINT wFmt) DECLSPEC_HIDDEN
LPARAM WINAPI PackDDElParam(UINT, UINT_PTR, UINT_PTR)
#define DMLERR_POSTMSG_FAILED
#define DDE_FNOTPROCESSED
#define GetWindowLongPtrW
static WDML_XACT * WDML_ServerQueueUnadvise(WDML_CONV *pConv, LPARAM lParam)
BOOL WINAPI DdeFreeDataHandle(HDDEDATA)
BOOL WINAPI DestroyWindow(_In_ HWND)
#define CreateWindowW(a, b, c, d, e, f, g, h, i, j, k)
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
const WCHAR WDML_szServerConvClassW[]
WDML_SERVER * WDML_FindServer(WDML_INSTANCE *pInstance, HSZ hszService, HSZ hszTopic) DECLSPEC_HIDDEN
int WINAPI lstrcmpiW(LPCWSTR lpString1, LPCWSTR lpString2)
WDML_INSTANCE * WDML_GetInstanceFromWnd(HWND hWnd) DECLSPEC_HIDDEN
#define CBF_FAIL_REQUESTS
int WINAPI GetClassNameW(_In_ HWND hWnd, _Out_writes_to_(nMaxCount, return) LPWSTR lpClassName, _In_ int nMaxCount)
WDML_CONV * WDML_GetConv(HCONV hConv, BOOL checkConnected) DECLSPEC_HIDDEN
SIZE_T NTAPI GlobalSize(HGLOBAL hMem)
ATOM WINAPI RegisterClassExW(_In_ CONST WNDCLASSEXW *)
static WDML_QUEUE_STATE WDML_ServerHandleRequest(WDML_CONV *pConv, WDML_XACT *pXAct)
GLenum GLuint GLenum GLsizei const GLchar * buf
HSZ WDML_MakeHszFromAtom(const WDML_INSTANCE *pInstance, ATOM atom) DECLSPEC_HIDDEN
void WDML_QueueTransaction(WDML_CONV *pConv, WDML_XACT *pXAct) DECLSPEC_HIDDEN
WDML_SERVER * WDML_AddServer(WDML_INSTANCE *pInstance, HSZ hszService, HSZ hszTopic) DECLSPEC_HIDDEN
const char WDML_szClientConvClassA[]
#define CreateWindowA(a, b, c, d, e, f, g, h, i, j, k)
BOOL WDML_PostAck(WDML_CONV *pConv, WDML_SIDE side, WORD appRetCode, BOOL fBusy, BOOL fAck, UINT_PTR pmt, LPARAM lParam, UINT oldMsg) DECLSPEC_HIDDEN
static WDML_QUEUE_STATE WDML_ServerHandleTerminate(WDML_CONV *pConv, WDML_XACT *pXAct)
void WDML_RemoveServer(WDML_INSTANCE *pInstance, HSZ hszService, HSZ hszTopic) DECLSPEC_HIDDEN
static WDML_XACT * WDML_ServerQueueRequest(WDML_CONV *pConv, LPARAM lParam)
DWORD WINAPI GetWindowThreadProcessId(HWND, PDWORD)
BOOL WDML_DecHSZ(WDML_INSTANCE *pInstance, HSZ hsz) DECLSPEC_HIDDEN
BOOL WINAPI IsWindowUnicode(_In_ HWND)
DWORD WINAPI GetCurrentThreadId(VOID)
static WDML_XACT * WDML_ServerQueueAdvise(WDML_CONV *pConv, LPARAM lParam)
void WDML_BroadcastDDEWindows(LPCWSTR clsName, UINT uMsg, WPARAM wParam, LPARAM lParam) DECLSPEC_HIDDEN
WDML_QUEUE_STATE WDML_ServerHandle(WDML_CONV *pConv, WDML_XACT *pXAct)
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
WDML_LINK * WDML_FindLink(WDML_INSTANCE *pInstance, HCONV hConv, WDML_SIDE side, HSZ hszItem, BOOL use_fmt, UINT uFmt) DECLSPEC_HIDDEN
INT WINAPI DdeCmpStringHandles(HSZ, HSZ)
static LRESULT CALLBACK WDML_ServerNameProc(HWND, UINT, WPARAM, LPARAM)
WDML_CONV * WDML_AddConv(WDML_INSTANCE *pInstance, WDML_SIDE side, HSZ hszService, HSZ hszTopic, HWND hwndClient, HWND hwndServer) DECLSPEC_HIDDEN
HGLOBAL NTAPI GlobalFree(HGLOBAL hMem)
unsigned __int3264 UINT_PTR
WINE_DEFAULT_DEBUG_CHANNEL(ddeml)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
static LRESULT CALLBACK WDML_ServerConvProc(HWND, UINT, WPARAM, LPARAM)
#define GWL_WDML_INSTANCE
static WDML_CONV * WDML_CreateServerConv(WDML_INSTANCE *pInstance, HWND hwndClient, HWND hwndServerName, HSZ hszApp, HSZ hszTopic)
static WDML_QUEUE_STATE WDML_ServerHandleAdvise(WDML_CONV *pConv, WDML_XACT *pXAct)
LPVOID NTAPI GlobalLock(HGLOBAL hMem)
BOOL WINAPI FreeDDElParam(UINT, LPARAM)
static WDML_XACT * WDML_ServerQueuePoke(WDML_CONV *pConv, LPARAM lParam)
static WDML_XACT * WDML_ServerQueueTerminate(WDML_CONV *pConv, LPARAM lParam)
#define CBF_FAIL_CONNECTIONS
#define GWL_WDML_CONVERSATION
LRESULT WINAPI DefWindowProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
ATOM WINAPI RegisterClassExA(_In_ CONST WNDCLASSEXA *)
struct tagWDML_LINK * next
static WDML_XACT * WDML_ServerQueueExecute(WDML_CONV *pConv, LPARAM lParam)
HDDEDATA WINAPI DdeNameService(DWORD idInst, HSZ hsz1, HSZ hsz2, UINT afCmd)
LPARAM WINAPI ReuseDDElParam(LPARAM, UINT, UINT, UINT_PTR, UINT_PTR)
#define CBF_FAIL_SELFCONNECTIONS
BOOL WINAPI UnpackDDElParam(UINT, LPARAM, PUINT_PTR, PUINT_PTR)
const WCHAR WDML_szEventClass[]
#define CBF_SKIP_DISCONNECTS
#define DMLERR_INVALIDPARAMETER
HGLOBAL WDML_DataHandle2Global(HDDEDATA hDdeData, BOOL fResponse, BOOL fRelease, BOOL fDeferUpd, BOOL dAckReq) DECLSPEC_HIDDEN
FxWmiInstanceExternal * pInstance
struct tagWDML_INSTANCE * instance
void WDML_FreeTransaction(WDML_INSTANCE *pInstance, WDML_XACT *pXAct, BOOL doFreePmt) DECLSPEC_HIDDEN
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
void WDML_RemoveLink(WDML_INSTANCE *pInstance, HCONV hConv, WDML_SIDE side, HSZ hszItem, UINT wFmt) DECLSPEC_HIDDEN
BOOL WDML_IsAppOwned(HDDEDATA hDdeData) DECLSPEC_HIDDEN
const char WDML_szServerConvClassA[]
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
static HINSTANCE instance
#define FIELD_OFFSET(t, f)
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
#define MultiByteToWideChar
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
static WDML_QUEUE_STATE WDML_ServerHandlePoke(WDML_CONV *pConv, WDML_XACT *pXAct)
#define CBF_FAIL_EXECUTES
void WDML_RemoveConv(WDML_CONV *pConv, WDML_SIDE side) DECLSPEC_HIDDEN
WDML_INSTANCE * WDML_GetInstance(DWORD InstId) DECLSPEC_HIDDEN
BOOL WINAPI DdeUnaccessData(HDDEDATA)
static BOOL data_looks_unicode(const WCHAR *data, DWORD size)
#define SetWindowLongPtrW
const WCHAR WDML_szClientConvClassW[]
WINE_UNICODE_INLINE WCHAR * memchrW(const WCHAR *ptr, WCHAR ch, size_t n)
static HDDEDATA map_A_to_W(DWORD instance, void *ptr, DWORD size)
BOOL WDML_IncHSZ(WDML_INSTANCE *pInstance, HSZ hsz) DECLSPEC_HIDDEN
HDDEDATA WDML_InvokeCallback(WDML_INSTANCE *pInst, UINT uType, UINT uFmt, HCONV hConv, HSZ hsz1, HSZ hsz2, HDDEDATA hdata, ULONG_PTR dwData1, ULONG_PTR dwData2) DECLSPEC_HIDDEN
WDML_CONV * WDML_GetConvFromWnd(HWND hWnd) DECLSPEC_HIDDEN
#define WIN_GetFullHandle(h)