WSAAdvertiseProvider 函式 (ws2spi.h)
WSAAdvertiseProvider 函式可讓所有合格用戶端使用特定的命名空間第 2 版提供者。
語法
INT WSAAPI WSAAdvertiseProvider(
[in] const GUID *puuidProviderId,
[in] const LPCNSPV2_ROUTINE pNSPv2Routine
);
參數
[in] puuidProviderId
要公告之命名空間提供者之提供者識別碼的指標。
[in] pNSPv2Routine
具有提供者所支援命名空間服務提供者第 2 版進入點 之NSPV2_ROUTINE 結構的指標。
傳回值
如果沒有發生錯誤, WSAProviderCompleteAsyncCall 會傳回零。
如果函式失敗,傳回值會SOCKET_ERROR。 若要取得擴充的錯誤資訊,請呼叫 WSAGetLastError,這會傳回下列其中一個擴充錯誤值。
錯誤碼 | 意義 |
---|---|
記憶體不足,無法執行作業。 | |
發生內部錯誤。 | |
參數無效。 如果 puuidProviderId 或 pNSPv2Routine 參數為 **Null**,就會傳回此錯誤。
如果pNSPv2Routine參數所指向之NSPV2_ROUTINE結構的NSPv2LookupServiceNextEx、NSPv2LookupServiceNextEx或NSPv2LookupServiceEnd成員,也會傳回此錯誤。 命名空間第 2 版提供者至少必須支援這個最小函式集的名稱解析。 |
|
找不到指定 puuidProviderId 參數的命名空間提供者。 | |
尚未初始化 Ws2_32.dll 。 應用程式必須先呼叫 WSAStartup ,再呼叫任何 Windows Sockets 函式。 |
備註
WSAAdvertiseProvider函式會作為 Windows Vista 和更新版本上可用的命名空間服務提供者第 2 版 2 (NSPv2) 架構的一部分。
在 Windows Vista 和 Windows Server 2008 上, WSAAdvertiseProvider 函 式只能用於NS_EMAIL命名空間提供者上的作業。
WSAAdvertiseProvider 函式會公告 NSPv2 提供者的實例,以供用戶端尋找。 如果要公告的實例是應用程式類型提供者的實例, (命名空間提供者,其中NAPI_PROVIDER_INSTALLATION_BLOB結構的dwProvideType成員ProviderType_Application) ,則所有在相同使用者下執行的用戶端進程,以及WSAAdvertiseProvider呼叫者所在的相同會話中,都會看到公告的提供者實例。
一般而言,NSPv2 提供者是在呼叫應用程式以外的進程中實作。 NSPv2 提供者不會因為用戶端活動而啟動。 每個裝載應用程式的提供者會藉由呼叫 WSAAdvertiseProvider 和 WSAUnadvertiseProvider 函 式,決定何時提供或無法使用特定提供者。 用戶端活動只會在命名空間提供者公告) 時,嘗試連絡提供者時 (。
WSAAdvertiseProvider函式是由任何想要讓特定提供者可供所有符合資格的用戶端使用, (目前所有執行的應用程式都與主控應用程式具有相同認證,並在相同的使用者會話) 中呼叫。
程式可以同時實作和公告多個提供者。 Windows Sockets 會藉由將呼叫分派至正確的命名空間提供者來管理命名空間提供者。 它也會隱藏 RPC 介面詳細資料,並將跨進程呼叫轉譯成同進程呼叫。 因此,NSPv2 提供者只需要實作與 NSPv1 提供者所使用的 NSP_ROUTINE 結構類似的進入點函式資料表。 NSPv2 提供者不需要擔心 RPC 特定需求 (資料封送處理和序列化,例如) 。
WSAAdvertiseProvider呼叫端會使用提供者支援的 NSPv2 進入點,將指標傳遞給 pNSPv2Routine參數中的NSPV2_ROUTINE結構。
WSAUnadvertiseProvider 函式讓特定命名空間提供者無法再供用戶端使用。
規格需求
最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | ws2spi.h |
程式庫 | Ws2_32.lib |
Dll | Ws2_32.dll |