GetOwnerModuleFromUdpEntry 函数 (iphlpapi.h)

GetOwnerModuleFromUdpEntry 函数检索有关在 MIB 表行中为特定 IPv4 UDP 终结点发出上下文绑定的模块的数据。

语法

IPHLPAPI_DLL_LINKAGE DWORD GetOwnerModuleFromUdpEntry(
  [in]      PMIB_UDPROW_OWNER_MODULE      pUdpEntry,
  [in]      TCPIP_OWNER_MODULE_INFO_CLASS Class,
  [out]     PVOID                         pBuffer,
  [in, out] PDWORD                        pdwSize
);

参数

[in] pUdpEntry

指向 MIB_UDPROW_OWNER_MODULE 结构的指针,该结构包含用于获取所有者模块的 IPv4 UDP 终结点条目。

[in] Class

一个TCPIP_OWNER_MODULE_INFO_CLASS枚举值,该值指示要获取的有关所有者模块的数据的类型。

[out] pBuffer

包含具有所有者模块数据的 TCPIP_OWNER_MODULE_BASIC_INFO 结构的缓冲区。 在此缓冲区中返回的数据类型由 Class 参数的值指示。

Class 设置为相应的值时,以下结构用于 Buffer 中的数据。

枚举值 缓冲区 数据格式
TCPIP_OWNER_MODULE_BASIC_INFO TCPIP_OWNER_MODULE_BASIC_INFO

[in, out] pdwSize

缓冲区中返回的结构的估计大小(以字节为单位)。 如果此值设置得太小, 则此 函数返回ERROR_INSUFFICIENT_BUFFER,并且此字段将包含正确的结构大小。

返回值

如果调用成功,则返回 NO_ERROR 的值。 否则,将返回以下错误。

返回代码 说明
ERROR_INSUFFICIENT_BUFFER
为表分配的空间不足。 表的大小在 pdwSize 参数中返回,并且必须在后续调用此函数时使用,才能成功检索表。

注解

Buffer 参数不仅包含具有指向特定数据的指针的结构,例如,指向包含所有者模块名称和路径的零终止字符串的指针,还包含实际数据本身;,即名称和路径字符串。 因此,在计算缓冲区大小时,请确保为结构以及结构成员指向的数据提供足够的空间。

最佳做法是将 UDP 表条目解析为所有者模块。 在少数情况下, TCPIP_OWNER_MODULE_BASIC_INFO 结构中返回的所有者模块名称可以是进程名称(如“svchost.exe”、服务名称(如“RPC”)或组件名称(例如“timer.dll”。

对于在 Windows Vista 或更高版本上运行的计算机,访问 TCPIP_OWNER_MODULE_BASIC_INFO 结构的 pModuleNamepModulePath 成员受用户帐户控制 (UAC) 的限制。 如果调用此函数的应用程序由作为管理员组成员(而非内置管理员)登录的用户执行,则此调用将成功,但对这些成员的访问将返回空字符串,除非应用程序已在清单文件中标记为 requestedExecutionLevel 设置为 requireAdministrator。 如果 Windows Vista 或更高版本上的应用程序缺少此清单文件,则作为管理员组成员(而非内置管理员)登录的用户必须在增强的 shell 中执行应用程序,因为内置管理员 (RunAs 管理员) 才能访问受保护的 pModuleNamepModulePath 成员。

要求

要求
最低受支持的客户端 Windows Vista、Windows XP 和 SP2 [仅限桌面应用]
最低受支持的服务器 Windows Server 2008、Windows Server 2003 SP1 [仅限桌面应用]
目标平台 Windows
标头 iphlpapi.h
Library Iphlpapi.lib
DLL Iphlpapi.dll