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 。
如果函数失败,则返回值为以下错误代码之一。
返回代码 | 说明 |
---|---|
|
为表分配的空间不足。 表的大小在 pdwSize 参数中返回,并且必须在后续调用此函数时使用,才能成功检索表。 |
|
参数不正确。 如果 pTcpEntry 或 pdwSize 参数之一为 NULL,则返回此值。 如果 Class 参数不等于 TCPIP_OWNER_MODULE_INFO_BASIC,也会返回此值。 |
|
没有足够的可用内存来完成该操作。 |
|
找不到该元素。 如果 pTcpEntry 参数指向的MIB_TCP6ROW_OWNER_MODULE的 dwOwningPid 成员为零或找不到,则返回此值。 |
|
只完成了请求的一部分。 |
注解
Buffer 参数不仅包含一个结构,其中包含指向特定数据的指针,例如,指向包含所有者模块名称和路径的零终止字符串的指针,还包含实际数据本身;,即名称和路径字符串。 因此,在计算缓冲区的大小时,请确保有足够的空间来容纳结构以及结构成员指向的数据。
最佳做法是将 TCP 表条目解析为所有者模块。 在少数情况下, TCPIP_OWNER_MODULE_BASIC_INFO 结构中返回的所有者模块名称可以是进程名称 (“svchost.exe”) 、服务名称 ((如“RPC”) )或组件名称 ((如“timer.dll”) )。
对于在 Windows Vista 或更高版本上运行的计算机,GetOwnerModuleFromTcpEntry 函数检索的TCPIP_OWNER_MODULE_BASIC_INFO的 pModuleName 和 pModulePath 成员可能指向某些 TCP 连接的空字符串。 默认情况下,) 启动位于 Windows 系统文件夹 (C:\Windows\System32 中的 TCP 连接的应用程序被视为受保护。 如果 GetOwnerModuleFromTcpEntry 函数由不是 Administrators 组成员的用户调用,则函数调用将成功,但 pModuleName 和 pModulePath 成员将指向包含受保护应用程序启动的 TCP 连接的空字符串的内存。
对于在 Windows Vista 或更高版本上运行的计算机,访问 TCPIP_OWNER_MODULE_BASIC_INFO 结构的 pModuleName 和 pModulePath 成员受用户帐户控制 (UAC) 的限制。 如果调用此函数的应用程序由作为管理员组成员(而非内置管理员)登录的用户执行,则此调用将成功,但对这些成员的访问将返回空字符串,除非应用程序已在清单文件中标记为 requestedExecutionLevel 设置为 requireAdministrator。 如果 Windows Vista 或更高版本上的应用程序缺少此清单文件,则作为管理员组成员(而非内置管理员)登录的用户必须在增强的 shell 中执行应用程序,因为内置管理员 (RunAs 管理员) 才能访问受保护的 pModuleName 和 pModulePath 成员。
要求
最低受支持的客户端 | Windows Vista、Windows XP 和 SP2 [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008、Windows Server 2003 SP1 [仅限桌面应用] |
目标平台 | Windows |
标头 | iphlpapi.h |
Library | Iphlpapi.lib |
DLL | Iphlpapi.dll |