WSCWriteProviderOrder32 函式 (sporder.h)

WSCWriteProviderOrder32 函式可用來重新排序可用的 32 位傳輸提供者。 通訊協議的順序會決定列舉或選取要使用的通訊協定時,通訊協定的優先順序。

注意 此呼叫是嚴格 32 位版本的 WSCWriteProviderOrder, 可用於 64 位平臺上。 它提供來允許 64 位進程修改 32 位目錄。
 

語法

int WSCWriteProviderOrder32(
  [in] LPDWORD lpwdCatalogEntryId,
  [in] DWORD   dwNumberOfEntries
);

參數

[in] lpwdCatalogEntryId

WSAPROTOCOL_INFO 結構中找到的 CatalogEntryId 元素陣列指標。 CatalogEntryId 元素的順序是通訊協定的新優先順序順序。

[in] dwNumberOfEntries

lpwdCatalogEntryId 陣列中的元素數目。

傳回值

如果例程成功,函式會傳回 ERROR_SUCCESS (零) 。 否則,它會傳回特定的錯誤碼。

錯誤碼 意義
WSAEINVAL
一或多個自變數無效,未採取任何動作。
WSANO_RECOVERY
發生無法復原的錯誤。 此錯誤會在數個情況下傳回,包括下列情況:使用者缺少寫入 Winsock 登錄所需的系統管理許可權,或在開啟或寫入目錄專案時發生失敗。
WSA_NOT_ENOUGH_MEMORY
記憶體不足。 當記憶體不足而無法配置新的目錄專案時,就會傳回此錯誤。
(其他)
例程可能會傳回任何登錄錯誤碼。

備註

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

一開始安裝傳輸服務提供者的順序會控管在服務提供者介面上透過 WSCEnumProtocols32 列舉的順序,或透過應用程式介面上的 WSAEnumProtocols 。 更重要的是,此順序也會控管當用戶端根據其位址系列、類型和通訊協定標識元要求建立套接字時,會考慮通訊協定和服務提供者的順序。

Windows Sockets 2 包含名為 Sporder.exe 的應用程式,可讓已安裝的通訊協定目錄在安裝通訊協議之後以互動方式重新排列。 Windows Sockets 2 也包含輔助 DLL, Sporder.dll 匯出此程式介面以進行重新排序通訊協定。 您可以使用 Sporder.lib 連結來匯入此介面。

以下是 WSCWriteProviderOrder32 函式可能會失敗的案例:

  • dwNumberOfEntries 參數不等於已註冊的服務提供者數目。
  • lpwdCatalogEntryId 包含無效的目錄標識碼。
  • lpwdCatalogEntryId 不包含所有有效的目錄標識碼一次。
  • 例程因為某些原因而無法存取登錄 (,例如,用戶權力不足) 。
  • 另一個進程 (或線程) 目前正在呼叫 函式。

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

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

規格需求

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

另請參閱

WSAEnumProtocols

WSAPROTOCOL_INFO

WSAProviderConfigChange

WSCEnumProtocols32