Função GetOwnerModuleFromTcpEntry (iphlpapi.h)

A função GetOwnerModuleFromTcpEntry recupera dados sobre o módulo que emitiu a associação de contexto para um ponto de extremidade TCP IPv4 específico em uma linha de tabela MIB.

Sintaxe

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

Um ponteiro para uma estrutura MIB_TCPROW_OWNER_MODULE que contém a entrada de ponto de extremidade TCP IPv4 usada para obter o módulo proprietário.

[in] Class

Um TCPIP_OWNER_MODULE_INFO_CLASS valor de enumeração que indica o tipo de dados a serem obtidos em relação ao módulo proprietário. A enumeração TCPIP_OWNER_MODULE_INFO_CLASS é definida no arquivo de cabeçalho Iprtrmib.h .

Esse parâmetro deve ser definido como TCPIP_OWNER_MODULE_INFO_BASIC.

[out] pBuffer

Um ponteiro para um buffer que contém uma estrutura TCPIP_OWNER_MODULE_BASIC_INFO com os dados do módulo proprietário. O tipo de dados retornados nesse buffer é indicado pelo valor do parâmetro Class .

As estruturas a seguir são usadas para os dados em Buffer quando Class é definido como o valor correspondente.

Valor de enumeração de classe Formato de dados do buffer
TCPIP_OWNER_MODULE_BASIC_INFO TCPIP_OWNER_MODULE_BASIC_INFO

[in, out] pdwSize

O tamanho estimado, em bytes, da estrutura retornada em Buffer. Se esse valor for definido muito pequeno, ERROR_INSUFFICIENT_BUFFER será retornado por essa função e esse campo conterá o tamanho correto do buffer. O tamanho necessário é o tamanho da estrutura correspondente mais um número adicional de bytes igual ao comprimento dos dados apontados na estrutura (por exemplo, as cadeias de caracteres de nome e caminho).

Valor retornado

Se a chamada de função for bem-sucedida, o valor NO_ERROR será retornado.

Se a função falhar, o valor retornado será um dos códigos de erro a seguir.

Código de retorno Descrição
ERROR_INSUFFICIENT_BUFFER
Espaço insuficiente foi alocado para a tabela. O tamanho da tabela é retornado no parâmetro pdwSize e deve ser usado em uma chamada subsequente para essa função para recuperar a tabela com êxito.
ERROR_INVALID_PARAMETER
Um parâmetro está incorreto. Esse valor será retornado se um dos parâmetros pTcpEntry ou pdwSize for NULL. Esse valor também será retornado se o parâmetro Class não for igual a TCPIP_OWNER_MODULE_INFO_BASIC.
ERROR_NOT_ENOUGH_MEMORY
Não há memória disponível suficiente para concluir a operação.
ERROR_NOT_FOUND
Um elemento não foi encontrado. Esse valor será retornado se o membro dwOwningPid da estrutura MIB_TCPROW_OWNER_MODULE apontada pelo parâmetro pTcpEntry for zero ou não puder ser encontrado.
ERROR_PARTIAL_COPY
Somente parte de uma solicitação foi concluída.

Comentários

O parâmetro Buffer contém não apenas uma estrutura com ponteiros para dados específicos, por exemplo, ponteiros para as cadeias de caracteres terminadas em zero que contêm o nome e o caminho do módulo proprietário, mas os próprios dados reais; que são as cadeias de caracteres de nome e caminho. Portanto, ao calcular o tamanho do buffer, verifique se você tem espaço suficiente para a estrutura, bem como os dados para os quais os membros da estrutura apontam.

A resolução de entradas de tabela TCP para módulos de proprietário é uma prática recomendada. Em alguns casos, o nome do módulo proprietário retornado na estrutura TCPIP_OWNER_MODULE_BASIC_INFO pode ser um nome de processo, como "svchost.exe", um nome de serviço (como "RPC" ou um nome de componente, como "timer.dll".

Para computadores em execução no Windows Vista ou posterior, os membros pModuleName e pModulePath do TCPIP_OWNER_MODULE_BASIC_INFO recuperados pela função GetOwnerModuleFromTcpEntry podem apontar para uma cadeia de caracteres vazia para algumas conexões TCP. Os aplicativos que iniciam conexões TCP localizadas na pasta do sistema Windows (C:\Windows\System32, por padrão) são considerados protegidos. Se a função GetOwnerModuleFromTcpEntry for chamada por um usuário que não seja membro do grupo Administradores, a chamada de função terá êxito, mas os membros pModuleName e pModulePath apontarão para a memória que contém uma cadeia de caracteres vazia para as conexões TCP iniciadas por aplicativos protegidos.

Para computadores em execução no Windows Vista ou posterior, o acesso aos membros pModuleName e pModulePath da estrutura TCPIP_OWNER_MODULE_BASIC_INFO é limitado pelo UAC (controle de conta de usuário). Se um aplicativo que chama essa função for executado por um usuário conectado como um membro do grupo Administradores diferente do Administrador interno, essa chamada terá êxito, mas o acesso a esses membros retornará uma cadeia de caracteres vazia, a menos que o aplicativo tenha sido marcado no arquivo de manifesto com um requestedExecutionLevel definido como requireAdministrator. Se o aplicativo no Windows Vista ou posterior não tiver esse arquivo de manifesto, um usuário conectado como membro do grupo Administradores que não seja o Administrador interno deverá executar o aplicativo em um shell avançado como administrador interno (administrador RunAs) para acesso aos membros pModuleName e pModulePath protegidos a serem permitidos.

Requisitos

   
Cliente mínimo com suporte Windows Vista, Windows XP com SP2 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008, Windows Server 2003 com SP1 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho iphlpapi.h
Biblioteca Iphlpapi.lib
DLL Iphlpapi.dll

Confira também

MIB_TCPROW_OWNER_MODULE

TCPIP_OWNER_MODULE_BASIC_INFO