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

IMFRealTimeClientEx

COM
IID03910848-ab16-4611-b100-17b88ae2f248継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

パイプラインオブジェクトに対して、Multimedia Class Scheduler Service (MMCSS) への自身の登録を通知します。(IMFRealTimeClientEx)

メソッド 3

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

vtbl 3 HRESULT RegisterThreadsEx(DWORD* pdwTaskIndex, LPWSTR wszClassName, INT lBasePriority)

オブジェクトに対して、ワーカースレッドを Multimedia Class Scheduler Service (MMCSS) に登録するよう通知します。(IMFRealTimeClientEx.RegisterThreadsEx)

pdwTaskIndexDWORD*inoutMMCSS タスク識別子です。入力時にこの値が 0 の場合、オブジェクトは新しい MCCSS タスクグループを作成する必要があります。「解説」を参照してください。
wszClassNameLPWSTRinMMCSS タスクの名前です。
lBasePriorityINTinスレッドの基本優先度です。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

オブジェクトがワーカースレッドを作成しない場合、このメソッドは単に S_OK を返し、それ以上の処理を行わないようにしてください。

それ以外の場合で、入力時に *pdwTaskIndex の値が 0 のときは、オブジェクトは次の手順を実行する必要があります。

  1. 1 つのワーカースレッドが AvSetMmThreadCharacteristics を呼び出して、新しい MMCSS タスク識別子を作成します。この値を保存します。
  2. 追加のワーカースレッドは、新しいタスク識別子を使用して AvSetMmThreadCharacteristics を呼び出します。
  3. *pdwTaskIndex にそのタスク識別子を設定することで、新しいタスク識別子を呼び出し元に返します。
入力時に *pdwTaskIndex の値が 0 以外の場合、このパラメーターには既存の MMCSS タスク識別子が含まれています。その場合、オブジェクトのすべてのワーカースレッドは、AvSetMmThreadCharacteristics を呼び出して、そのタスクに自身を登録する必要があります。
vtbl 4 HRESULT UnregisterThreads()

オブジェクトに対して、ワーカースレッドを Multimedia Class Scheduler Service (MMCSS) から登録解除するよう通知します。(IMFRealTimeClientEx.UnregisterThreads)

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 5 HRESULT SetWorkQueueEx(DWORD dwMultithreadedWorkQueueId, INT lWorkItemBasePriority)

このオブジェクトが非同期ワークアイテムに使用すべきワークキューを指定します。

dwMultithreadedWorkQueueIdDWORDinワークキュー識別子です。
lWorkItemBasePriorityINTinワークアイテムの基本優先度です。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

オブジェクトは、新しいワークアイテムをキューに登録する際に dwMultithreadedWorkQueueIdlWorkItemBasePriority の値を使用する必要があります。ワークアイテムをキューに登録するには、MFPutWorkItem2 関数または MFPutWorkItemEx2 関数を使用してください。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IMFRealTimeClientEx "{03910848-AB16-4611-B100-17B88AE2F248}"
#usecom global IMFRealTimeClientEx IID_IMFRealTimeClientEx "{}"
#comfunc global IMFRealTimeClientEx_RegisterThreadsEx  3 var,wstr,int
#comfunc global IMFRealTimeClientEx_UnregisterThreads  4
#comfunc global IMFRealTimeClientEx_SetWorkQueueEx     5 int,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。