Win32 API 日本語リファレンス
ホーム › Networking.WinSock › LPWSCINSTALLNAMESPACE

LPWSCINSTALLNAMESPACE

コールバック

シグネチャ

INT LPWSCINSTALLNAMESPACE(
    LPWSTR lpszIdentifier,
    LPWSTR lpszPathName,
    DWORD dwNameSpace,
    DWORD dwVersion,
    GUID* lpProviderId
);

パラメーター

フィールド型説明
lpszIdentifierLPWSTRlpProviderId パラメーターで渡されるグローバル一意識別子 (GUID) に関連付けられたプロバイダーを識別する、文字列へのポインターです。
lpszPathNameLPWSTRプロバイダー DLL の読み込みパスを格納した Unicode 文字列へのポインターです。この文字列は通常のパス解決規則に従い、埋め込みの環境文字列 (%SystemRoot% など) を含めることができます。これらの環境文字列は、その後 Ws2_32.dll がアプリケーションに代わってプロバイダー DLL を読み込む必要が生じたときに展開されます。埋め込みの環境文字列が展開された後、Ws2_32.dll は得られた文字列を LoadLibrary 関数に渡し、この関数がプロバイダーをメモリに読み込みます。詳細については、LoadLibrary を参照してください。
dwNameSpaceDWORDこのプロバイダーがサポートするネームスペースです。
dwVersionDWORDプロバイダーのバージョン番号です。
lpProviderIdGUID*プロバイダーの GUID へのポインターです。この GUID は Uuidgen.exe で生成してください。

公式ドキュメント

WSCInstallNameSpace 関数は、ネームスペースプロバイダーをインストールします。複数のネームスペースをサポートできるプロバイダーの場合、サポートするネームスペースごとにこの関数を呼び出す必要があり、そのたびに一意のプロバイダー識別子を指定する必要があります。

戻り値

エラーが発生しなかった場合、 WSCInstallNameSpace 関数は NO_ERROR (ゼロ) を返します。それ以外の場合、関数が失敗すると SOCKET_ERROR を返すため、 WSAGetLastError 関数を使用して適切なエラーコードを取得する必要があります。

エラーコード 意味
WSAEACCES
呼び出し元のルーチンに、ネームスペースをインストールするための十分な特権がありません。
WSAEINVAL
引数のうち 1 つ以上が無効です。
WSANO_RECOVERY
回復不能なエラーが発生しました。このエラーは、プロバイダーが既にインストールされている、Winsock レジストリへの書き込みに必要な管理者特権がユーザーにない、カタログエントリの作成またはインストール時に失敗した、といった複数の状況で返されます。
WSASYSCALLFAILURE
失敗することのないはずのシステムコールが失敗しました。
WSA_NOT_ENOUGH_MEMORY
使用できるメモリが不足していました。このエラーは、新しいカタログエントリを割り当てるためのメモリが不足している場合に返されます。

解説(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 の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)