WSAProviderConfigChange 函式 (winsock2.h)
WSAProviderConfigChange 函式會在提供者組態變更時通知應用程式。
語法
INT WSAAPI WSAProviderConfigChange(
[in, out] LPHANDLE lpNotificationHandle,
[in] LPWSAOVERLAPPED lpOverlapped,
[in] LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);
參數
[in, out] lpNotificationHandle
通知句柄的指標。 如果通知句柄設定為 NULL (不是指標本身) 的句柄值,則此函式會在 lpNotificationHandle 指向的位置傳回通知句柄。
[in] lpOverlapped
WSAOVERLAPPED 結構的指標。
[in] lpCompletionRoutine
類型:_In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE
收到提供者變更通知時呼叫之完成例程的指標。
傳回值
如果沒有發生錯誤, WSAProviderConfigChange 會 傳回 0。 否則,會傳回SOCKET_ERROR的值,並呼叫 WSAGetLastError 來擷取特定的錯誤碼。 錯誤碼 WSA_IO_PENDING 表示已成功起始重疊的作業,而且完成 (,因此稍後會指出變更事件) 。
錯誤碼 | 意義 |
---|---|
使用這個函式之前,必須先進行成功的 WSAStartup 呼叫。 | |
網路子系統失敗。 | |
沒有足夠的可用記憶體來完成作業。 | |
lpNotificationHandle 參數所指向的值不是有效的通知句柄。 | |
目前的作業系統環境不支援在未重新啟動的情況下安裝或移除提供者。 |
備註
WSAProviderConfigChange 函式會通知提供者的應用程式, (傳輸和命名空間) 安裝或移除在支援這類設定變更的 Windows 作業環境中,而不需要重新啟動。 第一次呼叫 (lpNotificationHandle 參數指向 NULL 句柄) 時,此函式會立即完成,並在 lpNotificationHandle 所指向的位置傳回通知句柄,以供後續呼叫用來接收提供者安裝和移除的通知。 第二個和任何後續呼叫只會在提供者資訊變更時完成,因為呼叫的時間是預期 (,但不需要) 應用程式會在第二次使用重疊 I/O,後續呼叫 WSAProviderConfigChange 時才會完成,在此情況下,呼叫會立即傳回,而且應用程式會使用透過指定重疊完成參數選擇的完成機制來通知提供者組態變更。
WSAProviderConfigChange 所傳回的通知句柄就像任何一般操作系統句柄,當不再需要) 使用 Windows CloseHandle 呼叫時,應該關閉 (。
下列動作順序可用來保證應用程式一律具有目前的通訊協定組態資訊:
- 呼叫 WSAProviderConfigChange
- 呼叫 WSAEnumProtocols 和/或 WSAEnumNameSpaceProviders
- 每當 WSAProviderConfigChange 透過封鎖或重疊的 I/O) 通知提供者設定 (變更的應用程式時,應該重複整個動作順序。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 8.1、Windows Vista [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2003 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | winsock2.h |
程式庫 | Ws2_32.lib |
Dll | Ws2_32.dll |