WSCDeinstallProvider32 函式 (ws2spi.h)

WSCDeinstallProvider32 函式會從系統組態資料庫移除指定的 32 位傳輸提供者。

注意 此呼叫可讓 64 位進程操作 32 位 Winsock 目錄,因為 64 位電腦上的 WSCDeinstallProvider 只會操作原生的 64 位 Windows 套接字目錄。

 

語法

int WSCDeinstallProvider32(
  [in]  LPGUID lpProviderId,
  [out] LPINT  lpErrno
);

參數

[in] lpProviderId

提供者的全域唯一標識符指標 (GUID) 。 此值會儲存在每個 WSAProtocol_Info 結構內。

[out] lpErrno

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

傳回值

如果沒有發生錯誤, WSCDeinstallProvider32 會傳回零。 否則,它會傳回 SOCKET_ERROR,而且 lpErrno 中提供特定的錯誤碼。

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

備註

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

WSCDeinstallProvider32 函式會移除指定之 32 位提供者的通用 Windows Sockets 2 組態資訊。 此例程成功完成之後,將會變更儲存在登錄中的組態資訊。 不過,目前記憶體中的任何 Ws2_32.dll 實例將無法辨識這項變更。

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

只有以 Administrators 群組成員身分登入的使用者,才能呼叫 WSCDeinstallProvider32 函式。 如果 WSCDeinstallProvider32 是由不是 Administrators 群組成員的使用者呼叫,則函式呼叫將會失敗,並在 lpErrno 參數中傳回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
標頭 ws2spi.h
程式庫 Ws2_32.lib
Dll Ws2_32.dll

另請參閱

WSAProviderConfigChange

WSCDeinstallProvider

WSCEnumProtocols32

WSCInstallProvider64_32