Función WinHttpConnectionUpdateIfIndexTable

Actualiza la tabla de asignación interna de WinHTTP que asocia conexiones de red con nombre con sus índices de interfaz de red activos. Esto permite a WinHTTP enrutar las solicitudes HTTP a través de la interfaz de red correcta en función de las decisiones de directiva compatibles con la conexión.

Syntax

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

Parameters

hSession [in]

Un identificador de sesión winHTTP válido creado por WinHttpOpen. El identificador debe ser un identificador de nivel de sesión.

pConnectionIfIndexEntries [in]

Puntero a una estructura de WINHTTP_CONNECTION_IFINDEX_LIST que contiene una matriz de asignaciones de conexión a interfaz-índice.

La estructura WINHTTP_CONNECTION_IFINDEX_LIST contiene:

  • nEntries : número de entradas de la matriz. Puede ser 0 para borrar la tabla.
  • pConnectionIfIndexEntries : matriz de estructuras de WINHTTP_CONNECTION_IFINDEX_ENTRY , cada una que contiene:
    • pwszConnectionName : nombre de la conexión (por ejemplo, "Móvil").
    • dwIfIndex : índice de interfaz de red activa (IF_INDEX).

Valor devuelto

Devuelve ERROR_SUCCESS (0) si se realiza correctamente. Devuelve un código de error del sistema en caso de error, incluido lo siguiente.

Value Description
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE hSession no es un identificador de sesión.
ERROR_WINHTTP_NOT_INITIALIZED Los globales winHTTP no se inicializan.
ERROR_ACCESS_DENIED El autor de la llamada carece de privilegios necesarios.

Remarks

Nota:

Esta API no se incluye actualmente en un archivo de encabezado del SDK. Debe declarar la función usted mismo en el código.

Esta función se comunica con el servicio WinHTTP Auto-Proxy para actualizar la tabla de asignación de conexión a interfaz.

La tabla permite a WinHTTP enlazar conexiones HTTP a interfaces de red específicas, lo que es fundamental para los dispositivos de varios hogares (por ejemplo, dispositivos con conexiones tanto Wi-Fi como móviles activas simultáneamente).

Normalmente lo llaman los componentes de red del sistema, como Windows Administrador de conexiones, siempre que los estados de conexión cambien (eventos de conexión o desconexión) para mantener la tabla de enrutamiento de WinHTTP sincronizada con el estado de red actual.

Pasar una lista vacía (nEntries = 0, pConnectionIfIndexEntries = nullptr) borra eficazmente todas las asignaciones de interfaz de conexión.

Ejemplo

En el ejemplo siguiente se actualiza la tabla de índices de interfaz con asignaciones para un Wi-Fi y una conexión de telefonía móvil.

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

Requisitos

Requirement Value
Cabecera N/A
Biblioteca winhttp.lib
DLL winhttp.dll

Consulte también