接收和翻譯 NIC 位址
Windows Sockets 參數一律會使用 WSK 位址系列,其中包含 IP 位址,當它與 SAN 服務提供者和 SAN NIC 互動時。 交換器不會使用 SAN 的原生位址系列。 因此,SAN 服務提供者必須使用其相關聯的 Proxy 驅動程式來擷取指派給其 NIC 的 IP 位址清單。 SAN 服務提供者在與其 Proxy 驅動程式互動時,會使用這些 IP 位址。 Proxy 驅動程式必須在 IP 位址與原生位址之間翻譯。
在初始化期間,Proxy 驅動程式通常會向傳輸驅動程式介面 (TDI) 登入位址變更通知。 所有隨插即用 (PnP) 感知傳輸,包括 TCP/IP,透過 TDI 提供位址變更通知給已註冊這類通知的用戶端。
注意 在 Windows Vista 之後,Microsoft Windows 版本不支援 TDI。 請改用 Windows 篩選平台 或 Winsock 核心 。
登入位址變更通知
在初始化期間,Proxy 驅動程式會呼叫 TdiRegisterPnPHandlers 函式來登入位址變更通知。 在此呼叫中,Proxy 驅動程式會將指標傳遞給回呼函式,以取得TDI_CLIENT_INTERFACE_INFO結構之 AddAddressHandlerV2 和 DelAddressHandlerV2 成員的位址新增和刪除。 Proxy 驅動程式註冊以接收這些通知之後,TDI 會立即使用新增位址回呼來指出所有目前作用中的網路位址。
TDI 會將下列參數傳遞至 Proxy 驅動程式的新增位址或刪除位址回呼函式:
位址
描述指派給 NIC 或從 NIC 移除之網路位址的TA_ADDRESS結構的指標。 在 TCP/IP 的情況下,此指標實際上是TA_ADDRESS_IP結構的指標。
DeviceName
Unicode 字串的指標,識別與位址相關聯的傳輸到 NIC 系結。 如果是 TCP/IP,Unicode 字串的格式如下:
\Device\Tcpip_{NIC-GUID}
其中 NIC-GUID 是網路設定子系統指派給 NIC 的全域唯一識別碼。
上述結構定義是在 tdi.h 標頭檔中定義。 上述註冊和回呼函式是在 tdikrnl.h 標頭檔中定義。 這些標頭檔位於 Microsoft Windows 驅動程式開發工具組中, (DDK) 和 Windows 驅動程式套件 (WDK) 。 TDI 用戶端回呼和TDI 用戶端事件和 PnP 通知處理常式中包含 TDI PnP 通知的詳細資訊。
注意 在 Windows Vista 之後,Microsoft Windows 版本不支援 TDI。 請改用 Windows 篩選平台 或 Winsock 核心 。
維護 IP 位址清單
SAN 服務提供者的 Proxy 驅動程式會使用新增位址和刪除位址通知來維護指派給其控制下每個 NIC 的 IP 位址清單。 Proxy 驅動程式會使用此清單來轉譯 TCP/IP 傳輸和原生 SAN 位址指派給 SAN NIC 的一或多個 IP 位址。 每當交換器 SIO_ADDRESS_LIST_QUERY進行控制程式代碼查詢時,Proxy 驅動程式也必須提供裝置控制常式,讓指派給 NIC 的 IP 位址清單可供 Windows Sockets 交換器使用。 Proxy 驅動程式的 DriverEntry 常式必須指定此裝置控制常式的進入點。
Windows Sockets 參數會維護指派給每個 SAN NIC 的所有 IP 位址清單。 若要擷取此內含清單的 IP 位址,參數會呼叫每個 SAN 服務提供者的 WSPIoctl 函式,並傳遞SIO_ADDRESS_LIST_QUERY控制程式代碼。 接著,每個 SAN 服務提供者會查詢其相關聯的 Proxy 驅動程式,以取得指派給其 SAN NIC 的個別 IP 位址清單。 在交換器收到位址變更通知之後,它會重新查詢每個 SAN 服務提供者,以取得每個個別清單中的更新。