31static const WCHAR szServerNameClass[] =
L"DDEMLMom";
72 if (!atom)
return FALSE;
85 FIXME(
"too high value for count\n");
99 FIXME(
"CBR_BLOCK returned for ADVREQ\n");
111 TRACE(
"with data\n");
127 ERR(
"post message failed\n");
128 pConv->
wStatus &= ~ST_CONNECTED;
166 TRACE(
"(%ld,%p,%p,%x)\n", idInst, hsz1, hsz2, afCmd);
173 TRACE(
"Instance not found as initialised\n");
183 WARN(
"Reserved parameter no-zero !!\n");
191 TRACE(
"General unregister unexpected flags\n");
202 ERR(
"Trying to register already registered service!\n");
207 TRACE(
"Adding service name\n");
216 wndclass.
cbSize =
sizeof(wndclass);
236 hwndServer =
CreateWindowW(szServerNameClass,
NULL,
WS_POPUP, 0, 0, 0, 0, 0, 0, 0, 0);
238 hwndServer =
CreateWindowW(
L"WineDdeServerName",
NULL,
WS_POPUP, 0, 0, 0, 0, 0, 0, 0, 0);
242 TRACE(
"Created nameServer=%p for instance=%08lx\n", hwndServer, idInst);
244 pServer->hwndServer = hwndServer;
256 TRACE(
"General de-register - finished\n");
282 return (HDDEDATA)
TRUE;
300 wndclass.
cbSize =
sizeof(wndclass);
317 hwndServerName, 0, 0, 0);
323 wndclass.
cbSize =
sizeof(wndclass);
340 hwndServerName, 0, 0, 0);
343 TRACE(
"Created convServer=%p (nameServer=%p) for instance=%08lx unicode=%d\n",
347 hwndClient, hwndServerConv);
391 TRACE(
"WM_DDE_INITIATE message received!\n");
426 memset(pcc, 0,
sizeof(*pcc));
427 pcc->
cb =
sizeof(*pcc);
432 TRACE(
"Don't do self connection as requested\n");
434 else if (hszApp && hszTop)
443 0, 0, hszTop, hszApp, 0, (
ULONG_PTR)pcc, self);
452 hszTop, hszApp, 0, (
ULONG_PTR)pcc, self);
461 0, 0, hszTop, hszApp, 0, (
ULONG_PTR)pcc, self);
466 FIXME(
"CBR_BLOCK returned for WILDCONNECT\n");
497 FIXME(
"WM_DDE_REQUEST message received!\n");
500 FIXME(
"WM_DDE_ADVISE message received!\n");
503 FIXME(
"WM_DDE_UNADVISE message received!\n");
506 FIXME(
"WM_DDE_EXECUTE message received!\n");
509 FIXME(
"WM_DDE_POKE message received!\n");
512 FIXME(
"WM_DDE_TERMINATE message received!\n");
535 if (pXAct) pXAct->
atom = uiHi;
546 HDDEDATA hDdeData = 0;
559 TRACE(
"No data returned from the Callback\n");
625 HDDEDATA hDdeData = 0;
642 TRACE(
"No data returned from the Callback\n");
661 TRACE(
"Adding Link with hConv %p\n", pConv);
696 if (pXAct) pXAct->
atom = uiHi;
711 ERR(
"Unsupported yet options (null item or clipboard format)\n");
719 ERR(
"Couldn't find link for %p, dropping request\n", pXAct->
hszItem);
848 FIXME(
"Unsupported returned value %p\n", hDdeData);
904 HDDEDATA hDdeDataOut;
918 FIXME(
"Unsupported returned value %p\n", hDdeDataOut);
965 0, 0, (pConv->wStatus &
ST_ISSELF) ? 1 : 0);
985 FIXME(
"WM_DDE_INITIATE shouldn't be there!\n");
1012 WARN(
"Shouldn't receive a ACK message (never requests them). Ignoring it\n");
1053 ERR(
"Got a message (%x) on a not known conversation, dropping request\n", iMsg);
1058 ERR(
"mismatch between C/S windows and conversation\n");
1063 ERR(
"mismatch in instances\n");
1070 FIXME(
"WM_DDE_INITIATE message received!\n");
1098 WARN(
"Shouldn't receive a ACK message (never requests them). Ignoring it\n");
1102 FIXME(
"Unsupported message %x\n", iMsg);
1112 TRACE(
"Transactions are blocked, add to the queue and exit\n");
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
LPARAM WINAPI ReuseDDElParam(LPARAM, UINT, UINT, UINT_PTR, UINT_PTR)
BOOL WINAPI UnpackDDElParam(UINT, LPARAM, PUINT_PTR, PUINT_PTR)
BOOL WINAPI FreeDDElParam(UINT, LPARAM)
LPARAM WINAPI PackDDElParam(UINT, UINT_PTR, UINT_PTR)
void WDML_QueueTransaction(WDML_CONV *pConv, WDML_XACT *pXAct)
WDML_INSTANCE * WDML_GetInstanceFromWnd(HWND hWnd)
BOOL WDML_IsAppOwned(HDDEDATA hDdeData)
const WCHAR WDML_szEventClass[]
#define GWL_WDML_CONVERSATION
WDML_CONV * WDML_AddConv(WDML_INSTANCE *pInstance, WDML_SIDE side, HSZ hszService, HSZ hszTopic, HWND hwndClient, HWND hwndServer)
HGLOBAL WDML_DataHandle2Global(HDDEDATA hDdeData, BOOL fResponse, BOOL fRelease, BOOL fDeferUpd, BOOL dAckReq)
const WCHAR WDML_szClientConvClassW[]
WDML_CONV * WDML_GetConv(HCONV hConv, BOOL checkConnected)
BOOL WDML_PostAck(WDML_CONV *pConv, WDML_SIDE side, WORD appRetCode, BOOL fBusy, BOOL fAck, UINT_PTR pmt, LPARAM lParam, UINT oldMsg)
HSZ WDML_MakeHszFromAtom(const WDML_INSTANCE *pInstance, ATOM atom)
void WDML_FreeTransaction(WDML_INSTANCE *pInstance, WDML_XACT *pXAct, BOOL doFreePmt)
BOOL WDML_IncHSZ(WDML_INSTANCE *pInstance, HSZ hsz)
void WDML_RemoveLink(WDML_INSTANCE *pInstance, HCONV hConv, WDML_SIDE side, HSZ hszItem, UINT wFmt)
WDML_SERVER * WDML_AddServer(WDML_INSTANCE *pInstance, HSZ hszService, HSZ hszTopic)
BOOL WDML_DecHSZ(WDML_INSTANCE *pInstance, HSZ hsz)
void WDML_RemoveConv(WDML_CONV *pConv, WDML_SIDE side)
HDDEDATA WDML_InvokeCallback(WDML_INSTANCE *pInst, UINT uType, UINT uFmt, HCONV hConv, HSZ hsz1, HSZ hsz2, HDDEDATA hdata, ULONG_PTR dwData1, ULONG_PTR dwData2)
WDML_XACT * WDML_AllocTransaction(WDML_INSTANCE *pInstance, UINT ddeMsg, UINT wFmt, HSZ hszItem)
void WDML_RemoveServer(WDML_INSTANCE *pInstance, HSZ hszService, HSZ hszTopic)
ATOM WDML_MakeAtomFromHsz(HSZ hsz)
const char WDML_szClientConvClassA[]
WDML_LINK * WDML_FindLink(WDML_INSTANCE *pInstance, HCONV hConv, WDML_SIDE side, HSZ hszItem, BOOL use_fmt, UINT uFmt)
WDML_INSTANCE * WDML_GetInstance(DWORD InstId)
WDML_SERVER * WDML_FindServer(WDML_INSTANCE *pInstance, HSZ hszService, HSZ hszTopic)
WDML_CONV * WDML_GetConvFromWnd(HWND hWnd)
void WDML_AddLink(WDML_INSTANCE *pInstance, HCONV hConv, WDML_SIDE side, UINT wType, HSZ hszItem, UINT wFmt)
void WDML_BroadcastDDEWindows(LPCWSTR clsName, UINT uMsg, WPARAM wParam, LPARAM lParam)
#define GWL_WDML_INSTANCE
#define CBF_FAIL_REQUESTS
#define CBF_FAIL_EXECUTES
HDDEDATA WINAPI DdeCreateDataHandle(DWORD, LPBYTE, DWORD, DWORD, HSZ, UINT, UINT)
INT WINAPI DdeCmpStringHandles(HSZ, HSZ)
#define CBF_SKIP_DISCONNECTS
#define DMLERR_POSTMSG_FAILED
#define DMLERR_MEMORY_ERROR
#define XTYP_CONNECT_CONFIRM
#define DDE_FNOTPROCESSED
#define CBF_FAIL_SELFCONNECTIONS
#define CBF_FAIL_CONNECTIONS
BOOL WINAPI DdeUnaccessData(HDDEDATA)
LPBYTE WINAPI DdeAccessData(HDDEDATA, LPDWORD)
BOOL WINAPI DdeFreeDataHandle(HDDEDATA)
#define DMLERR_INVALIDPARAMETER
static BOOL data_looks_unicode(const WCHAR *data, DWORD size)
WDML_QUEUE_STATE WDML_ServerHandle(WDML_CONV *pConv, WDML_XACT *pXAct)
static HDDEDATA map_W_to_A(DWORD instance, void *ptr, DWORD size)
static WDML_QUEUE_STATE WDML_ServerHandlePoke(WDML_CONV *pConv, WDML_XACT *pXAct)
static WDML_CONV * WDML_CreateServerConv(WDML_INSTANCE *pInstance, HWND hwndClient, HWND hwndServerName, HSZ hszApp, HSZ hszTopic)
static LRESULT CALLBACK WDML_ServerConvProc(HWND, UINT, WPARAM, LPARAM)
static WDML_QUEUE_STATE WDML_ServerHandleUnadvise(WDML_CONV *pConv, WDML_XACT *pXAct)
static WDML_XACT * WDML_ServerQueueAdvise(WDML_CONV *pConv, LPARAM lParam)
HDDEDATA WINAPI DdeNameService(DWORD idInst, HSZ hsz1, HSZ hsz2, UINT afCmd)
static WDML_XACT * WDML_ServerQueueTerminate(WDML_CONV *pConv, LPARAM lParam)
static WDML_QUEUE_STATE WDML_ServerHandleRequest(WDML_CONV *pConv, WDML_XACT *pXAct)
BOOL WINAPI DdePostAdvise(DWORD idInst, HSZ hszTopic, HSZ hszItem)
static WDML_XACT * WDML_ServerQueuePoke(WDML_CONV *pConv, LPARAM lParam)
static WDML_QUEUE_STATE WDML_ServerHandleExecute(WDML_CONV *pConv, WDML_XACT *pXAct)
static LRESULT CALLBACK WDML_ServerNameProc(HWND, UINT, WPARAM, LPARAM)
const char WDML_szServerConvClassA[]
static WDML_XACT * WDML_ServerQueueUnadvise(WDML_CONV *pConv, LPARAM lParam)
static HDDEDATA map_A_to_W(DWORD instance, void *ptr, DWORD size)
static WDML_QUEUE_STATE WDML_ServerHandleTerminate(WDML_CONV *pConv, WDML_XACT *pXAct)
static WDML_XACT * WDML_ServerQueueRequest(WDML_CONV *pConv, LPARAM lParam)
static WDML_XACT * WDML_ServerQueueExecute(WDML_CONV *pConv, LPARAM lParam)
static WDML_QUEUE_STATE WDML_ServerHandleAdvise(WDML_CONV *pConv, WDML_XACT *pXAct)
const WCHAR WDML_szServerConvClassW[]
static HINSTANCE instance
#define WideCharToMultiByte
#define MultiByteToWideChar
ATOM WINAPI GlobalDeleteAtom(ATOM nAtom)
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
int WINAPI lstrcmpiA(LPCSTR str1, LPCSTR str2)
static wchar_t * wmemchr(const wchar_t *s, wchar_t c, size_t n)
FxWmiInstanceExternal * pInstance
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLuint GLenum GLsizei const GLchar * buf
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
HGLOBAL NTAPI GlobalFree(HGLOBAL hMem)
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
SIZE_T NTAPI GlobalSize(HGLOBAL hMem)
BOOLEAN NTAPI NtUserDestroyWindow(HWND Wnd)
static ERESOURCE GlobalLock
unsigned __int3264 UINT_PTR
#define GetWindowLongPtrW
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI DefWindowProcA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define CreateWindowA(a, b, c, d, e, f, g, h, i, j, k)
int WINAPI GetClassNameA(_In_ HWND hWnd, _Out_writes_to_(nMaxCount, return) LPSTR lpClassName, _In_ int nMaxCount)
BOOL WINAPI IsWindowUnicode(_In_ HWND)
ATOM WINAPI RegisterClassExA(_In_ CONST WNDCLASSEXA *)
ATOM WINAPI RegisterClassExW(_In_ CONST WNDCLASSEXW *)
#define CreateWindowW(a, b, c, d, e, f, g, h, i, j, k)
int WINAPI GetClassNameW(_In_ HWND hWnd, _Out_writes_to_(nMaxCount, return) LPWSTR lpClassName, _In_ int nMaxCount)
#define SetWindowLongPtrW
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
struct tagWDML_INSTANCE * instance
struct tagWDML_LINK * next
#define FIELD_OFFSET(t, f)
#define WIN_GetFullHandle(h)
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
DWORD WINAPI GetCurrentThreadId(void)
DWORD WINAPI GetWindowThreadProcessId(HWND hWnd, PDWORD lpdwProcessId)