Función GetOwnerModuleFromTcpEntry (iphlpapi.h)

La función GetOwnerModuleFromTcpEntry recupera datos sobre el módulo que emitió el enlace de contexto para un punto de conexión TCP IPv4 específico en una fila de tabla MIB.

Sintaxis

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
);

Parámetros

[in] pTcpEntry

Puntero a una estructura de MIB_TCPROW_OWNER_MODULE que contiene la entrada de punto de conexión TCP IPv4 utilizada para obtener el módulo propietario.

[in] Class

Valor de enumeración TCPIP_OWNER_MODULE_INFO_CLASS que indica el tipo de datos que se van a obtener con respecto al módulo propietario. La enumeración TCPIP_OWNER_MODULE_INFO_CLASS se define en el archivo de encabezado Iprtrmib.h .

Este parámetro debe establecerse en TCPIP_OWNER_MODULE_INFO_BASIC.

[out] pBuffer

Puntero a un búfer que contiene una estructura TCPIP_OWNER_MODULE_BASIC_INFO con los datos del módulo propietario. El tipo de datos devueltos en este búfer se indica mediante el valor del parámetro Class .

Las estructuras siguientes se usan para los datos de Buffer cuando Class se establece en el valor correspondiente.

Valor de enumeración de clase Formato de datos de búfer
TCPIP_OWNER_MODULE_BASIC_INFO TCPIP_OWNER_MODULE_BASIC_INFO

[in, out] pdwSize

Tamaño estimado, en bytes, de la estructura devuelta en buffer. Si este valor se establece demasiado pequeño, esta función devuelve ERROR_INSUFFICIENT_BUFFER y este campo contendrá el tamaño correcto del búfer. El tamaño necesario es el tamaño de la estructura correspondiente más un número adicional de bytes igual a la longitud de los datos a los que apunta la estructura (por ejemplo, el nombre y las cadenas de ruta de acceso).

Valor devuelto

Si la llamada de función se realiza correctamente, se devuelve el valor NO_ERROR .

Si se produce un error en la función, el valor devuelto es uno de los siguientes códigos de error.

Código devuelto Descripción
ERROR_INSUFFICIENT_BUFFER
Se asignó espacio insuficiente para la tabla. El tamaño de la tabla se devuelve en el parámetro pdwSize y se debe usar en una llamada posterior a esta función para recuperar correctamente la tabla.
ERROR_INVALID_PARAMETER
Un parámetro es incorrecto. Este valor se devuelve si cualquiera de los parámetros pTcpEntry o pdwSize son NULL. Este valor también se devuelve si el parámetro Class no es igual a TCPIP_OWNER_MODULE_INFO_BASIC.
ERROR_NOT_ENOUGH_MEMORY
Memoria insuficiente para completar la operación.
ERROR_NOT_FOUND
No se encontró ningún elemento. Este valor se devuelve si el miembro dwOwningPid de la estructura MIB_TCPROW_OWNER_MODULE a la que apunta el parámetro pTcpEntry era cero o no se encontró.
ERROR_PARTIAL_COPY
Solo se completó parte de una solicitud.

Comentarios

El parámetro Buffer no solo contiene una estructura con punteros a datos específicos, por ejemplo, punteros a las cadenas terminadas en cero que contienen el nombre y la ruta de acceso del módulo propietario, sino los datos reales; es el nombre y las cadenas de ruta de acceso. Por lo tanto, al calcular el tamaño del búfer, asegúrese de tener suficiente espacio para la estructura, así como los datos a los que apuntan los miembros de la estructura.

La resolución de entradas de tabla TCP para los módulos propietarios es un procedimiento recomendado. En algunos casos, el nombre del módulo propietario devuelto en la estructura TCPIP_OWNER_MODULE_BASIC_INFO puede ser un nombre de proceso, como "svchost.exe", un nombre de servicio (como "RPC") o un nombre de componente, como "timer.dll".

En el caso de los equipos que se ejecutan en Windows Vista o versiones posteriores, los miembros pModuleName y pModulePath del TCPIP_OWNER_MODULE_BASIC_INFO recuperados por la función GetOwnerModuleFromTcpEntry pueden apuntar a una cadena vacía para algunas conexiones TCP. Las aplicaciones que inician conexiones TCP ubicadas en la carpeta del sistema de Windows (C:\Windows\System32, de forma predeterminada) se consideran protegidas. Si un usuario llama a la función GetOwnerModuleFromTcpEntry que no es miembro del grupo Administradores, la llamada de función se realizará correctamente, pero los miembros pModuleName y pModulePath apuntarán a la memoria que contiene una cadena vacía para las conexiones TCP iniciadas por aplicaciones protegidas.

Para los equipos que se ejecutan en Windows Vista o versiones posteriores, el acceso a los miembros pModuleName y pModulePath de la estructura de TCPIP_OWNER_MODULE_BASIC_INFO está limitado por el control de cuentas de usuario (UAC). Si un usuario que inicia sesión como miembro del grupo Administradores que llama a esta función ejecuta esta función, esta llamada se realizará correctamente, pero el acceso a estos miembros devolverá una cadena vacía a menos que la aplicación se haya marcado en el archivo de manifiesto con un valor requestedExecutionLevel establecido en requireAdministrator. Si la aplicación en Windows Vista o posterior carece de este archivo de manifiesto, un usuario que haya iniciado sesión como miembro del grupo Administradores que no sea el administrador integrado debe ejecutar la aplicación en un shell mejorado como administrador integrado (administrador de runas) para tener acceso a los miembros pModuleName y pModulePath protegidos que se van a permitir.

Requisitos

   
Cliente mínimo compatible Windows Vista, Windows XP con SP2 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008, Windows Server 2003 con SP1 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado iphlpapi.h
Library Iphlpapi.lib
Archivo DLL Iphlpapi.dll

Consulte también

MIB_TCPROW_OWNER_MODULE

TCPIP_OWNER_MODULE_BASIC_INFO