LPWSCINSTALLNAMESPACE
コールバックシグネチャ
INT LPWSCINSTALLNAMESPACE(
LPWSTR lpszIdentifier,
LPWSTR lpszPathName,
DWORD dwNameSpace,
DWORD dwVersion,
GUID* lpProviderId
);パラメーター
| フィールド | 型 | 説明 |
|---|---|---|
| lpszIdentifier | LPWSTR | lpProviderId パラメーターで渡されるグローバル一意識別子 (GUID) に関連付けられたプロバイダーを識別する、文字列へのポインターです。 |
| lpszPathName | LPWSTR | プロバイダー DLL の読み込みパスを格納した Unicode 文字列へのポインターです。この文字列は通常のパス解決規則に従い、埋め込みの環境文字列 (%SystemRoot% など) を含めることができます。これらの環境文字列は、その後 Ws2_32.dll がアプリケーションに代わってプロバイダー DLL を読み込む必要が生じたときに展開されます。埋め込みの環境文字列が展開された後、Ws2_32.dll は得られた文字列を LoadLibrary 関数に渡し、この関数がプロバイダーをメモリに読み込みます。詳細については、LoadLibrary を参照してください。 |
| dwNameSpace | DWORD | このプロバイダーがサポートするネームスペースです。 |
| dwVersion | DWORD | プロバイダーのバージョン番号です。 |
| lpProviderId | GUID* | プロバイダーの GUID へのポインターです。この GUID は Uuidgen.exe で生成してください。 |
公式ドキュメント
WSCInstallNameSpace 関数は、ネームスペースプロバイダーをインストールします。複数のネームスペースをサポートできるプロバイダーの場合、サポートするネームスペースごとにこの関数を呼び出す必要があり、そのたびに一意のプロバイダー識別子を指定する必要があります。
戻り値
エラーが発生しなかった場合、 WSCInstallNameSpace 関数は NO_ERROR (ゼロ) を返します。それ以外の場合、関数が失敗すると SOCKET_ERROR を返すため、 WSAGetLastError 関数を使用して適切なエラーコードを取得する必要があります。
| エラーコード | 意味 |
|---|---|
| 呼び出し元のルーチンに、ネームスペースをインストールするための十分な特権がありません。 | |
| 引数のうち 1 つ以上が無効です。 | |
| 回復不能なエラーが発生しました。このエラーは、プロバイダーが既にインストールされている、Winsock レジストリへの書き込みに必要な管理者特権がユーザーにない、カタログエントリの作成またはインストール時に失敗した、といった複数の状況で返されます。 | |
| 失敗することのないはずのシステムコールが失敗しました。 | |
| 使用できるメモリが不足していました。このエラーは、新しいカタログエントリを割り当てるためのメモリが不足している場合に返されます。 |
解説(Remarks)
ネームスペース構成関数は、既に実行中のアプリケーションには影響しません。新しくインストールされたネームスペースプロバイダーはアプリケーションからは見えず、ネームスペースプロバイダーの有効化状態の変更も反映されません。 WSCInstallNameSpace の呼び出し後に起動されたアプリケーションには、これらの変更が反映されます。
WSCInstallNameSpace 関数は、Administrators グループのメンバーとしてログオンしているユーザーだけが呼び出せます。Administrators グループのメンバーではないユーザーが WSCInstallNameSpace を呼び出した場合、その関数呼び出しは失敗します。 Windows Vista または Windows Server 2008 で動作するコンピューターでは、ユーザーアカウント制御 (UAC) が原因でこの関数が失敗することもあります。この関数を含むアプリケーションが、組み込みの Administrator 以外の Administrators グループのメンバーとしてログオンしているユーザーによって実行された場合、マニフェストファイルで requestedExecutionLevel が requireAdministrator に設定されていない限り、この呼び出しは失敗します。Windows Vista または Windows Server 2008 上のアプリケーションにこのマニフェストファイルがない場合、組み込みの Administrator 以外の Administrators グループのメンバーとしてログオンしているユーザーは、この関数を成功させるために、組み込みの Administrator として昇格したシェル (管理者として実行) でアプリケーションを実行する必要があります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)