Функция GetOwnerModuleFromTcpEntry (iphlpapi.h)

Функция GetOwnerModuleFromTcpEntry извлекает данные о модуле, который выдал привязку контекста для определенной конечной точки TCP IPv4 в строке таблицы MIB.

Синтаксис

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

Параметры

[in] pTcpEntry

Указатель на структуру MIB_TCPROW_OWNER_MODULE , содержащую запись конечной точки TCP IPv4, используемую для получения модуля владельца.

[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 .

Следующие структуры используются для данных в 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
Неправильный параметр. Это значение возвращается, если один из параметров pTcpEntry или pdwSize имеет значение NULL. Это значение также возвращается, если параметр Class не равен TCPIP_OWNER_MODULE_INFO_BASIC.
ERROR_NOT_ENOUGH_MEMORY
Недостаточно памяти для выполнения операции.
ERROR_NOT_FOUND
Элемент не найден. Это значение возвращается, если элемент dwOwningPidструктуры MIB_TCPROW_OWNER_MODULE , на который указывает параметр pTcpEntry , был равен нулю или не найден.
ERROR_PARTIAL_COPY
Выполнена только часть запроса.

Комментарии

Параметр Buffer содержит не только структуру с указателями на определенные данные, например указатели на строки с нулевым завершением, которые содержат имя и путь модуля владельца, но и сами данные; — это строки имени и пути. Поэтому при расчете размера буфера убедитесь, что у вас достаточно места для структуры, а также данных, на которые указывают члены структуры.

Рекомендуется разрешить записи таблицы TCP в модули-владельцы. В некоторых случаях имя модуля владельца, возвращаемое в структуре TCPIP_OWNER_MODULE_BASIC_INFO , может быть именем процесса, например "svchost.exe", именем службы (например, "RPC") или именем компонента, например "timer.dll".

Для компьютеров под управлением Windows Vista или более поздней версии элементы pModuleName и pModulePathTCPIP_OWNER_MODULE_BASIC_INFO , полученные функцией GetOwnerModuleFromTcpEntry , могут указывать на пустую строку для некоторых TCP-подключений. Приложения, запускающие TCP-подключения, расположенные в системной папке Windows (по умолчанию C:\Windows\System32), считаются защищенными. Если функция GetOwnerModuleFromTcpEntry вызывается пользователем, не включаемым в группу Администраторы, вызов функции будет выполнен успешно, но элементы pModuleName и pModulePath будут указывать на память, содержащую пустую строку для TCP-подключений, запущенных защищенными приложениями.

Для компьютеров под управлением Windows Vista или более поздней версии доступ к элементам pModuleName и pModulePath структуры TCPIP_OWNER_MODULE_BASIC_INFO ограничен контролем учетных записей пользователей (UAC). Если приложение, которое вызывает эту функцию, выполняется пользователем, вошедшего в систему как участник группы администраторов, отличный от встроенного администратора, этот вызов будет выполнен успешно, но доступ к этим членам возвращает пустую строку, если приложение не было отмечено в файле манифеста с параметром requestedExecutionLevel , для которого задано значение requireAdministrator. Если в приложении в Windows Vista или более поздних версиях отсутствует этот файл манифеста, пользователь, вошедший в группу администраторов, кроме встроенного администратора, должен выполнять приложение в расширенной оболочке в качестве встроенного администратора (администратора запуска от имени), чтобы получить доступ к защищенным членам pModuleName и pModulePath .

Требования

   
Минимальная версия клиента Windows Vista, Windows XP с пакетом обновления 2 (SP2) [только классические приложения]
Минимальная версия сервера Windows Server 2008, Windows Server 2003 с пакетом обновления 1 (SP1) [только классические приложения]
Целевая платформа Windows
Header iphlpapi.h
Библиотека Iphlpapi.lib
DLL Iphlpapi.dll

См. также раздел

MIB_TCPROW_OWNER_MODULE

TCPIP_OWNER_MODULE_BASIC_INFO