WSCWriteProviderOrder 函式 (sporder.h)

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

語法

int WSCWriteProviderOrder(
  [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
記憶體不足。 當記憶體不足而無法配置新的目錄專案時,就會傳回此錯誤。
(其他)
例程可能會傳回任何登錄錯誤碼。

備註

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

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

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

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

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

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

規格需求

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

另請參閱

WSAEnumProtocols

WSAPROTOCOL_INFO

WSAProviderConfigChange

WSCEnumProtocols