GetOwnerModuleFromTcpEntry 函数 (iphlpapi.h)
GetOwnerModuleFromTcpEntry 函数检索有关在 MIB 表行中为特定 IPv4 TCP 终结点发出上下文绑定的模块的数据。
语法
IPHLPAPI_DLL_LINKAGE DWORD GetOwnerModuleFromTcpEntry(
[in] PMIB_TCPROW_OWNER_MODULE pTcpEntry,
[in] TCPIP_OWNER_MODULE_INFO_CLASS Class,
[out] PVOID pBuffer,
[in, out] PDWORD pdwSize
);
parameters
[in] pTcpEntry
指向 MIB_TCPROW_OWNER_MODULE 结构的指针,该结构包含用于获取所有者模块的 IPv4 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_TCPROW_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 |