WSAAdvertiseProvider 関数 (ws2spi.h)

WSAAdvertiseProvider 関数を使用すると、対象となるすべてのクライアントで特定の名前空間バージョン 2 プロバイダーを使用できるようになります。

構文

INT WSAAPI WSAAdvertiseProvider(
  [in] const GUID             *puuidProviderId,
  [in] const LPCNSPV2_ROUTINE pNSPv2Routine
);

パラメーター

[in] puuidProviderId

アドバタイズされる名前空間プロバイダーのプロバイダー ID へのポインター。

[in] pNSPv2Routine

プロバイダーでサポートされている名前空間サービス プロバイダー バージョン 2 エントリ ポイントを持つ NSPV2_ROUTINE 構造体へのポインター。

戻り値

エラーが発生しない場合、 WSAProviderCompleteAsyncCall は 0 を返します。

関数が失敗した場合、戻り値はSOCKET_ERROR。 拡張エラー情報を取得するには、 WSAGetLastError を呼び出します。これは、次のいずれかの拡張エラー値を返します。

エラー コード 意味
WSA_NOT_ENOUGH_MEMORY
操作を実行するためのメモリが不足していました。
WSAEFAULT
内部エラーが発生しました。
WSAEINVAL
パラメーターが無効でした。 puuidProviderId または pNSPv2Routine パラメーターが **NULL** の場合、このエラーが返されます。

このエラーは、pNSPv2Routine パラメーターが指すNSPV2_ROUTINE構造体の NSPv2LookupServiceBegin、NSPv2LookupServiceNextEx、または NSPv2LookupServiceEnd メンバーが NULL の場合にも返されます。 名前空間バージョン 2 プロバイダーは、少なくともこの最小関数セットである名前解決をサポートする必要があります。

WSAEINVALIDPROVIDER
指定した puuidProviderId パラメーターの名前空間プロバイダーが見つかりませんでした。
WSANOTINITIALIZED
Ws2_32.dll が初期化されていません。 アプリケーションは、Windows ソケット関数を呼び出す前に、まず WSAStartup を呼び出す必要があります。

解説

WSAAdvertiseProvider 関数は、Windows Vista 以降で使用できる名前空間サービス プロバイダー バージョン 2 (NSPv2) アーキテクチャの一部として使用されます。

Windows Vista および Windows Server 2008 では、 WSAAdvertiseProvider 関数は、NS_EMAIL名前空間プロバイダーでの操作にのみ使用できます。

WSAAdvertiseProvider 関数は、クライアントが検索できるように NSPv2 プロバイダーのインスタンスをアドバタイズします。 アドバタイズされるインスタンスがアプリケーション型プロバイダーのインスタンス (NAPI_PROVIDER_INSTALLATION_BLOB構造体の dwProvideType メンバーがProviderType_Applicationされている名前空間プロバイダー) の場合、アドバタイズされたプロバイダー インスタンスは、WSAAdvertiseProvider の呼び出し元と同じセッションで、同じユーザーと同じセッションで実行されているすべてのクライアント プロセスに表示されます。

一般に、NSPv2 プロバイダーは、呼び出し元のアプリケーション以外のプロセスに実装されます。 NSPv2 プロバイダーは、クライアント アクティビティの結果としてアクティブ化されません。 各プロバイダー ホスティング アプリケーションは、 WSAAdvertiseProvider 関数と WSAUnadvertiseProvider 関数を呼び出して、特定のプロバイダーを使用できるようにするタイミングと使用できないようにするタイミング 決定します。 クライアント アクティビティは、使用可能な場合 (名前空間プロバイダーがアドバタイズされている場合) にプロバイダーに接続しようとします。

WSAAdvertiseProvider 関数は、対象となるすべてのクライアント (現在、ホスティング アプリケーションと同じ資格情報を使用し、同じユーザー セッションで実行されているすべてのアプリケーション) で特定のプロバイダーを使用できるようにするアプリケーションによって呼び出されます。

プロセスでは、複数のプロバイダーを同時に実装およびアドバタイズできます。 Windows ソケットは、正しいものへの呼び出しをディスパッチすることによって名前空間プロバイダーを管理します。 また、RPC インターフェイスの詳細を非表示にし、プロセス間の呼び出しをインプロセス呼び出しに変換します。 そのため、NSPv2 プロバイダーは、NSPv1 プロバイダーによって使用される NSP_ROUTINE 構造と同様のエントリ ポイント関数のテーブルのみを実装する必要があります。 NSPv2 プロバイダーでは、RPC 固有の要件 (データ マーシャリングやシリアル化など) について心配する必要はありません。

WSAAdvertiseProvider 呼び出し元は、プロバイダーでサポートされている NSPv2 エントリ ポイントを使用して、pNSPv2Routine パラメーター内のNSPV2_ROUTINE構造体へのポインターを渡します。

WSAUnadvertiseProvider 関数を使用すると、特定の名前空間プロバイダーがクライアントで使用できなくなります。

要件

   
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー ws2spi.h
Library Ws2_32.lib
[DLL] Ws2_32.dll

関連項目

NAPI_PROVIDER_INSTALLATION_BLOB

NAPI_PROVIDER_TYPE

NSPV2_ROUTINE

WSAEnumNameSpaceProviders

WSAEnumNameSpaceProvidersEx

WSAProviderCompleteAsyncCall

WSASetService

WSAUnadvertiseProvider

WSCEnumNameSpaceProvidersEx32