getsourcefilter 函数 (ws2tcpip.h)

getsourcefilter 内联函数检索 IPv4 或 IPv6 套接字的多播筛选器状态。

语法

int getsourcefilter(
  [in]      SOCKET              Socket,
  [in]      ULONG               Interface,
  [in]      const SOCKADDR      *Group,
  [in]      int                 GroupLength,
  [out]     MULTICAST_MODE_TYPE *FilterMode,
  [in, out] ULONG               *SourceCount,
  [out]     SOCKADDR_STORAGE    *SourceList
);

参数

[in] Socket

标识多播套接字的描述符。

[in] Interface

多播接口的接口索引。

[in] Group

指向多播组的套接字地址的指针。

[in] GroupLength

Group 参数指向的套接字地址的长度(以字节为单位)。

[out] FilterMode

一个指针,指向值,用于在函数返回时接收多播组地址的多播筛选器模式。

[in, out] SourceCount

输入时,指向值的指针,该值指示 SourceList 参数指向的缓冲区中将容纳的最大源地址数。

输出时,指向一个值的指针,该值指示与多播筛选器关联的源地址总数。

[out] SourceList

指向缓冲区的指针,用于接收与多播筛选器关联的 IP 地址列表。

如果 SourceCount 在输入时为零,则可能会提供 NULL 指针。

返回值

成功后, getsourcefilter 返回NO_ERROR (0) 。 任何非零返回值都表示失败,可以通过调用 WSAGetLastError 来检索特定的错误代码。

错误代码 含义
WSAENOBUFS
可用缓冲区空间不足。
WSAENOTSOCK
:描述符不是套接字。

注解

getsourcefilter 内联函数用于检索 IPv4 或 IPv6 套接字的多播筛选器状态。

如果应用事先不知道源列表的大小,它可以 (零进行猜测,例如) 。 如果在完成时 SourceCount 参数包含较大的值,则可以使用足够大的缓冲区重复该操作。

返回时, SourceCount 参数将始终更新为筛选器中的源总数,而 SourceList 参数指向的缓冲区将保留适合的源地址数,最多为作为原始 SourceCount 值传入的数组大小的最小值和筛选器中的源总数。

此函数是 RFC 3678 中定义的多播源筛选器的套接字接口扩展的一部分。 应用可以使用这些函数来检索和设置与套接字关联的多播源地址筛选器。

Windows Phone 8:Windows Phone 8 及更高版本上的 Windows Phone 应用商店应用支持此函数。

Windows 8.1Windows Server 2012 R2:Windows 8.1、Windows Server 2012 R2 及更高版本的 Windows 应用商店应用支持此函数。

要求

要求
最低受支持的客户端 Windows 8.1,Windows Vista [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2003 [桌面应用 | UWP 应用]
目标平台 Windows
标头 ws2tcpip.h
Library Ws2_32.lib
DLL Ws2_32.dll

另请参阅

MULTICAST_MODE_TYPE

SOCKADDR_STORAGE

getipv4sourcefilter

setipv4sourcefilter

setsourcefilter