LPWSCDEINSTALLPROVIDER
コールバックシグネチャ
INT LPWSCDEINSTALLPROVIDER(
GUID* lpProviderId,
INT* lpErrno
);パラメーター
| フィールド | 型 | 説明 |
|---|---|---|
| lpProviderId | GUID* | プロバイダーのグローバル一意識別子 (GUID) へのポインターです。この値は、各 WSAProtocol_Info 構造体内に格納されています。 |
| lpErrno | INT* | 関数が失敗した場合のエラーコードへのポインターです。 |
公式ドキュメント
WSCDeinstallProvider 関数は、指定されたトランスポートプロバイダーをシステム構成データベースから削除します。
戻り値
エラーが発生しなかった場合、 WSCDeinstallProvider は 0 を返します。それ以外の場合は SOCKET_ERROR を返し、具体的なエラーコードは lpErrno で取得できます。
| エラーコード | 意味 |
|---|---|
| lpProviderId パラメーターが有効なプロバイダーを指定していません。 | |
| lpErrno パラメーターがユーザーアドレス空間の有効な範囲にありません。 | |
| 回復不能なエラーが発生しました。このエラーは、次のようないくつかの条件で返されます。Windows ソケットのレジストリへの書き込みに必要な管理者権限がユーザーにない場合、またはカタログエントリを開く際に失敗した場合です。 | |
| 使用できるメモリが不足していました。このエラーは、新しいカタログエントリを割り当てるためのメモリが不足している場合に返されます。 |
解説(Remarks)
WSCDeinstallProvider 関数は、指定されたプロバイダーに関する Windows Sockets 2 の共通構成情報を削除します。このルーチンが正常に完了すると、レジストリに格納されている構成情報が変更されます。ただし、現在メモリ内にある Ws2_32.dll のインスタンスは、この変更を認識できません。
成功した場合、WSCDeinstallProvider は、WSAProviderConfigChange を呼び出して変更の通知を登録したすべての関連アプリケーションに通知しようとします。
WSCDeinstallProvider 関数は、Administrators グループのメンバーとしてログオンしているユーザーだけが呼び出せます。Administrators グループのメンバーでないユーザーが WSCDeinstallProvider を呼び出した場合、関数呼び出しは失敗し、lpErrno パラメーターに WSANO_RECOVERY が返されます。
Windows Vista または Windows Server 2008 が動作するコンピューターでは、ユーザーアカウント制御 (UAC) が原因でこの関数が失敗することもあります。この関数を含むアプリケーションを、ビルトイン Administrator 以外の Administrators グループのメンバーとしてログオンしたユーザーが実行した場合、マニフェストファイルで requestedExecutionLevel が requireAdministrator に設定されていない限り、この呼び出しは失敗します。Windows Vista または Windows Server 2008 上のアプリケーションにこのマニフェストファイルがない場合、ビルトイン Administrator 以外の Administrators グループのメンバーとしてログオンしたユーザーは、この関数を成功させるために、ビルトイン Administrator として昇格したシェル (管理者として実行) でアプリケーションを実行する必要があります。
この関数の呼び出し元は、サービスプロバイダーを完全にアンインストールするために必要な追加のファイルやサービスプロバイダー固有の構成情報を削除する必要があります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)