From: Andrew Nguyen Subject: nddeapi: Implement the documented Network DDE functions. Message-Id: <4DA9519A.206@codeweavers.com> Date: Sat, 16 Apr 2011 03:21:46 -0500 The Clipboard Viewer in Windows XP imports various nddeapi exports by ordinal. --- dlls/nddeapi/nddeapi.c | 305 ++++++++++++++++++++++++++++++++++++++++++++- dlls/nddeapi/nddeapi.spec | 53 ++++---- 2 files changed, 328 insertions(+), 30 deletions(-) diff --git a/dlls/nddeapi/nddeapi.c b/dlls/nddeapi/nddeapi.c index 998a628..84c636a 100644 --- a/dlls/nddeapi/nddeapi.c +++ b/dlls/nddeapi/nddeapi.c @@ -26,15 +26,228 @@ WINE_DEFAULT_DEBUG_CHANNEL(nddeapi); +/* Network DDE functionality was removed in Windows Vista, so the functions are silent stubs. + * Since the corresponding header is no longer available in the Windows SDK, a required definition + * is replicated here. */ +#define NDDE_NOT_IMPLEMENTED 14 + +/*********************************************************************** + * NDdeShareAddA (NDDEAPI.@) + * + */ +UINT WINAPI NDdeShareAddA(LPSTR lpszServer, UINT nLevel, PSECURITY_DESCRIPTOR pSD, + LPBYTE lpBuffer, DWORD cBufSize) +{ + TRACE("(%s, %u, %p, %p, %u)\n", debugstr_a(lpszServer), nLevel, pSD, lpBuffer, cBufSize); + + return NDDE_NOT_IMPLEMENTED; +} + +/*********************************************************************** + * NDdeShareDelA (NDDEAPI.@) + * + */ +UINT WINAPI NDdeShareDelA(LPSTR lpszServer, LPSTR lpszShareName, UINT wReserved) +{ + TRACE("(%s, %s, %u)\n", debugstr_a(lpszServer), debugstr_a(lpszShareName), wReserved); + + return NDDE_NOT_IMPLEMENTED; +} + +/*********************************************************************** + * NDdeShareEnumA (NDDEAPI.@) + * + */ +UINT WINAPI NDdeShareEnumA(LPSTR lpszServer, UINT nLevel, LPBYTE lpBuffer, DWORD cBufSize, + LPDWORD lpnEntriesRead, LPDWORD lpcbTotalAvailable) +{ + TRACE("(%s, %u, %p, %u, %p, %p)\n", debugstr_a(lpszServer), nLevel, lpBuffer, cBufSize, + lpnEntriesRead, lpcbTotalAvailable); + + return NDDE_NOT_IMPLEMENTED; +} + +/*********************************************************************** + * NDdeShareGetInfoA (NDDEAPI.@) + * + */ +UINT WINAPI NDdeShareGetInfoA(LPSTR lpszServer, LPSTR lpszShareName, UINT nLevel, LPBYTE lpBuffer, + DWORD cBufSize, LPDWORD lpnTotalAvailable, LPWORD lpnItems) +{ + TRACE("(%s, %s, %u, %p, %u, %p, %p)\n", debugstr_a(lpszServer), debugstr_a(lpszShareName), nLevel, + lpBuffer, cBufSize, lpnTotalAvailable, lpnItems); + + return NDDE_NOT_IMPLEMENTED; +} + +/*********************************************************************** + * NDdeShareSetInfoA (NDDEAPI.@) + * + */ +UINT WINAPI NDdeShareSetInfoA(LPSTR lpszServer, LPSTR lpszShareName, UINT nLevel, LPBYTE lpBuffer, + DWORD cBufSize, WORD sParmNum) +{ + TRACE("(%s, %s, %u, %p, %u, %u)\n", debugstr_a(lpszServer), debugstr_a(lpszShareName), nLevel, + lpBuffer, cBufSize, sParmNum); + + return NDDE_NOT_IMPLEMENTED; +} + /*********************************************************************** * NDdeGetErrorStringA (NDDEAPI.@) * */ UINT WINAPI NDdeGetErrorStringA(UINT uErrorCode, LPSTR lpszErrorString, DWORD cBufSize) { - FIXME("(%u, %s, %d): stub!\n",uErrorCode,debugstr_a(lpszErrorString), cBufSize); + TRACE("(%u, %p, %d)\n", uErrorCode, lpszErrorString, cBufSize); + + return NDDE_NOT_IMPLEMENTED; +} + +/*********************************************************************** + * NDdeIsValidShareNameA (NDDEAPI.@) + * + */ +BOOL WINAPI NDdeIsValidShareNameA(LPSTR shareName) +{ + TRACE("(%s)\n", debugstr_a(shareName)); + + return FALSE; +} + +/*********************************************************************** + * NDdeIsValidAppTopicListA (NDDEAPI.@) + * + */ +BOOL WINAPI NDdeIsValidAppTopicListA(LPSTR targetTopic) +{ + TRACE("(%s)\n", debugstr_a(targetTopic)); + + return FALSE; +} + +/*********************************************************************** + * NDdeGetShareSecurityA (NDDEAPI.@) + * + */ +UINT WINAPI NDdeGetShareSecurityA(LPSTR lpszServer, LPSTR lpszShareName, SECURITY_INFORMATION si, + PSECURITY_DESCRIPTOR pSD, DWORD cbSD, LPDWORD lpcbsdRequired) +{ + TRACE("(%s, %s, %u, %p, %u, %p)\n", debugstr_a(lpszServer), debugstr_a(lpszShareName), + si, pSD, cbSD, lpcbsdRequired); + + return NDDE_NOT_IMPLEMENTED; +} + +/*********************************************************************** + * NDdeSetShareSecurityA (NDDEAPI.@) + * + */ +UINT WINAPI NDdeSetShareSecurityA(LPSTR lpszServer, LPSTR lpszShareName, SECURITY_INFORMATION si, + PSECURITY_DESCRIPTOR pSD) +{ + TRACE("(%s, %s, %u, %p)\n", debugstr_a(lpszServer), debugstr_a(lpszShareName), si, pSD); + + return NDDE_NOT_IMPLEMENTED; +} + +/*********************************************************************** + * NDdeGetTrustedShareA (NDDEAPI.@) + * + */ +UINT WINAPI NDdeGetTrustedShareA(LPSTR lpszServer, LPSTR lpszShareName, LPDWORD lpdwTrustOptions, + LPDWORD lpdwShareModId0, LPDWORD lpdwShareModId1) +{ + TRACE("(%s, %s, %p, %p, %p)\n", debugstr_a(lpszServer), debugstr_a(lpszShareName), lpdwTrustOptions, + lpdwShareModId0, lpdwShareModId1); + + return NDDE_NOT_IMPLEMENTED; +} + +/*********************************************************************** + * NDdeSetTrustedShareA (NDDEAPI.@) + * + */ +UINT WINAPI NDdeSetTrustedShareA(LPSTR lpszServer, LPSTR lpszShareName, DWORD dwTrustOptions) +{ + TRACE("(%s, %s, 0x%08x)\n", debugstr_a(lpszServer), debugstr_a(lpszShareName), dwTrustOptions); + + return NDDE_NOT_IMPLEMENTED; +} + +/*********************************************************************** + * NDdeTrustedShareEnumA (NDDEAPI.@) + * + */ +UINT WINAPI NDdeTrustedShareEnumA(LPSTR lpszServer, UINT nLevel, LPBYTE lpBuffer, DWORD cBufSize, + LPDWORD lpnEntriesRead, LPDWORD lpcbTotalAvailable) +{ + TRACE("(%s, %u, %p, %u, %p, %p)\n", debugstr_a(lpszServer), nLevel, lpBuffer, cBufSize, + lpnEntriesRead, lpcbTotalAvailable); - return E_NOTIMPL; + return NDDE_NOT_IMPLEMENTED; +} + +/*********************************************************************** + * NDdeShareAddW (NDDEAPI.@) + * + */ +UINT WINAPI NDdeShareAddW(LPWSTR lpszServer, UINT nLevel, PSECURITY_DESCRIPTOR pSD, + LPBYTE lpBuffer, DWORD cBufSize) +{ + TRACE("(%s, %u, %p, %p, %u)\n", debugstr_w(lpszServer), nLevel, pSD, lpBuffer, cBufSize); + + return NDDE_NOT_IMPLEMENTED; +} + +/*********************************************************************** + * NDdeShareDelW (NDDEAPI.@) + * + */ +UINT WINAPI NDdeShareDelW(LPWSTR lpszServer, LPWSTR lpszShareName, UINT wReserved) +{ + TRACE("(%s, %s, %u)\n", debugstr_w(lpszServer), debugstr_w(lpszShareName), wReserved); + + return NDDE_NOT_IMPLEMENTED; +} + +/*********************************************************************** + * NDdeShareEnumW (NDDEAPI.@) + * + */ +UINT WINAPI NDdeShareEnumW(LPWSTR lpszServer, UINT nLevel, LPBYTE lpBuffer, DWORD cBufSize, + LPDWORD lpnEntriesRead, LPDWORD lpcbTotalAvailable) +{ + TRACE("(%s, %u, %p, %u, %p, %p)\n", debugstr_w(lpszServer), nLevel, lpBuffer, cBufSize, + lpnEntriesRead, lpcbTotalAvailable); + + return NDDE_NOT_IMPLEMENTED; +} + +/*********************************************************************** + * NDdeShareGetInfoW (NDDEAPI.@) + * + */ +UINT WINAPI NDdeShareGetInfoW(LPWSTR lpszServer, LPWSTR lpszShareName, UINT nLevel, LPBYTE lpBuffer, + DWORD cBufSize, LPDWORD lpnTotalAvailable, LPWORD lpnItems) +{ + TRACE("(%s, %s, %u, %p, %u, %p, %p)\n", debugstr_w(lpszServer), debugstr_w(lpszShareName), nLevel, + lpBuffer, cBufSize, lpnTotalAvailable, lpnItems); + + return NDDE_NOT_IMPLEMENTED; +} + +/*********************************************************************** + * NDdeShareSetInfoW (NDDEAPI.@) + * + */ +UINT WINAPI NDdeShareSetInfoW(LPWSTR lpszServer, LPWSTR lpszShareName, UINT nLevel, LPBYTE lpBuffer, + DWORD cBufSize, WORD sParmNum) +{ + TRACE("(%s, %s, %u, %p, %u, %u)\n", debugstr_w(lpszServer), debugstr_w(lpszShareName), nLevel, + lpBuffer, cBufSize, sParmNum); + + return NDDE_NOT_IMPLEMENTED; } /*********************************************************************** @@ -43,7 +256,91 @@ UINT WINAPI NDdeGetErrorStringA(UINT uErrorCode, LPSTR lpszErrorString, DWORD cB */ UINT WINAPI NDdeGetErrorStringW(UINT uErrorCode, LPWSTR lpszErrorString, DWORD cBufSize) { - FIXME("(%u, %s, %d): stub!\n",uErrorCode,debugstr_w(lpszErrorString), cBufSize); + FIXME("(%u, %p, %d): stub!\n", uErrorCode, lpszErrorString, cBufSize); + + return NDDE_NOT_IMPLEMENTED; +} + +/*********************************************************************** + * NDdeIsValidShareNameW (NDDEAPI.@) + * + */ +BOOL WINAPI NDdeIsValidShareNameW(LPWSTR shareName) +{ + TRACE("(%s)\n", debugstr_w(shareName)); + + return FALSE; +} + +/*********************************************************************** + * NDdeIsValidAppTopicListW (NDDEAPI.@) + * + */ +BOOL WINAPI NDdeIsValidAppTopicListW(LPWSTR targetTopic) +{ + TRACE("(%s)\n", debugstr_w(targetTopic)); + + return FALSE; +} + +/*********************************************************************** + * NDdeGetShareSecurityW (NDDEAPI.@) + * + */ +UINT WINAPI NDdeGetShareSecurityW(LPWSTR lpszServer, LPWSTR lpszShareName, SECURITY_INFORMATION si, + PSECURITY_DESCRIPTOR pSD, DWORD cbSD, LPDWORD lpcbsdRequired) +{ + TRACE("(%s, %s, %u, %p, %u, %p)\n", debugstr_w(lpszServer), debugstr_w(lpszShareName), + si, pSD, cbSD, lpcbsdRequired); + + return NDDE_NOT_IMPLEMENTED; +} + +/*********************************************************************** + * NDdeSetShareSecurityW (NDDEAPI.@) + * + */ +UINT WINAPI NDdeSetShareSecurityW(LPWSTR lpszServer, LPWSTR lpszShareName, SECURITY_INFORMATION si, + PSECURITY_DESCRIPTOR pSD) +{ + TRACE("(%s, %s, %u, %p)\n", debugstr_w(lpszServer), debugstr_w(lpszShareName), si, pSD); + + return NDDE_NOT_IMPLEMENTED; +} + +/*********************************************************************** + * NDdeGetTrustedShareW (NDDEAPI.@) + * + */ +UINT WINAPI NDdeGetTrustedShareW(LPWSTR lpszServer, LPWSTR lpszShareName, LPDWORD lpdwTrustOptions, + LPDWORD lpdwShareModId0, LPDWORD lpdwShareModId1) +{ + TRACE("(%s, %s, %p, %p, %p)\n", debugstr_w(lpszServer), debugstr_w(lpszShareName), lpdwTrustOptions, + lpdwShareModId0, lpdwShareModId1); + + return NDDE_NOT_IMPLEMENTED; +} + +/*********************************************************************** + * NDdeSetTrustedShareW (NDDEAPI.@) + * + */ +UINT WINAPI NDdeSetTrustedShareW(LPWSTR lpszServer, LPWSTR lpszShareName, DWORD dwTrustOptions) +{ + TRACE("(%s, %s, 0x%08x)\n", debugstr_w(lpszServer), debugstr_w(lpszShareName), dwTrustOptions); + + return NDDE_NOT_IMPLEMENTED; +} + +/*********************************************************************** + * NDdeTrustedShareEnumW (NDDEAPI.@) + * + */ +UINT WINAPI NDdeTrustedShareEnumW(LPWSTR lpszServer, UINT nLevel, LPBYTE lpBuffer, DWORD cBufSize, + LPDWORD lpnEntriesRead, LPDWORD lpcbTotalAvailable) +{ + TRACE("(%s, %u, %p, %u, %p, %p)\n", debugstr_w(lpszServer), nLevel, lpBuffer, cBufSize, + lpnEntriesRead, lpcbTotalAvailable); - return E_NOTIMPL; + return NDDE_NOT_IMPLEMENTED; } diff --git a/dlls/nddeapi/nddeapi.spec b/dlls/nddeapi/nddeapi.spec index f839a55..15cd3bd 100644 --- a/dlls/nddeapi/nddeapi.spec +++ b/dlls/nddeapi/nddeapi.spec @@ -1,28 +1,29 @@ -@ stdcall NDdeGetErrorStringA(long str long) -@ stdcall NDdeGetErrorStringW(long wstr long) -@ stub NDdeGetShareSecurityA -@ stub NDdeGetShareSecurityW -@ stub NDdeGetTrustedShareA -@ stub NDdeGetTrustedShareW -@ stub NDdeIsValidAppTopicListA -@ stub NDdeIsValidAppTopicListW -@ stub NDdeIsValidShareNameA -@ stub NDdeIsValidShareNameW -@ stub NDdeSetShareSecurityA -@ stub NDdeSetShareSecurityW -@ stub NDdeSetTrustedShareA -@ stub NDdeSetTrustedShareW -@ stub NDdeShareAddA -@ stub NDdeShareAddW -@ stub NDdeShareDelA -@ stub NDdeShareDelW -@ stub NDdeShareEnumA -@ stub NDdeShareEnumW -@ stub NDdeShareGetInfoA -@ stub NDdeShareGetInfoW -@ stub NDdeShareSetInfoA -@ stub NDdeShareSetInfoW +500 stdcall NDdeShareAddA(str long ptr ptr long) +501 stdcall NDdeShareDelA(str str long) +502 stdcall NDdeShareEnumA(str long ptr long ptr ptr) +503 stdcall NDdeShareGetInfoA(str str long ptr long ptr ptr) +504 stdcall NDdeShareSetInfoA(str str long ptr long long) +505 stdcall NDdeGetErrorStringA(long ptr long) +506 stdcall NDdeIsValidShareNameA(str) +507 stdcall NDdeIsValidAppTopicListA(str) +509 stdcall NDdeGetShareSecurityA(str str long ptr long ptr) +510 stdcall NDdeSetShareSecurityA(ptr ptr long ptr) +511 stdcall NDdeGetTrustedShareA(str str ptr ptr ptr) +512 stdcall NDdeSetTrustedShareA(str str long) +513 stdcall NDdeTrustedShareEnumA(str long ptr long ptr ptr) +600 stdcall NDdeShareAddW(wstr long ptr ptr long) +601 stdcall NDdeShareDelW(wstr wstr long) +602 stdcall NDdeShareEnumW(wstr long ptr long ptr ptr) +603 stdcall NDdeShareGetInfoW(wstr wstr long ptr long ptr ptr) +604 stdcall NDdeShareSetInfoW(wstr wstr long ptr long long) +605 stdcall NDdeGetErrorStringW(long wstr long) +606 stdcall NDdeIsValidShareNameW(wstr) +607 stdcall NDdeIsValidAppTopicListW(wstr) +609 stdcall NDdeGetShareSecurityW(wstr wstr long ptr long ptr) +610 stdcall NDdeSetShareSecurityW(ptr ptr long ptr) +611 stdcall NDdeGetTrustedShareW(wstr wstr ptr ptr ptr) +612 stdcall NDdeSetTrustedShareW(wstr wstr long) +613 stdcall NDdeTrustedShareEnumW(wstr long ptr long ptr ptr) + @ stub NDdeSpecialCommandA @ stub NDdeSpecialCommandW -@ stub NDdeTrustedShareEnumA -@ stub NDdeTrustedShareEnumW -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.16 (GNU/Linux) Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/ iQIcBAEBAgAGBQJNqVGaAAoJEK/FbHgLAxL2eBQP/1E8yM7RnqeuZub/8cusi6sR gowtOGdX87no1xWotJJRBn9zE6pWB+owUyCpWgaGKMiGhNZHoJNa0GyvwgzASx6D QELCvbgujf9NMLii5WnCDS4HvWNmaM00f0sFmdOzGirsEvXNV1kvBP9bxfACN2AQ Y7poMcE+zu3pqaz5ymDO9pe56jmXAwhcksDmefqxU0IeYXUN/NGYdA7M7vUXBbXy OvGGM+Coc6lI/vHa8d1RGzbGvtX9Ft5TGqeiyXOBXsRLdraP0V0mdYgaK4w9jx6q C5z4ubENwO7wXU/1ZL3qu9Yv4uZ250wzJUoEZnnRGKXvA9nOh7H2RNyHAaY2ouam ez6JWUKG/74iuQPBXW0vOl8qEt01CgrYs+rgKEVdhxX+apCKryewIXR7aMHxzgAD dDIGSOBM7W0lX2gGWbzrlehgTwGWddKPHhh8WT/HFhIPha9XBd4GgAAgjQbkBWY/ BtkUN5fL4YaTvwc2ZTX1LYSt0ntQmi0HPJAfRVKo4IlD9J+YMcuP9UqT112oFBH/ nGkub4csLBHKYkicrqIz1OgByn+hzfXEZ4hiHrTuz8JkGba9Go8x0LfLbb6v/JRQ zOrU+1HvxMGMpbsc5B+2628RLII1HL+97M3a40An4poGIyWnywdYOWGpj4pQr9O3 ccAaoNeSzzI+hYVWD2F4 =CcBb -----END PGP SIGNATURE-----