Win32 API 日本語リファレンス
ホームMedia.WindowsMediaFormat › IWMProximityDetection

IWMProximityDetection

COM
IID6a9fd8ee-b651-4bf0-b849-7d4ece79a2b1継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IWMProximityDetection インターフェイスは、メディアデータを受信する再生デバイスを検証します。

解説(Remarks)

検証状態はデバイス登録データベースに格納されます。デバイスの検証状態は IWMRegisteredDevice::IsValid を呼び出して確認できます。

検証は 48 時間で期限切れになります。

メソッド 1

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

vtbl 3 HRESULT StartDetection(BYTE* pbRegistrationMsg, DWORD cbRegistrationMsg, BYTE* pbLocalAddress, DWORD cbLocalAddress, DWORD dwExtraPortsAllowed, INSSBuffer** ppRegistrationResponseMsg, IWMStatusCallback* pCallback, void* pvContext)

StartDetection メソッドは、近接検出プロセスを開始します。このメソッドを呼び出した後は、WMT_PROXIMITY_COMPLETED メッセージを受信するまで IWMProximityDetection を解放しないでください。

pbRegistrationMsgBYTE*inメモリ内の登録メッセージのアドレス。このメッセージは、アプリケーションがデバイスから受信します。
cbRegistrationMsgDWORDin登録メッセージのサイズ(バイト単位)。
pbLocalAddressBYTE*in近接検出中に使用するローカルネットワークインターフェイスのアドレスを格納する SOCKADDR_STORAGE 構造体のアドレス。dwExtraPortsAllowed パラメーターが 0 でない場合、SOCKADDR_STORAGE 構造体で指定されたポート番号は、試行されるポート範囲の開始点を示します。
cbLocalAddressDWORDinpbLocalAddress が指す構造体のサイズ。sizeof(SOCKADDR_STORAGE) を設定します。
dwExtraPortsAllowedDWORDin以前のポートが正常に使用できなかった場合に、メソッドが使用を試みる追加ポートの数を指定します。メソッドは常に、まず pbLocalAddress パラメーターで指定されたポートの使用を試みます。その試行が失敗した場合、メソッドはこのパラメーターの値まで追加の試行を行います。以降の試行ごとにポート番号がインクリメントされます。したがって、pbLocalAddress のポート番号が 5000 で、dwExtraPortsAllowed が 20 に設定されている場合、メソッドはポート 5000 から開始し、必要に応じてポート 5001 から 5020 までを試行します。
ppRegistrationResponseMsgINSSBuffer**out登録応答メッセージを格納するバッファーオブジェクト上の INSSBuffer インターフェイスのアドレスを受け取る変数のアドレス。このメッセージデータをデバイスに送信する必要があります。
pCallbackIWMStatusCallback*in近接検出のステータスメッセージを受け取る IWMStatusCallback インターフェイスのアドレス。
pvContextvoid*inアプリケーションが使用する汎用ポインター。これは IWMStatusCallback::OnStatus コールバックの呼び出し時にアプリケーションに渡されます。単一のステータスコールバックを共有する場合、このパラメーターを使用して、異なるオブジェクトからのメッセージを区別できます。

戻り値

このメソッドは HRESULT を返します。指定できる値には次の表の値が含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは成功しました。

解説(Remarks)

このメソッドは非同期です。近接検出が完了すると、pCallback で指定されたコールバックに WMT_PROXIMITY_RESULT メッセージが送信されます。完了メッセージには、成功または失敗を示す HRESULT が付随します。

近接検出が完了するかどうかにかかわらず、リスニングスレッドは 2 分間実行された後、WMT_PROXIMITY_COMPLETED メッセージを送信します。このメッセージを受信するまで、IWMProximityDetection インターフェイスを解放しないでください。

このメソッドが失敗コードを返した場合、コールバックにメッセージは送信されません。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IWMProximityDetection "{6A9FD8EE-B651-4BF0-B849-7D4ECE79A2B1}"
#usecom global IWMProximityDetection IID_IWMProximityDetection "{}"
#comfunc global IWMProximityDetection_StartDetection  3 var,int,var,int,int,sptr,sptr,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。