GetOwnerModuleFromTcp6Entry 函数 (iphlpapi.h)

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

语法

IPHLPAPI_DLL_LINKAGE DWORD GetOwnerModuleFromTcp6Entry(
  [in]      PMIB_TCP6ROW_OWNER_MODULE     pTcpEntry,
  [in]      TCPIP_OWNER_MODULE_INFO_CLASS Class,
  [out]     PVOID                         pBuffer,
  [in, out] PDWORD                        pdwSize
);

parameters

[in] pTcpEntry

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

[in] Class

一个TCPIP_OWNER_MODULE_INFO_CLASS枚举值,该值指示要获取的有关所有者模块的数据的类型。 TCPIP_OWNER_MODULE_INFO_CLASS枚举在 Iprtrmib.h 头文件中定义。

此参数必须设置为 TCPIP_OWNER_MODULE_INFO_BASIC

[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 参数中返回,并且必须在后续调用此函数时使用,才能成功检索表。
ERROR_INVALID_PARAMETER
参数不正确。 如果 pTcpEntrypdwSize 参数之一为 NULL,则返回此值。 如果 Class 参数不等于 TCPIP_OWNER_MODULE_INFO_BASIC,也会返回此值。
ERROR_NOT_ENOUGH_MEMORY
没有足够的可用内存来完成该操作。
ERROR_NOT_FOUND
找不到该元素。 如果 pTcpEntry 参数指向的MIB_TCP6ROW_OWNER_MODULEdwOwningPid 成员为零或找不到,则返回此值。
ERROR_PARTIAL_COPY
只完成了请求的一部分。

注解

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

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

对于在 Windows Vista 或更高版本上运行的计算机,GetOwnerModuleFromTcpEntry 函数检索的TCPIP_OWNER_MODULE_BASIC_INFOpModuleNamepModulePath 成员可能指向某些 TCP 连接的空字符串。 默认情况下,) 启动位于 Windows 系统文件夹 (C:\Windows\System32 中的 TCP 连接的应用程序被视为受保护。 如果 GetOwnerModuleFromTcpEntry 函数由不是 Administrators 组成员的用户调用,则函数调用将成功,但 pModuleNamepModulePath 成员将指向包含受保护应用程序启动的 TCP 连接的空字符串的内存。

对于在 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

另请参阅

MIB_TCP6ROW_OWNER_MODULE

TCPIP_OWNER_MODULE_INFO_CLASS