更新 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來清空整個桌子。
-
pConnectionIfIndexEntry — WINHTTP_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 |