Win32 API 日本語リファレンス
ホームDevices.WebServicesOnDevices › IWSDiscoveryPublisher

IWSDiscoveryPublisher

COM
IIDae01e1a8-3ff9-4148-8116-057cc616fe13継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

ホストのアナウンスと、ホストへの受信クエリの管理を行うためのメソッドを提供します。

解説(Remarks)

このインターフェイスは、WS-Discovery における「サーバー」側 (ホスト側) を表します。

メソッド 13

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT SetAddressFamily(DWORD dwAddressFamily)

ホストを公開する際に使用する IP アドレスファミリ (IPv4、IPv6、またはその両方) を指定します。

dwAddressFamilyDWORDin

ホストを公開する際に使用するアドレスファミリです。

意味
WSDAPI_ADDRESSFAMILY_IPV4
IPv4 アドレスでホストを公開します。
WSDAPI_ADDRESSFAMILY_IPV6
IPv6 アドレスでホストを公開します。
WSDAPI_ADDRESSFAMILY_IPV4 | WSDAPI_ADDRESSFAMILY_IPV6
IPv4 アドレスと IPv6 アドレスの両方でホストを公開します。

戻り値

戻り値には、次のものが含まれます (ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは正常に完了しました。
E_INVALIDARG
dwAddressFamily に、WSDAPI_ADDRESSFAMILY_IPV4WSDAPI_ADDRESSFAMILY_IPV6WSDAPI_ADDRESSFAMILY_IPV4 | WSDAPI_ADDRESSFAMILY_IPV6 以外の値が指定されています。
STG_E_INVALIDFUNCTION
このパブリッシャーには、既にアドレスファミリが設定されています。
HRESULT_FROM_WIN32(WSAESOCKTNOSUPPORT)
dwAddressFamily で指定されたアドレスファミリを、システムがサポートしていません。

解説(Remarks)

このメソッドは、パブリッシャーに通知シンクをアタッチする前に呼び出す必要があります。

vtbl 4 HRESULT RegisterNotificationSink(IWSDiscoveryPublisherNotify* pSink)

コールバック通知シンクを探索 (ディスカバリー) パブリッシャーにアタッチします。

pSinkIWSDiscoveryPublisherNotify*inコールバック通知を受け取るために初期化されたインターフェイスを表す IWSDiscoveryPublisherNotify オブジェクトへのポインターです。このパラメーターに NULL を指定することはできません。

戻り値

戻り値には、次のものが含まれます (ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは正常に完了しました。
E_INVALIDARG
pSinkNULL です。
E_OUTOFMEMORY
操作を完了するためのメモリが不足しています。

解説(Remarks)

通知シンクは、受信クエリを受け取るたびにコールバックを受け取ります。1 つのパブリッシャーに複数の通知シンクを登録することもできます。

メモ 他の IWSDiscoveryPublisher のメソッドを使用する前に、RegisterNotificationSink を少なくとも 1 回呼び出す必要があります。
vtbl 5 HRESULT UnRegisterNotificationSink(IWSDiscoveryPublisherNotify* pSink)

コールバック通知シンクを探索 (ディスカバリー) パブリッシャーからデタッチします。

pSinkIWSDiscoveryPublisherNotify*inコールバック通知の受け取りを停止する IWSDiscoveryPublisherNotify インターフェイスへのポインターです。

戻り値

戻り値には、次のものが含まれます (ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは正常に完了しました。
E_INVALIDARG
pSinkNULL です。
E_FAIL
メソッドが失敗しました。

解説(Remarks)

メモ 探索パブリッシャーに以前アタッチした通知シンクごとに、UnRegisterNotificationSink を少なくとも 1 回呼び出す必要があります。
vtbl 6 HRESULT Publish(LPWSTR pszId, ULONGLONG ullMetadataVersion, ULONGLONG ullInstanceId, ULONGLONG ullMessageNumber, LPWSTR pszSessionId, WSD_NAME_LIST* pTypesList, WSD_URI_LIST* pScopesList, WSD_URI_LIST* pXAddrsList)

Hello メッセージを送信して、ネットワークホストの存在をアナウンスします。

pszIdLPWSTRinデバイスの論理アドレスまたは物理アドレスです。これはデバイスのエンドポイントアドレスとして使用されます。論理アドレスは urn:uuid:{guid} の形式です。物理アドレスには、http または https を前置した URI、あるいは単に uri を前置した URI を指定できます。可能な限り論理アドレスを使用してください。
ullMetadataVersionULONGLONGin

現在のメタデータのバージョンです。

メモ WS-Discovery 仕様との互換性のため、この値は UINT_MAX (4294967295) 以下である必要があります。
ullInstanceIdULONGLONGin

公開されるデバイスの現在のインスタンスを示す識別子です。この識別子は、サービスが再起動されるたびにインクリメントする必要があります。インスタンス識別子の詳細については、WS-Discovery 仕様の付録 I を参照してください。

メモ WS-Discovery 仕様との互換性のため、この値は UINT_MAX (4294967295) 以下である必要があります。
ullMessageNumberULONGLONGin

現在のメッセージについて、インスタンス識別子のスコープ内で使用されるカウンターです。メッセージ番号は、メッセージごとにインクリメントする必要があります。

メモ WS-Discovery 仕様との互換性のため、この値は UINT_MAX (4294967295) 以下である必要があります。
pszSessionIdLPWSTRinoptional

現在のセッションについて、インスタンス識別子のスコープ内で一意となる識別子です。このパラメーターは、Probe メッセージの AppSequence ブロック内のシーケンス識別子に対応します。シーケンス識別子の詳細については、WS-Discovery 仕様の付録 I を参照してください。

このパラメーターには NULL を指定できます。

pTypesListWSD_NAME_LIST*inoptional公開ホストがサポートする型の一覧を表す WSD_NAME_LIST 構造体へのポインターです。NULL を指定できます。
pScopesListWSD_URI_LIST*inoptional公開ホストがサポートする、一致対象のスコープの一覧を表す WSD_URI_LIST 構造体へのポインターです。この一覧には、文字列形式のハッシュ値が格納されます。NULL を指定できます。
pXAddrsListWSD_URI_LIST*inoptional公開ホストがサポートするトランスポートアドレスの一覧を表す WSD_URI_LIST 構造体へのポインターです。各トランスポートアドレスの文字列には、リモートホストが接続に使用できるアドレスとポート番号が含まれます。NULL を指定できます。

戻り値

戻り値には、次のものが含まれます (ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは正常に完了しました。
E_INVALIDARG
次の条件のいずれか 1 つ以上に該当します。
  • pszIdNULL です。
  • pszId の文字数が WSD_MAX_TEXT_LENGTH (8192) を超えています。
  • pszSessionId の文字数が WSD_MAX_TEXT_LENGTH (8192) を超えています。
HRESULT_FROM_WIN32(ERROR_NO_CALLBACK_ACTIVE)
登録された通知シンクがありません。シンクをアタッチするには、RegisterNotificationSink を呼び出してください。
E_ABORT
パブリッシャーが開始されていません。通知シンクをアタッチするとパブリッシャーが開始されます。シンクをアタッチするには、RegisterNotificationSink を呼び出してください。
E_OUTOFMEMORY
操作を完了するためのメモリが不足しています。

解説(Remarks)

成功した場合、Publish は指定された情報を含む WS-Discovery の Hello メッセージをローカルサブネットに送信します。

vtbl 7 HRESULT UnPublish(LPWSTR pszId, ULONGLONG ullInstanceId, ULONGLONG ullMessageNumber, LPWSTR pszSessionId, WSDXML_ELEMENT* pAny)

Bye メッセージを送信して、ネットワークホストの離脱をアナウンスします。

pszIdLPWSTRinデバイスの論理アドレスまたは物理アドレスです。これはデバイスのエンドポイントアドレスとして使用されます。論理アドレスは urn:uuid:{guid} の形式です。物理アドレスには、http または https を前置した URI、あるいは単に uri を前置した URI を指定できます。可能な限り論理アドレスを使用してください。
ullInstanceIdULONGLONGin

公開されるデバイスの現在のインスタンスを示す識別子です。この識別子は、サービスが再起動されるたびにインクリメントする必要があります。インスタンス識別子の詳細については、WS-Discovery 仕様の付録 I を参照してください。

メモ WS-Discovery 仕様との互換性のため、この値は UINT_MAX (4294967295) 以下である必要があります。
ullMessageNumberULONGLONGin

現在のメッセージについて、インスタンス識別子のスコープ内で使用されるカウンターです。メッセージ番号は、メッセージごとにインクリメントする必要があります。

メモ WS-Discovery 仕様との互換性のため、この値は UINT_MAX (4294967295) 以下である必要があります。
pszSessionIdLPWSTRinoptional

現在のセッションについて、インスタンス識別子のスコープ内で一意となる識別子です。このパラメーターは、Probe メッセージの AppSequence ブロック内のシーケンス識別子に対応します。シーケンス識別子の詳細については、WS-Discovery 仕様の付録 I を参照してください。

このパラメーターには NULL を指定できます。

pAnyWSDXML_ELEMENT*inoptionalメッセージ本文の "ANY" セクションに挿入する XML 要素を格納する WSDXML_ELEMENT 構造体へのポインターです。

戻り値

戻り値には、次のものが含まれます (ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは正常に完了しました。
E_INVALIDARG
次の条件のいずれか 1 つ以上に該当します。
  • pszIdNULL です。
  • pszId の長さが WSD_MAX_TEXT_LENGTH (8192) を超えています。
  • pszSessionId の長さが WSD_MAX_TEXT_LENGTH (8192) を超えています。
E_ABORT
パブリッシャーが開始されていません。通知シンクをアタッチするとパブリッシャーが開始されます。シンクをアタッチするには、RegisterNotificationSink を呼び出してください。
E_OUTOFMEMORY
操作を完了するためのメモリが不足しています。

解説(Remarks)

成功した場合、UnPublish は指定された情報を含む WS-Discovery の Bye メッセージをローカルサブネットに送信します。

vtbl 8 HRESULT MatchProbe(WSD_SOAP_MESSAGE* pProbeMessage, IWSDMessageParameters* pMessageParameters, LPWSTR pszId, ULONGLONG ullMetadataVersion, ULONGLONG ullInstanceId, ULONGLONG ullMessageNumber, LPWSTR pszSessionId, WSD_NAME_LIST* pTypesList, WSD_URI_LIST* pScopesList, WSD_URI_LIST* pXAddrsList)

Probe メッセージが指定されたホストに一致するかどうかを判定し、一致する場合は WS-Discovery の ProbeMatches メッセージを送信します。

pProbeMessageWSD_SOAP_MESSAGE*in通知シンクの ProbeHandler に渡された Probe メッセージを表す WSD_SOAP_MESSAGE 構造体へのポインターです。
pMessageParametersIWSDMessageParameters*in通知シンクの ProbeHandler に渡された送信パラメーターを表す IWSDMessageParameters オブジェクトへのポインターです。
pszIdLPWSTRinデバイスの論理アドレスまたは物理アドレスです。これはデバイスのエンドポイントアドレスとして使用されます。論理アドレスは urn:uuid:{guid} の形式です。物理アドレスには、http または https を前置した URI、あるいは単に uri を前置した URI を指定できます。可能な限り論理アドレスを使用してください。
ullMetadataVersionULONGLONGin

現在のメタデータのバージョンです。

メモ WS-Discovery 仕様との互換性のため、この値は UINT_MAX (4294967295) 以下である必要があります。
ullInstanceIdULONGLONGin

公開されるデバイスの現在のインスタンスを示す識別子です。この識別子は、サービスが再起動されるたびにインクリメントする必要があります。インスタンス識別子の詳細については、WS-Discovery 仕様の付録 I を参照してください。

メモ WS-Discovery 仕様との互換性のため、この値は UINT_MAX (4294967295) 以下である必要があります。
ullMessageNumberULONGLONGin

現在のメッセージについて、インスタンス識別子のスコープ内で使用されるカウンターです。メッセージ番号は、メッセージごとにインクリメントする必要があります。

メモ WS-Discovery 仕様との互換性のため、この値は UINT_MAX (4294967295) 以下である必要があります。
pszSessionIdLPWSTRinoptional

現在のセッションについて、インスタンス識別子のスコープ内で一意となる識別子です。このパラメーターは、Probe メッセージの AppSequence ブロック内のシーケンス識別子に対応します。シーケンス識別子の詳細については、WS-Discovery 仕様の付録 I を参照してください。

このパラメーターには NULL を指定できます。

pTypesListWSD_NAME_LIST*inoptional

公開ホストがサポートする型の一覧を表す WSD_NAME_LIST 構造体へのポインターです。NULL を指定できます。

pTypesList が指定されている場合、MatchProbe は WS-Discovery の照合ロジックを使用して、一覧内の型が pProbeMessage で指定された型と一致するかどうかを確認します。

pScopesListWSD_URI_LIST*inoptional

公開ホストがサポートする、一致対象のスコープの一覧を表す WSD_URI_LIST 構造体へのポインターです。この一覧には、文字列形式のハッシュ値が格納されます。NULL を指定できます。

pScopesList が指定されている場合、MatchProbe は WS-Discovery の照合ロジックを使用して、一覧内のスコープが pProbeMessage で指定されたスコープと一致するかどうかを確認します。

pXAddrsListWSD_URI_LIST*inoptional公開ホストがサポートするトランスポートアドレスの一覧を表す WSD_URI_LIST 構造体へのポインターです。各トランスポートアドレスの文字列には、リモートホストが接続に使用できるアドレスとポート番号が含まれます。NULL を指定できます。

戻り値

戻り値には、次のものが含まれます (ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは正常に完了しました。
E_INVALIDARG
次の条件のいずれか 1 つ以上に該当します。
  • pszIdNULL です。
  • pszId の文字数が WSD_MAX_TEXT_LENGTH (8192) を超えています。
  • pszSessionId の文字数が WSD_MAX_TEXT_LENGTH (8192) を超えています。
  • pProbeMessageNULL です。
E_ABORT
パブリッシャーが開始されていません。通知シンクをアタッチするとパブリッシャーが開始されます。シンクをアタッチするには、RegisterNotificationSink を呼び出してください。
E_OUTOFMEMORY
操作を完了するためのメモリが不足しています。

解説(Remarks)

MatchProbe は、探索パブリッシャーが ProbeHandler コールバックを発行した場合にのみ呼び出してください。pProbeMessagepMessageParameters は、コールバックから MatchProbe にそのまま渡されます。ProbeHandler は、指定された Probe メッセージが一致するかどうかをパブリッシャーが判定し、一致する場合に必要に応じて ProbeMatches 応答を発行するために必要な情報も渡します。

MatchProbe は、バインドされているすべてのアダプターで ProbeMatches メッセージを送信し、WS-Discovery で必要とされる場合はメッセージの再送信を自動的に行います。

vtbl 9 HRESULT MatchResolve(WSD_SOAP_MESSAGE* pResolveMessage, IWSDMessageParameters* pMessageParameters, LPWSTR pszId, ULONGLONG ullMetadataVersion, ULONGLONG ullInstanceId, ULONGLONG ullMessageNumber, LPWSTR pszSessionId, WSD_NAME_LIST* pTypesList, WSD_URI_LIST* pScopesList, WSD_URI_LIST* pXAddrsList)

Resolve メッセージが指定されたホストに一致するかどうかを判定し、一致する場合は WS-Discovery の ResolveMatches メッセージを送信します。

pResolveMessageWSD_SOAP_MESSAGE*in通知シンクの ResolveHandler に渡された Resolve メッセージを表す WSD_SOAP_MESSAGE 構造体へのポインターです。
pMessageParametersIWSDMessageParameters*in通知シンクの ResolveHandler に渡された送信パラメーターを表す IWSDMessageParameters オブジェクトへのポインターです。
pszIdLPWSTRinデバイスの論理アドレスまたは物理アドレスです。これはデバイスのエンドポイントアドレスとして使用されます。論理アドレスは urn:uuid:{guid} の形式です。物理アドレスには、http または https を前置した URI、あるいは単に uri を前置した URI を指定できます。可能な限り論理アドレスを使用してください。
ullMetadataVersionULONGLONGin

現在のメタデータのバージョンです。

メモ WS-Discovery 仕様との互換性のため、この値は UINT_MAX (4294967295) 以下である必要があります。
ullInstanceIdULONGLONGin

公開されるデバイスの現在のインスタンスを示す識別子です。この識別子は、サービスが再起動されるたびにインクリメントする必要があります。インスタンス識別子の詳細については、WS-Discovery 仕様の付録 I を参照してください。

メモ WS-Discovery 仕様との互換性のため、この値は UINT_MAX (4294967295) 以下である必要があります。
ullMessageNumberULONGLONGin

現在のメッセージについて、インスタンス識別子のスコープ内で使用されるカウンターです。メッセージ番号は、メッセージごとにインクリメントする必要があります。

メモ WS-Discovery 仕様との互換性のため、この値は UINT_MAX (4294967295) 以下である必要があります。
pszSessionIdLPWSTRinoptional

現在のセッションについて、インスタンス識別子のスコープ内で一意となる識別子です。このパラメーターは、Probe メッセージの AppSequence ブロック内のシーケンス識別子に対応します。シーケンス識別子の詳細については、WS-Discovery 仕様の付録 I を参照してください。

このパラメーターには NULL を指定できます。

pTypesListWSD_NAME_LIST*inoptional公開ホストがサポートする型の一覧を表す WSD_NAME_LIST 構造体へのポインターです。NULL を指定できます。 pTypesList が指定されている場合、MatchResolve は WS-Discovery の照合ロジックを使用して、型が pResolveMessage で指定されたものと一致するかどうかを確認します。
pScopesListWSD_URI_LIST*inoptional公開ホストがサポートする、一致対象のスコープの一覧を表す WSD_URI_LIST 構造体へのポインターです。この一覧には、文字列形式のハッシュ値が格納されます。NULL を指定できます。 pScopesList が指定されている場合、MatchResolve は WS-Discovery の照合ロジックを使用して、スコープが pResolveMessage で指定されたものと一致するかどうかを確認します。
pXAddrsListWSD_URI_LIST*inoptional公開ホストがサポートするトランスポートアドレスの一覧を表す WSD_URI_LIST 構造体へのポインターです。各トランスポートアドレスの文字列には、リモートホストが接続に使用できるアドレスとポート番号が含まれます。pXAddrsList および pXAddrsList->ElementNULL を指定することはできません。

戻り値

戻り値には、次のものが含まれます (ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは正常に完了しました。
E_INVALIDARG
次の条件のいずれか 1 つ以上に該当します。
  • pszIdNULL です。
  • pszId の文字数が WSD_MAX_TEXT_LENGTH (8192) を超えています。
  • pszSessionId の文字数が WSD_MAX_TEXT_LENGTH (8192) を超えています。
  • pProbeMessageNULL です。
E_ABORT
パブリッシャーが開始されていません。通知シンクをアタッチするとパブリッシャーが開始されます。シンクをアタッチするには、RegisterNotificationSink を呼び出してください。
E_OUTOFMEMORY
操作を完了するためのメモリが不足しています。

解説(Remarks)

MatchResolve は、探索パブリッシャーが ResolveHandler コールバックを発行した場合にのみ呼び出してください。pResolveMessagepMessageParameters は、コールバックから MatchResolve にそのまま渡されます。ResolveHandler は、指定された Resolve メッセージが一致するかどうかをパブリッシャーが判定し、一致する場合に必要に応じて ResolveMatches 応答を発行するために必要な情報も渡します。

MatchResolve は、バインドされているすべてのアダプターで ResolveMatches メッセージを送信し、WS-Discovery で必要とされる場合はメッセージの再送信を自動的に行います。

vtbl 10 HRESULT PublishEx(LPWSTR pszId, ULONGLONG ullMetadataVersion, ULONGLONG ullInstanceId, ULONGLONG ullMessageNumber, LPWSTR pszSessionId, WSD_NAME_LIST* pTypesList, WSD_URI_LIST* pScopesList, WSD_URI_LIST* pXAddrsList, WSDXML_ELEMENT* pHeaderAny, WSDXML_ELEMENT* pReferenceParameterAny, WSDXML_ELEMENT* pPolicyAny, WSDXML_ELEMENT* pEndpointReferenceAny, WSDXML_ELEMENT* pAny)

拡張情報を含む Hello メッセージを送信して、ネットワークホストの存在をアナウンスします。

pszIdLPWSTRinデバイスの論理アドレスまたは物理アドレスです。これはデバイスのエンドポイントアドレスとして使用されます。論理アドレスは urn:uuid:{guid} の形式です。物理アドレスには、http または https を前置した URI、あるいは単に uri を前置した URI を指定できます。可能な限り論理アドレスを使用してください。
ullMetadataVersionULONGLONGin

現在のメタデータのバージョンです。

メモ WS-Discovery 仕様との互換性のため、この値は UINT_MAX (4294967295) 以下である必要があります。
ullInstanceIdULONGLONGin

公開されるデバイスの現在のインスタンスを示す識別子です。この識別子は、サービスが再起動されるたびにインクリメントする必要があります。インスタンス識別子の詳細については、WS-Discovery 仕様の付録 I を参照してください。

メモ WS-Discovery 仕様との互換性のため、この値は UINT_MAX (4294967295) 以下である必要があります。
ullMessageNumberULONGLONGin

現在のメッセージについて、インスタンス識別子のスコープ内で使用されるカウンターです。メッセージ番号は、メッセージごとにインクリメントする必要があります。

メモ WS-Discovery 仕様との互換性のため、この値は UINT_MAX (4294967295) 以下である必要があります。
pszSessionIdLPWSTRinoptional

現在のセッションについて、インスタンス識別子のスコープ内で一意となる識別子です。このパラメーターは、Probe メッセージの AppSequence ブロック内のシーケンス識別子に対応します。シーケンス識別子の詳細については、WS-Discovery 仕様の付録 I を参照してください。

このパラメーターには NULL を指定できます。

pTypesListWSD_NAME_LIST*inoptional公開ホストがサポートする型の一覧を表す WSD_NAME_LIST 構造体へのポインターです。NULL を指定できます。
pScopesListWSD_URI_LIST*inoptional公開ホストがサポートする、一致対象のスコープの一覧を表す WSD_URI_LIST 構造体へのポインターです。この一覧には、文字列形式のハッシュ値が格納されます。NULL を指定できます。
pXAddrsListWSD_URI_LIST*inoptional公開ホストがサポートするトランスポートアドレスの一覧を表す WSD_URI_LIST 構造体へのポインターです。各トランスポートアドレスの文字列には、リモートホストが接続に使用できるアドレスとポート番号が含まれます。NULL を指定できます。
pHeaderAnyWSDXML_ELEMENT*inoptionalヘッダーの "ANY" セクションに挿入する XML 要素を格納する WSDXML_ELEMENT 構造体へのポインターです。
pReferenceParameterAnyWSDXML_ELEMENT*inoptional参照パラメータープロパティの "ANY" セクションに挿入する XML 要素を格納する WSDXML_ELEMENT 構造体へのポインターです。
pPolicyAnyWSDXML_ELEMENT*inoptional使用されません。
pEndpointReferenceAnyWSDXML_ELEMENT*inoptionalエンドポイントの "ANY" セクションに挿入する XML 要素を格納する WSDXML_ELEMENT 構造体へのポインターです。
pAnyWSDXML_ELEMENT*inoptionalメッセージ本文の "ANY" セクションに挿入する XML 要素を格納する WSDXML_ELEMENT 構造体へのポインターです。

戻り値

戻り値には、次のものが含まれます (ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは正常に完了しました。
E_INVALIDARG
次の条件のいずれか 1 つ以上に該当します。
  • pszIdNULL です。
  • pszId の文字数が WSD_MAX_TEXT_LENGTH (8192) を超えています。
  • pszSessionId の文字数が WSD_MAX_TEXT_LENGTH (8192) を超えています。
HRESULT_FROM_WIN32(ERROR_NO_CALLBACK_ACTIVE)
登録された通知シンクがありません。シンクをアタッチするには、RegisterNotificationSink を呼び出してください。
E_ABORT
パブリッシャーが開始されていません。通知シンクをアタッチするとパブリッシャーが開始されます。シンクをアタッチするには、RegisterNotificationSink を呼び出してください。
E_OUTOFMEMORY
操作を完了するためのメモリが不足しています。

解説(Remarks)

成功した場合、PublishEx は指定された情報を含む WS-Discovery の Hello メッセージをローカルサブネットに送信します。

WSDXML_ELEMENT 構造体を指すパラメーターを使用すると、送信される Hello メッセージの内容を独自の情報で拡張できます。

vtbl 11 HRESULT MatchProbeEx(WSD_SOAP_MESSAGE* pProbeMessage, IWSDMessageParameters* pMessageParameters, LPWSTR pszId, ULONGLONG ullMetadataVersion, ULONGLONG ullInstanceId, ULONGLONG ullMessageNumber, LPWSTR pszSessionId, WSD_NAME_LIST* pTypesList, WSD_URI_LIST* pScopesList, WSD_URI_LIST* pXAddrsList, WSDXML_ELEMENT* pHeaderAny, WSDXML_ELEMENT* pReferenceParameterAny, WSDXML_ELEMENT* pPolicyAny, WSDXML_ELEMENT* pEndpointReferenceAny, WSDXML_ELEMENT* pAny)

Probe メッセージが指定されたホストに一致するかどうかを判定し、一致する場合は拡張情報を含む WS-Discovery の ProbeMatches メッセージを送信します。

pProbeMessageWSD_SOAP_MESSAGE*in通知シンクの ProbeHandler に渡された Probe メッセージを表す WSD_SOAP_MESSAGE 構造体へのポインターです。
pMessageParametersIWSDMessageParameters*in通知シンクの ProbeHandler に渡された送信パラメーターを表す IWSDMessageParameters オブジェクトへのポインターです。
pszIdLPWSTRinデバイスの論理アドレスまたは物理アドレスです。これはデバイスのエンドポイントアドレスとして使用されます。論理アドレスは urn:uuid:{guid} の形式です。物理アドレスには、http または https を前置した URI、あるいは単に uri を前置した URI を指定できます。可能な限り論理アドレスを使用してください。
ullMetadataVersionULONGLONGin

現在のメタデータのバージョンです。

メモ WS-Discovery 仕様との互換性のため、この値は UINT_MAX (4294967295) 以下である必要があります。
ullInstanceIdULONGLONGin

公開されるデバイスの現在のインスタンスを示す識別子です。この識別子は、サービスが再起動されるたびにインクリメントする必要があります。インスタンス識別子の詳細については、WS-Discovery 仕様の付録 I を参照してください。

メモ WS-Discovery 仕様との互換性のため、この値は UINT_MAX (4294967295) 以下である必要があります。
ullMessageNumberULONGLONGin

現在のメッセージについて、インスタンス識別子のスコープ内で使用されるカウンターです。メッセージ番号は、メッセージごとにインクリメントする必要があります。

メモ WS-Discovery 仕様との互換性のため、この値は UINT_MAX (4294967295) 以下である必要があります。
pszSessionIdLPWSTRinoptional

現在のセッションについて、インスタンス識別子のスコープ内で一意となる識別子です。このパラメーターは、Probe メッセージの AppSequence ブロック内のシーケンス識別子に対応します。シーケンス識別子の詳細については、WS-Discovery 仕様の付録 I を参照してください。

このパラメーターには NULL を指定できます。

pTypesListWSD_NAME_LIST*inoptional

公開ホストがサポートする型の一覧を表す WSD_NAME_LIST 構造体へのポインターです。NULL を指定できます。

pTypesList が指定されている場合、MatchProbe は WS-Discovery の照合ロジックを使用して、一覧内の型が pProbeMessage で指定された型と一致するかどうかを確認します。

pScopesListWSD_URI_LIST*inoptional

公開ホストがサポートする、一致対象のスコープの一覧を表す WSD_URI_LIST 構造体へのポインターです。この一覧には、文字列形式のハッシュ値が格納されます。NULL を指定できます。

pScopesList が指定されている場合、MatchProbe は WS-Discovery の照合ロジックを使用して、一覧内のスコープが pProbeMessage で指定されたスコープと一致するかどうかを確認します。

pXAddrsListWSD_URI_LIST*inoptional公開ホストがサポートするトランスポートアドレスの一覧を表す WSD_URI_LIST 構造体へのポインターです。各トランスポートアドレスの文字列には、リモートホストが接続に使用できるアドレスとポート番号が含まれます。NULL を指定できます。
pHeaderAnyWSDXML_ELEMENT*inoptionalヘッダーの "ANY" セクションに挿入する XML 要素を格納する WSDXML_ELEMENT 構造体へのポインターです。
pReferenceParameterAnyWSDXML_ELEMENT*inoptional参照パラメータープロパティの "ANY" セクションに挿入する XML 要素を格納する WSDXML_ELEMENT 構造体へのポインターです。
pPolicyAnyWSDXML_ELEMENT*inoptional使用されません。
pEndpointReferenceAnyWSDXML_ELEMENT*inoptionalエンドポイントの "ANY" セクションに挿入する XML 要素を格納する WSDXML_ELEMENT 構造体へのポインターです。
pAnyWSDXML_ELEMENT*inoptionalメッセージ本文の "ANY" セクションに挿入する XML 要素を格納する WSDXML_ELEMENT 構造体へのポインターです。

戻り値

戻り値には、次のものが含まれます (ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは正常に完了しました。
E_INVALIDARG
次の条件のいずれか 1 つ以上に該当します。
  • pszIdNULL です。
  • pszId の文字数が WSD_MAX_TEXT_LENGTH (8192) を超えています。
  • pszSessionId の文字数が WSD_MAX_TEXT_LENGTH (8192) を超えています。
  • pProbeMessageNULL です。
E_ABORT
パブリッシャーが開始されていません。通知シンクをアタッチするとパブリッシャーが開始されます。シンクをアタッチするには、RegisterNotificationSink を呼び出してください。
E_OUTOFMEMORY
操作を完了するためのメモリが不足しています。

解説(Remarks)

MatchProbeEx は、探索パブリッシャーが ProbeHandler コールバックを発行した場合にのみ呼び出してください。pProbeMessagepMessageParameters は、コールバックから MatchProbeEx にそのまま渡されます。ProbeHandler は、指定された Probe メッセージが一致するかどうかをパブリッシャーが判定し、一致する場合に必要に応じて ProbeMatches 応答を発行するために必要な情報も渡します。

MatchProbeEx は、バインドされているすべてのアダプターで ProbeMatches メッセージを送信し、WS-Discovery で必要とされる場合はメッセージの再送信を自動的に行います。

WSDXML_ELEMENT 構造体を指すパラメーターを使用すると、送信される ProbeMatches メッセージの内容を独自の情報で拡張できます。

vtbl 12 HRESULT MatchResolveEx(WSD_SOAP_MESSAGE* pResolveMessage, IWSDMessageParameters* pMessageParameters, LPWSTR pszId, ULONGLONG ullMetadataVersion, ULONGLONG ullInstanceId, ULONGLONG ullMessageNumber, LPWSTR pszSessionId, WSD_NAME_LIST* pTypesList, WSD_URI_LIST* pScopesList, WSD_URI_LIST* pXAddrsList, WSDXML_ELEMENT* pHeaderAny, WSDXML_ELEMENT* pReferenceParameterAny, WSDXML_ELEMENT* pPolicyAny, WSDXML_ELEMENT* pEndpointReferenceAny, WSDXML_ELEMENT* pAny)

Resolve メッセージが指定されたホストに一致するかどうかを判定し、一致する場合は拡張情報を含む WS-Discovery の ResolveMatches メッセージを送信します。

pResolveMessageWSD_SOAP_MESSAGE*in通知シンクの ResolveHandler に渡された Resolve メッセージを表す WSD_SOAP_MESSAGE 構造体へのポインターです。
pMessageParametersIWSDMessageParameters*in通知シンクの ResolveHandler に渡された送信パラメーターを表す IWSDMessageParameters オブジェクトへのポインターです。
pszIdLPWSTRinデバイスの論理アドレスまたは物理アドレスです。これはデバイスのエンドポイントアドレスとして使用されます。論理アドレスは urn:uuid:{guid} の形式です。物理アドレスには、http または https を前置した URI、あるいは単に uri を前置した URI を指定できます。可能な限り論理アドレスを使用してください。
ullMetadataVersionULONGLONGin

現在のメタデータのバージョンです。

メモ WS-Discovery 仕様との互換性のため、この値は UINT_MAX (4294967295) 以下である必要があります。
ullInstanceIdULONGLONGin

公開されるデバイスの現在のインスタンスを示す識別子です。この識別子は、サービスが再起動されるたびにインクリメントする必要があります。インスタンス識別子の詳細については、WS-Discovery 仕様の付録 I を参照してください。

メモ WS-Discovery 仕様との互換性のため、この値は UINT_MAX (4294967295) 以下である必要があります。
ullMessageNumberULONGLONGin

現在のメッセージについて、インスタンス識別子のスコープ内で使用されるカウンターです。メッセージ番号は、メッセージごとにインクリメントする必要があります。

メモ WS-Discovery 仕様との互換性のため、この値は UINT_MAX (4294967295) 以下である必要があります。
pszSessionIdLPWSTRinoptional

現在のセッションについて、インスタンス識別子のスコープ内で一意となる識別子です。このパラメーターは、Probe メッセージの AppSequence ブロック内のシーケンス識別子に対応します。シーケンス識別子の詳細については、WS-Discovery 仕様の付録 I を参照してください。

このパラメーターには NULL を指定できます。

pTypesListWSD_NAME_LIST*inoptional公開ホストがサポートする型の一覧を表す WSD_NAME_LIST 構造体へのポインターです。NULL を指定できます。 pTypesList が指定されている場合、MatchResolveEx は WS-Discovery の照合ロジックを使用して、型が pResolveMessage で指定されたものと一致するかどうかを確認します。
pScopesListWSD_URI_LIST*inoptional公開ホストがサポートする、一致対象のスコープの一覧を表す WSD_URI_LIST 構造体へのポインターです。この一覧には、文字列形式のハッシュ値が格納されます。NULL を指定できます。 pScopesList が指定されている場合、MatchResolveEx は WS-Discovery の照合ロジックを使用して、スコープが pResolveMessage で指定されたものと一致するかどうかを確認します。
pXAddrsListWSD_URI_LIST*inoptional公開ホストがサポートするトランスポートアドレスの一覧を表す WSD_URI_LIST 構造体へのポインターです。各トランスポートアドレスの文字列には、リモートホストが接続に使用できるアドレスとポート番号が含まれます。pXAddrsList および pXAddrsList->ElementNULL を指定することはできません。
pHeaderAnyWSDXML_ELEMENT*inoptionalヘッダーの "ANY" セクションに挿入する XML 要素を格納する WSDXML_ELEMENT 構造体へのポインターです。
pReferenceParameterAnyWSDXML_ELEMENT*inoptional参照パラメータープロパティの "ANY" セクションに挿入する XML 要素を格納する WSDXML_ELEMENT 構造体へのポインターです。
pPolicyAnyWSDXML_ELEMENT*inoptional使用されません。
pEndpointReferenceAnyWSDXML_ELEMENT*inoptionalエンドポイントの "ANY" セクションに挿入する XML 要素を格納する WSDXML_ELEMENT 構造体へのポインターです。
pAnyWSDXML_ELEMENT*inoptionalメッセージ本文の "ANY" セクションに挿入する XML 要素を格納する WSDXML_ELEMENT 構造体へのポインターです。

戻り値

戻り値には、次のものが含まれます (ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは正常に完了しました。
E_INVALIDARG
次の条件のいずれか 1 つ以上に該当します。
  • pszIdNULL です。
  • pszId の文字数が WSD_MAX_TEXT_LENGTH (8192) を超えています。
  • pszSessionId の文字数が WSD_MAX_TEXT_LENGTH (8192) を超えています。
  • pProbeMessageNULL です。
E_ABORT
パブリッシャーが開始されていません。通知シンクをアタッチするとパブリッシャーが開始されます。シンクをアタッチするには、RegisterNotificationSink を呼び出してください。
E_OUTOFMEMORY
操作を完了するためのメモリが不足しています。

解説(Remarks)

MatchResolveEx は、探索パブリッシャーが ResolveHandler コールバックを発行した場合にのみ呼び出してください。pResolveMessagepMessageParameters は、コールバックから MatchResolveEx にそのまま渡されます。ResolveHandler は、指定された Resolve メッセージが一致するかどうかをパブリッシャーが判定し、一致する場合に必要に応じて ResolveMatches 応答を発行するために必要な情報も渡します。

MatchResolveEx は、バインドされているすべてのアダプターで ResolveMatches メッセージを送信し、WS-Discovery で必要とされる場合はメッセージの再送信を自動的に行います。

WSDXML_ELEMENT 構造体を指すパラメーターを使用すると、送信される ResolveMatches メッセージの内容を独自の情報で拡張できます。

vtbl 13 HRESULT RegisterScopeMatchingRule(IWSDScopeMatchingRule* pScopeMatchingRule)

カスタムのスコープ照合ルールのサポートを追加します。

pScopeMatchingRuleIWSDScopeMatchingRule*inカスタムのスコープ照合ルールを表す IWSDScopeMatchingRule オブジェクトへのポインターです。

戻り値

戻り値には、次のものが含まれます (ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは正常に完了しました。
E_INVALIDARG
pScopeMatchingRuleNULL です。
E_OUTOFMEMORY
操作を完了するためのメモリが不足しています。

解説(Remarks)

RegisterScopeMatchingRule を使用すると、独自のスコープ照合ルールを定義し、WS-Discovery 仕様で定義されている既存のルールセットに追加できます。

vtbl 14 HRESULT UnRegisterScopeMatchingRule(IWSDScopeMatchingRule* pScopeMatchingRule)

カスタムのスコープ照合ルールのサポートを削除します。

pScopeMatchingRuleIWSDScopeMatchingRule*inカスタムのスコープ照合ルールを表す IWSDScopeMatchingRule オブジェクトへのポインターです。

戻り値

戻り値には、次のものが含まれます (ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは正常に完了しました。
E_INVALIDARG
pScopeMatchingRuleNULL です。

解説(Remarks)

UnRegisterScopeMatchingRule は、以前に関連付けられたカスタムのスコープ照合ルールを削除します。

vtbl 15 HRESULT GetXMLContext(IWSDXMLContext** ppContext)

デバイスに関連付けられた XML コンテキストを取得します。

ppContextIWSDXMLContext**outXML コンテキストを表す IWSDXMLContext オブジェクトへのポインターを受け取るポインターです。

戻り値

戻り値には、次のものが含まれます (ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは正常に完了しました。
E_INVALIDARG
ppContextNULL です。
E_ABORT
パブリッシャーが開始されていません。通知シンクをアタッチするとパブリッシャーが開始されます。シンクをアタッチするには、RegisterNotificationSink を呼び出してください。

解説(Remarks)

トランザクションの XML 状態に対する省略可能なコンテキストを返します。サービスレイヤーを使用する場合は、XML の名前空間と型を登録したコンテキストである必要があります。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IWSDiscoveryPublisher "{AE01E1A8-3FF9-4148-8116-057CC616FE13}"
#usecom global IWSDiscoveryPublisher IID_IWSDiscoveryPublisher "{}"
#comfunc global IWSDiscoveryPublisher_SetAddressFamily             3 int
#comfunc global IWSDiscoveryPublisher_RegisterNotificationSink     4 sptr
#comfunc global IWSDiscoveryPublisher_UnRegisterNotificationSink   5 sptr
#comfunc global IWSDiscoveryPublisher_Publish                      6 wstr,int64,int64,int64,wstr,var,var,var
#comfunc global IWSDiscoveryPublisher_UnPublish                    7 wstr,int64,int64,wstr,var
#comfunc global IWSDiscoveryPublisher_MatchProbe                   8 var,sptr,wstr,int64,int64,int64,wstr,var,var,var
#comfunc global IWSDiscoveryPublisher_MatchResolve                 9 var,sptr,wstr,int64,int64,int64,wstr,var,var,var
#comfunc global IWSDiscoveryPublisher_PublishEx                    10 wstr,int64,int64,int64,wstr,var,var,var,var,var,var,var,var
#comfunc global IWSDiscoveryPublisher_MatchProbeEx                 11 var,sptr,wstr,int64,int64,int64,wstr,var,var,var,var,var,var,var,var
#comfunc global IWSDiscoveryPublisher_MatchResolveEx               12 var,sptr,wstr,int64,int64,int64,wstr,var,var,var,var,var,var,var,var
#comfunc global IWSDiscoveryPublisher_RegisterScopeMatchingRule    13 sptr
#comfunc global IWSDiscoveryPublisher_UnRegisterScopeMatchingRule  14 sptr
#comfunc global IWSDiscoveryPublisher_GetXMLContext                15 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。