Функция WinHttpConnectionUpdateIfIndexTable

Обновляет таблицу внутреннего сопоставления WinHTTP, которая связывает именованные сетевые подключения с индексами активных сетевых интерфейсов. Это позволяет WinHTTP маршрутизировать HTTP-запросы через правильный сетевой интерфейс на основе решений политики с поддержкой подключения.

Syntax

DWORD WINAPI WinHttpConnectionUpdateIfIndexTable(
    _In_ HINTERNET                          hSession,
    _In_ WINHTTP_CONNECTION_IFINDEX_LIST   *pConnectionIfIndexEntries
);

Parameters

hSession [in]

Допустимый дескриптор сеанса WinHTTP, созданный WinHttpOpen. Дескриптор должен быть дескриптором уровня сеанса.

pConnectionIfIndexEntries [in]

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

Структура WINHTTP_CONNECTION_IFINDEX_LIST содержит следующее:

  • nEntries — количество записей в массиве. Может быть 0, чтобы очистить таблицу.
  • pConnectionIfIndexEntries — массив структур WINHTTP_CONNECTION_IFINDEX_ENTRY , каждый из которых содержит:
    • pwszConnectionName — имя подключения (например, "Сотовой связи").
    • dwIfIndex — индекс активного сетевого интерфейса (IF_INDEX).

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

Возвращает ERROR_SUCCESS (0) при успешном выполнении. Возвращает системный код ошибки при сбое, включая следующее.

Ценность Описание
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE hSession не является дескриптором сеанса.
ERROR_WINHTTP_NOT_INITIALIZED Глобальные модули WinHTTP не инициализированы.
ERROR_ACCESS_DENIED Вызывающий объект не имеет необходимых привилегий.

Remarks

Замечание

Этот API в настоящее время не входит в файл заголовка пакета SDK. В коде необходимо объявить функцию.

Эта функция взаимодействует со службой авто-прокси WinHTTP для обновления таблицы сопоставления подключений к интерфейсу.

Таблица позволяет WinHTTP привязать HTTP-подключения к определенным сетевым интерфейсам, что является критически важным для нескольких домашних устройств (например, устройств с Wi-Fi и сотовыми подключениями одновременно).

Обычно вызывается сетевыми компонентами системы, например Windows диспетчер подключений, при изменении состояний подключения (события подключения и отключения) для синхронизации таблицы маршрутизации WinHTTP с текущим состоянием сети.

Передача пустого списка (nEntries = 0, pConnectionIfIndexEntries = nullptr) эффективно очищает все сопоставления интерфейсов подключения.

Пример

В следующем примере обновляется таблица индекса интерфейса с сопоставлениями как для Wi-Fi, так и для сотового подключения.

WINHTTP_CONNECTION_IFINDEX_ENTRY entries[2] = {};
entries[0].pwszConnectionName = L"Wi-Fi";
entries[0].dwIfIndex = 4;
entries[1].pwszConnectionName = L"Cellular";
entries[1].dwIfIndex = 7;

WINHTTP_CONNECTION_IFINDEX_LIST ifList = {};
ifList.pConnectionIfIndexEntries = entries;
ifList.nEntries = 2;

WinHttpConnectionUpdateIfIndexTable(hSession, &ifList);

Требования

Requirement Ценность
Header N/A
Библиотека winhttp.lib
DLL winhttp.dll

См. также