WSCUpdateProvider 函式 (ws2spi.h)

WSCUpdateProvider 函式會修改系統組態資料庫中的指定傳輸提供者。

語法

int WSCUpdateProvider(
  [in]  LPGUID                    lpProviderId,
  [in]  const WCHAR               *lpszProviderDllPath,
  [in]  const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
  [in]  DWORD                     dwNumberOfEntries,
  [out] LPINT                     lpErrno
);

參數

[in] lpProviderId

提供者的全域唯一識別碼指標 (GUID) 。

[in] lpszProviderDllPath

Unicode 字串的指標,其中包含提供者 64 位 DLL 的載入路徑。 此字串會觀察路徑解析的一般規則,而且可以包含內嵌的環境字串 (,例如 %SystemRoot%) 。 當 Ws2_32.dll 之後必須代表應用程式載入提供者 DLL 時,就會展開這類環境字串。 展開任何內嵌的環境字串之後,Ws2_32.dll 會將產生的字串傳遞至 LoadLibrary 函式,以將提供者載入記憶體中。 如需詳細資訊,請參閱 LoadLibrary

[in] lpProtocolInfoList

WSAProtocol_Info結構的陣列指標。 每個結構都會指定或修改提供者支援的通訊協定、位址系列和通訊端類型。

[in] dwNumberOfEntries

lpProtocolInfoList陣列中的專案數。

[out] lpErrno

如果函式失敗,則為錯誤碼的指標。

傳回值

如果沒有發生錯誤, WSCUpdateProvider 會傳回零。 否則,它會 傳回SOCKET_ERROR,並在 lpErrno 參數中傳回特定的錯誤碼。

錯誤碼 意義
WSAEFAULT
一或多個引數不在使用者位址空間的有效部分中。
WSAEINVAL
一或多個引數無效。
WSANO_RECOVERY
發生無法復原的錯誤。 此錯誤會在數個情況下傳回,包括下列情況:使用者缺少寫入 Winsock 登錄所需的系統管理許可權,或開啟或寫入目錄專案時發生失敗。
WSA_NOT_ENOUGH_MEMORY
記憶體不足。 當記憶體不足而無法配置新的目錄專案時,就會傳回此錯誤。

備註

WSCUpdateProvider 函式會修改指定提供者的 Windows Sockets 2 組態資訊。 它適用于基底通訊協定、分層通訊協定和通訊協定鏈結。

Winsock 2 可容納分層通訊協定。 分層通訊協定是只實作較高層級通訊功能的通訊功能,同時依賴基礎傳輸堆疊來與遠端端點實際交換資料。 分層通訊協定的範例是一個安全性層,可將通訊協定新增至連線建立程式,以執行驗證,並建立相互同意的加密配置。 這類安全性通訊協定通常需要基礎可靠傳輸通訊協定的服務,例如 TCP 或 SPX。 基底通訊協定一詞是指通訊協定,例如 TCP 或 SPX,其能夠與遠端端點執行資料通訊。 分層通訊協定一詞是用來描述無法獨立通訊協定的通訊協定。 接著,通訊協定鏈結會定義為一或多個分層通訊協定,並依基底通訊協定錨定。 基底通訊協定的 ChainLen 成員 WSAProtocol_Info結構設定 為 1 BASE_PROTOCOL 。 分層通訊協定的 ChainLen 成員 WSAPROTOCOL_INFO 結構設定為 LAYERED_PROTOCOL 定義為零。 通訊協定鏈結將WSAPROTOCOL_INFO結構的ChainLen成員設定為大於 1。

成功時, WSCUpdateProvider 會呼叫 WSAProviderConfigChange,嘗試警示已註冊變更通知的所有相關應用程式。

WSCUpdateProvider函式只能由以 Administrators 群組成員身分登入的使用者呼叫。 如果 WSCUpdateProvider 是由不是 Administrators 群組成員的使用者呼叫,則函式呼叫將會失敗。

對於在 Windows Vista 或 Windows Server 2008 上執行的電腦,此函式也會因為使用者帳戶控制 (UAC) 而失敗。 如果包含此函式的應用程式是由以內建系統管理員以外的 Administrators 群組成員身分登入的使用者所執行,除非應用程式已在資訊清單檔案中標示 為 requestedExecutionLevel 設定為 requireAdministrator,否則此呼叫將會失敗。 如果 Windows Vista 或 Windows Server 2008 上的應用程式缺少此資訊清單檔案,則以系統管理員群組成員身分登入的使用者,而不是內建系統管理員,則必須在增強殼層中執行應用程式,因為內建的 Administrator (RunAs 系統管理員) ,此函式才能成功。

呼叫端必須執行任何檔案安裝或服務提供者特定的組態。

規格需求

   
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限桌面應用程式]
目標平台 Windows
標頭 ws2spi.h
程式庫 Ws2_32.lib
Dll Ws2_32.dll

另請參閱

WSAProtocol_Info

WSAProviderConfigChange

WSAStartup

WSCDeinstallProvider

WSCEnumProtocols

WSCInstallProvider