[PATCH] ws2_32: Add stub implementation for WSCGetProviderInfo.

Zhiyi Zhang zzhang at codeweavers.com
Wed Mar 18 21:29:44 CDT 2020



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);





More information about the wine-devel mailing list