WinHttpConnectionUpdateIfIndexTable 函式

更新 WinHTTP 內部映射表,該表將命名的網路連線與其主動網路介面索引關聯起來。 這使得 WinHTTP 能根據連線感知政策決策,將 HTTP 請求路由至正確的網路介面。

Syntax

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

Parameters

hSession [在]

WinHttpOpen 建立的有效 WinHTTP 會話帳號。 該句柄必須是會話層級的句柄。

pConnectionIfIndexEntries [in]

指標指向包含連接到介面索引映射陣列的 WINHTTP_CONNECTION_IFINDEX_LIST 結構。

WINHTTP_CONNECTION_IFINDEX_LIST結構包含:

  • nEntries — 陣列中的條目數量。 可以是0來清空整個桌子。
  • pConnectionIfIndexEntryWINHTTP_CONNECTION_IFINDEX_ENTRY 結構陣列,每個結構包含:
    • pwszConnectionName — 連線名稱(例如「Cellular」)。
    • dwIfIndex — 主動網路介面索引(IF_INDEX)。

返回值

成功時回 ERROR_SUCCESS (0)。 故障時會回傳 系統錯誤代碼 ,包括以下內容。

Value Description
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE hSession 不是 session 帳號。
ERROR_WINHTTP_NOT_INITIALIZED WinHTTP 全域檔並未初始化。
ERROR_ACCESS_DENIED 來電者缺乏必要的權限。

Remarks

備註

此 API 目前未包含在 SDK 標頭檔中。 你必須在程式碼中自己宣告這個函式。

此函式與 WinHTTP 自動代理服務通訊,以更新連接至介面的映射表。

此表格使 WinHTTP 能夠將 HTTP 連線綁定到特定的網路介面,這對於多重裝置(例如同時啟用 Wi-Fi 與行動網路連線的裝置)至關重要。

通常由系統網路元件(如 Windows 連線管理員)在連線狀態變化(連線/斷開事件)時呼叫,以保持 WinHTTP 路由表與當前網路狀態同步。

傳遞空清單(nEnentry = 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 Value
Header 不適用
圖書館 winhttp.lib
DLL winhttp.dll

另請參閱