Поделиться через


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

Функция GetExtendedTcpTable извлекает таблицу, содержащую список конечных точек TCP, доступных приложению.

Синтаксис

IPHLPAPI_DLL_LINKAGE DWORD GetExtendedTcpTable(
  [out]     PVOID           pTcpTable,
  [in, out] PDWORD          pdwSize,
  [in]      BOOL            bOrder,
  [in]      ULONG           ulAf,
  [in]      TCP_TABLE_CLASS TableClass,
  [in]      ULONG           Reserved
);

Параметры

[out] pTcpTable

Указатель на структуру таблицы, содержащую отфильтрованные конечные точки TCP, доступные приложению. Сведения об определении типа возвращаемой таблицы на основе конкретных сочетаний входных параметров см. в разделе Примечания далее в этом документе.

[in, out] pdwSize

Предполагаемый размер структуры, возвращаемой в pTcpTable, в байтах. Если это значение слишком мало, функция возвращает ERROR_INSUFFICIENT_BUFFER , и это поле будет содержать правильный размер структуры.

[in] bOrder

Значение типа , указывающее, следует ли отсортировать таблицу tcp-подключений. Если для этого параметра задано значение TRUE, конечные точки TCP в таблице сортируются по возрастанию, начиная с самого низкого локального IP-адреса. Если для этого параметра задано значение FALSE, конечные точки TCP в таблице отображаются в том порядке, в котором они были получены.

Следующие значения сравниваются (как указано) при упорядочении конечных точек TCP:

  1. Локальный IP-адрес
  2. Локальный идентификатор область (применяется, если для параметра ulAf задано значение AF_INET6)
  3. Локальный TCP-порт
  4. Удаленный IP-адрес
  5. Идентификатор удаленного область (применимо, если параметр ulAf имеет значение AF_INET6)
  6. Удаленный TCP-порт

[in] ulAf

Версия IP-адреса, используемого конечными точками TCP.

Значение Значение
AF_INET
Используется протокол IPv4.
AF_INET6
Используется IPv6.

[in] TableClass

Тип извлекаемой структуры таблицы TCP. Этот параметр может быть одним из значений перечисления TCP_TABLE_CLASS .

На Windows SDK, выпущенном для Windows Vista и более поздних версий, организация файлов заголовков изменилась, и перечисление TCP_TABLE_CLASS определяется в файле заголовка Iprtrmib.h, а не в файле заголовка Iphlpapi.h.

Значение перечисления TCP_TABLE_CLASS объединяется со значением параметра ulAf , чтобы определить извлекаемую расширенную информацию TCP.

[in] Reserved

Зарезервировано. Это значение должно быть равно нулю.

Возвращаемое значение

Если вызов выполнен успешно, возвращается значение NO_ERROR .

Если функция завершается сбоем, возвращается один из следующих кодов ошибок.

Код возврата Описание
ERROR_INSUFFICIENT_BUFFER
Для таблицы было выделено недостаточно места. Размер таблицы возвращается в параметре pdwSize и должен использоваться при последующем вызове этой функции для успешного извлечения таблицы.

Эта ошибка также возвращается, если параметр pTcpTable имеет значение NULL.

ERROR_INVALID_PARAMETER
В функцию передан недопустимый параметр. Эта ошибка возвращается, если параметр TableClass содержит значение, не определенное в перечислении TCP_TABLE_CLASS .

Комментарии

Тип таблицы, возвращаемый этой функцией, зависит от конкретного сочетания параметров ulAf и TableClass .

Если для параметра ulAf задано значение AF_INET, в следующей таблице указан тип таблицы TCP, извлекаемый в структуре, на которую указывает параметр pTcpTable для каждого возможного значения TableClass .

Значение TableClass Структура pTcpTable
TCP_TABLE_BASIC_ALL MIB_TCPTABLE
TCP_TABLE_BASIC_CONNECTIONS MIB_TCPTABLE
TCP_TABLE_BASIC_LISTENER MIB_TCPTABLE
TCP_TABLE_OWNER_MODULE_ALL MIB_TCPTABLE_OWNER_MODULE
TCP_TABLE_OWNER_MODULE_CONNECTIONS MIB_TCPTABLE_OWNER_MODULE
TCP_TABLE_OWNER_MODULE_LISTENER MIB_TCPTABLE_OWNER_MODULE
TCP_TABLE_OWNER_PID_ALL MIB_TCPTABLE_OWNER_PID
TCP_TABLE_OWNER_PID_CONNECTIONS MIB_TCPTABLE_OWNER_PID
TCP_TABLE_OWNER_PID_LISTENER MIB_TCPTABLE_OWNER_PID
 

Если для параметра ulAf задано значение AF_INET6, в следующей таблице указан тип таблицы TCP, который необходимо получить в структуре, на которую указывает параметр pTcpTable для каждого возможного значения TableClass .

Значение TableClass Структура pTcpTable
TCP_TABLE_OWNER_MODULE_ALL MIB_TCP6TABLE_OWNER_MODULE
TCP_TABLE_OWNER_MODULE_CONNECTIONS MIB_TCP6TABLE_OWNER_MODULE
TCP_TABLE_OWNER_MODULE_LISTENER MIB_TCP6TABLE_OWNER_MODULE
TCP_TABLE_OWNER_PID_ALL MIB_TCP6TABLE_OWNER_PID
TCP_TABLE_OWNER_PID_CONNECTIONS MIB_TCP6TABLE_OWNER_PID
TCP_TABLE_OWNER_PID_LISTENER MIB_TCP6TABLE_OWNER_PID
 

Функция GetExtendedTcpTable, вызываемая с параметром ulAf , равным AF_INET6 , а tableClassTCP_TABLE_BASIC_LISTENER, TCP_TABLE_BASIC_CONNECTIONS или TCP_TABLE_BASIC_ALL , не поддерживается и возвращает ERROR_NOT_SUPPORTED.

На Windows SDK, выпущенном для Windows Vista и более поздних версий, организация файлов заголовков изменилась. Различные структуры MIB_TCPTABLE определяются в файле заголовка Tcpmib.h , а не в файле заголовка Iprtrmib.h . Обратите внимание, что файл заголовка Tcpmib.h автоматически включается в iprtrmib.h, который автоматически включается в файл заголовка Iphlpapi.h . Файлы заголовков Tcpmib.h и Iprtrmib.h никогда не следует использовать напрямую.

Требования

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

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

MIB_TCP6TABLE

MIB_TCP6TABLE_OWNER_MODULE

MIB_TCP6TABLE_OWNER_PID

MIB_TCPTABLE

MIB_TCPTABLE_OWNER_MODULE

MIB_TCPTABLE_OWNER_PID

TCP_TABLE_CLASS