On 3/19/20 1:14 AM, Bernhard Übelacker wrote:
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48765
dlls/ws2_32/socket.c | 12 ++++++++++++ dlls/ws2_32/ws2_32.spec | 1 + include/winsock2.h | 5 +++++ include/ws2spi.h | 1 + 4 files changed, 19 insertions(+)
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c index c284f595ab..29eff3cd64 100644 --- a/dlls/ws2_32/socket.c +++ b/dlls/ws2_32/socket.c @@ -9001,6 +9001,18 @@ INT WINAPI WSCEnableNSProvider( LPGUID provider, BOOL enable ) return 0; }
+/***********************************************************************
WSCGetProviderInfo
- */
+INT WINAPI WSCGetProviderInfo( LPGUID provider, WSC_PROVIDER_INFO_TYPE info_type,
PBYTE info, size_t len, DWORD flags, LPINT errcode )
+{
- FIXME( "(%s 0x%08x %p 0x%08x 0x%08x %p) Stub!\n",
debugstr_guid(provider), info_type, info, len, flags, errcode );
- return ERROR_CALL_NOT_IMPLEMENTED;
+}
From what MSDN says, it returns SOCKET_ERROR and put an ERROR_CALL_NOT_IMPLEMENTED in 'errcode' parameter if it's unimplemented. You can add some tests for this. And it's better to have at least some basic parameter validation checks even for a stub.
Thanks, Zhiyi
/***********************************************************************
WSCGetProviderPath (WS2_32.86)
*/ diff --git a/dlls/ws2_32/ws2_32.spec b/dlls/ws2_32/ws2_32.spec index 37b02e5712..6b1dbfca26 100644 --- a/dlls/ws2_32/ws2_32.spec +++ b/dlls/ws2_32/ws2_32.spec @@ -117,6 +117,7 @@ @ stdcall WSCDeinstallProvider(ptr ptr) @ stdcall WSCEnableNSProvider(ptr long) @ stdcall WSCEnumProtocols(ptr ptr ptr ptr) +@ stdcall WSCGetProviderInfo(ptr long ptr long long ptr) @ stdcall WSCGetProviderPath(ptr ptr ptr ptr) @ stdcall WSCInstallNameSpace(wstr wstr long long ptr) @ stdcall WSCInstallProvider(ptr wstr ptr long ptr) diff --git a/include/winsock2.h b/include/winsock2.h index e8d033976f..04a55c4dbe 100644 --- a/include/winsock2.h +++ b/include/winsock2.h @@ -628,6 +628,11 @@ typedef struct _WSACOMPLETION { } Parameters; } WSACOMPLETION, *PWSACOMPLETION, *LPWSACOMPLETION;
+typedef enum _WSC_PROVIDER_INFO_TYPE {
ProviderInfoLspCategories,
ProviderInfoAudit,
+} WSC_PROVIDER_INFO_TYPE;
/*
- Winsock Function Typedefs
diff --git a/include/ws2spi.h b/include/ws2spi.h index 3d2ca84dfa..be3cf1f967 100644 --- a/include/ws2spi.h +++ b/include/ws2spi.h @@ -39,6 +39,7 @@ INT WINAPI WSCInstallProvider(const LPGUID,LPCWSTR,const LPWSAPROTOCOL_INFO INT WINAPI WSCDeinstallProvider(LPGUID,LPINT); INT WINAPI WSCEnableNSProvider(LPGUID,BOOL); INT WINAPI WSCEnumProtocols(LPINT,LPWSAPROTOCOL_INFOW,LPDWORD,LPINT); +INT WINAPI WSCGetProviderInfo(LPGUID,WSC_PROVIDER_INFO_TYPE,PBYTE,size_t,DWORD,LPINT); INT WINAPI WSCGetProviderPath(LPGUID,LPWSTR,LPINT,LPINT); INT WINAPI WSCInstallNameSpace(LPWSTR,LPWSTR,DWORD,DWORD,LPGUID); INT WINAPI WSCSetApplicationCategory(LPCWSTR,DWORD,LPCWSTR,DWORD,DWORD,DWORD*,LPINT);