描述項配置
雖然鼓勵 Windows Sockets 服務提供者將套接字實作為可安裝的文件系統 (IFS) 物件,但 Winsock 架構也會容納套接字句柄不是 IFS 對象的服務提供者。 具有 IFS 句柄的提供者會透過 WSAPROTOCOL_INFO 結構中的XP1_IFS_HANDLES屬性位來表示。 (注意:XP1_IFS_HANDLES屬性位未包含在 API 規格 2.0.8 版中,但此後已透過 errata 機制新增。Winsock SPI 用戶端可能會利用套接字描述元為 IFS 句柄的提供者,方法是使用這些描述元搭配標準 Windows I/O 設施,例如 ReadFile 和 WriteFile。
每當 IFS 提供者建立新的套接字描述元時,提供者必須先呼叫 WPUModifyIFSHandle,再將新的句柄提供給 Windows Sockets SPI 用戶端。 此函式會接受提供者標識碼和來自提供者的建議 IFS 句柄做為輸入,並傳回已修改的句柄。 IFS 提供者只能提供修改過的句柄給用戶端,而來自用戶端的所有要求只會參考這個修改過的句柄。 就作系統而言,已修改的句柄保證與建議的句柄不區分。 因此,在大部分情況下,服務提供者只會選擇只在其所有內部處理中使用已修改的句柄。 此修改函式的目的是讓 Ws2_32.dll 能夠大幅簡化識別與指定套接字相關聯的服務提供者的程式。
未傳回 IFS 句柄的提供者必須透過 WPUCreateSocketHandle 呼叫,從 Ws2_32.dll 取得有效的句柄。 nonIFS 提供者必須只提供 Windows Sockets 2.DLL提供給其用戶端的句柄,而且來自用戶端的所有要求只會參考這些句柄。 為了方便服務提供者實作者,WPUCreateSocketHandle 中提供者所提供的其中一個輸入參數是 DWORD 內容值。 Ws2_32.dll 會將這個內容值與配置的套接字句柄產生關聯,並允許服務提供者隨時透過 WPUQuerySocketHandleContext 呼叫擷取內容值。 此內容值的一般用法是儲存用來儲存套接字狀態資訊的服務提供者維護數據結構的指標。