WSCInstallProvider64_32函式 (ws2spi.h)

[**WSCInstallProvider64_32** 已不再可供 Windows Vista 使用。 請改用 WSCInstallProviderWSCInstallProviderAndChains。]

WSCInstallProvider64_32函式會將指定的傳輸服務提供者安裝到64位電腦上的32位和64位系統組態資料庫。

語法

int WSCInstallProvider64_32(
  [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

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

傳回值

如果 WSCInstallProvider64_32 成功,則會傳回零。 否則,它會傳回 SOCKET_ERROR,並在 lpErrno 參數中傳回特定的錯誤碼。

錯誤碼 意義
WSAEFAULT
一或多個自變數不在用戶位址空間的有效部分。
WSAEINVAL
一或多個引數無效。
WSAENOBUFS
記憶體無法配置給緩衝區。
WSANO_RECOVERY
發生無法復原的錯誤。 此錯誤會在數個情況下傳回,包括下列情況:提供者已安裝、使用者缺少寫入 Winsock 登錄所需的系統管理許可權,或建立或安裝類別目錄專案時發生失敗。
WSASYSCALLFAILURE
不應該失敗的系統呼叫失敗。
WSA_NOT_ENOUGH_MEMORY
記憶體不足。 當記憶體不足而無法配置新的目錄專案時,就會傳回此錯誤。

備註

WSCInstallProvider64_32 是僅安裝單一傳輸服務提供者之 WSCInstallProviderAndChains64_32 函式的基本版本。 WSCInstallProvider64_32 可用來安裝基底通訊協定、分層通訊協定或通訊協定鏈結。 如果已安裝分層服務提供者,則應該使用 WSCInstallProviderAndChains64_32 ,因為此函式允許分層通訊協定和一或多個通訊協定鏈結與單一函數調用一起安裝。 若要使用 WSCInstallProvider64_32完成相同的工作 需要多個函式呼叫才能安裝每個服務提供者元件。

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

WSCInstallProvider64_32 是64位版本的 WSCInstallProvider ,會將提供者同時安裝在64位平臺上的32位和64位目錄。 也就是說,在64位平臺上,會維護兩個Winsock目錄,而且32位和64位進程都可以載入隨此函式一起安裝的傳輸提供者。 在 64 位平臺上, WSCInstallProvider 只會安裝至 64 位 Winsock 目錄。

在64位電腦上,所有呼叫並非特別針對32位 (所設計,例如,不會以 「32 ) 」 結尾的所有函式都會在原生 64 位目錄上運作。 在 64 位電腦上執行的處理程式必須使用 WSCInstallProvider64_32 ,在 32 位目錄和 64 位目錄上運作,並保留相容性。 特定32位呼叫的定義和語意與其原生對應專案相同。

此例程會為指定的提供者建立必要的通用 Winsock 2 組態資訊。 它適用於基底通訊協定、分層通訊協定和通訊協定鏈結。

lpProtocolInfoList 參數包含要安裝的通訊協議項目清單。 WSCInstallProvider64_32呼叫端負責設定適當的通訊協議專案。 lpProtocolInfoList 參數不得為 NULL

此例程成功完成之後,lpProtocolInfoList 中提供的通訊協定資訊將會由 WSAEnumProtocolsWSCEnumProtocols 或 WSCEnumProtocols32 傳回。 請注意,在 Windows 中,只有在成功完成此函式之後呼叫 WSAStartup 所建立的 Ws2_32.dll 實體,才會包含 WSAEnumProtocols、WSCEnumProtocolsWSCEnumProtocols32 中的新專案。

注意WSAEnumProtocols 函式不會列舉分層通訊協議專案,而 WSCEnumProtocols 和 WSCEnumProtocols32 則為 。

 

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

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

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

如果使用 WSCInstallProviderWSCInstallProviderAndChains 函式,則必須呼叫函式一次,才能在 32 位目錄中安裝提供者,一次才能在 64 位平臺上的 64 位目錄中安裝提供者。

規格需求

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

另請參閱

LoadLibrary

傳輸組態和安裝

傳輸服務提供者

WSAEnumProtocols

WSAProviderConfigChange

WSAStartup

WSCDeinstallProvider32

WSCEnumProtocols

WSCEnumProtocols32

WSCInstallProvider

WSCInstallProviderAndChains

WSCInstallProviderAndChains64_32