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

IMFWorkQueueServices

COM
IID35fe1bb8-a3a9-40fe-bbec-eb569c9ccca3継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

Media Session によって作成されるワークキューを制御します。

解説(Remarks)

アプリケーションが保護されたメディアパス (PMP) セッションを使用している場合、このインターフェイスのメソッドは呼び出しを PMP プロセスへ自動的にマーシャリングします。

メソッド 12

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

vtbl 3 HRESULT BeginRegisterTopologyWorkQueuesWithMMCSS(IMFAsyncCallback* pCallback, IUnknown* pState)

トポロジーのワークキューを Multimedia Class Scheduler Service (MMCSS) に登録します。

pCallbackIMFAsyncCallback*inコールバックオブジェクトの IMFAsyncCallback インターフェイスへのポインター。呼び出し元がこのインターフェイスを実装する必要があります。
pStateIUnknown*in呼び出し元が定義する状態オブジェクトの IUnknown インターフェイスへのポインター。このパラメーターは NULL でもかまいません。このオブジェクトは状態情報を保持するために使用できます。コールバックが呼び出されるときに、このオブジェクトが呼び出し元へ返されます。

戻り値

このメソッドが成功した場合は S_OK を返します。そうでない場合は HRESULT エラーコードを返します。

解説(Remarks)

トポロジー内の各ソースノードは、トポロジーの 1 つのブランチを定義します。ブランチには、そのノードからデータを受け取るすべてのトポロジーノードが含まれます。アプリケーションはトポロジーの各ブランチに独自のワークキューを割り当て、それらのワークキューを MMCSS タスクに関連付けることができます。

このメソッドを使用するには、次の手順を実行します。

  1. トポロジーを作成します。
  2. トポロジー内のソースノードに次の属性を設定します。
  3. IMFMediaSession::SetTopology を呼び出してトポロジーをキューに登録します。
  4. MF_TOPOSTATUS_READY ステータスを伴う MESessionTopologyStatus イベントを待機します。
  5. BeginRegisterTopologyWorkQueuesWithMMCSS を呼び出します。このメソッドは、トポロジーのすべてのワークキューを MMCSS に登録します。
BeginRegisterTopologyWorkQueuesWithMMCSS メソッドは非同期です。操作が完了すると、コールバックオブジェクトの IMFAsyncCallback::Invoke メソッドが呼び出されます。コールバックメソッド内で IMFWorkQueueServices::EndRegisterTopologyWorkQueuesWithMMCSS を呼び出して、非同期要求を完了します。この操作が完了すると、Media Session は、そのセッションでキューに登録される新しいトポロジーごとに、ワークキューを自動的に登録します。アプリケーションが新しいトポロジーのためにこのメソッドを再度呼び出す必要はありません。

トポロジーのワークキューを MMCSS から登録解除するには、IMFWorkQueueServices::BeginUnregisterTopologyWorkQueuesWithMMCSS を呼び出します。

vtbl 4 HRESULT EndRegisterTopologyWorkQueuesWithMMCSS(IMFAsyncResult* pResult)

トポロジーのワークキューを Multimedia Class Scheduler Service (MMCSS) に登録する非同期要求を完了します。

pResultIMFAsyncResult*inIMFAsyncResult インターフェイスへのポインター。コールバックオブジェクトが IMFAsyncCallback::Invoke メソッドで受け取ったのと同じポインターを渡します。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。

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

解説(Remarks)

IMFWorkQueueServices::BeginRegisterTopologyWorkQueuesWithMMCSS メソッドが非同期に完了したときに、このメソッドを呼び出します。

vtbl 5 HRESULT BeginUnregisterTopologyWorkQueuesWithMMCSS(IMFAsyncCallback* pCallback, IUnknown* pState)

トポロジーのワークキューを Multimedia Class Scheduler Service (MMCSS) から登録解除します。

pCallbackIMFAsyncCallback*inコールバックオブジェクトの IMFAsyncCallback インターフェイスへのポインター。呼び出し元がこのインターフェイスを実装する必要があります。
pStateIUnknown*in呼び出し元が定義する状態オブジェクトの IUnknown インターフェイスへのポインター。このパラメーターは NULL でもかまいません。このオブジェクトは状態情報を保持するために使用できます。コールバックが呼び出されるときに、このオブジェクトが呼び出し元へ返されます。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。

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

解説(Remarks)

このメソッドは非同期です。操作が完了すると、コールバックオブジェクトの IMFAsyncCallback::Invoke メソッドが呼び出されます。その時点で、アプリケーションは IMFWorkQueueServices::EndUnregisterTopologyWorkQueuesWithMMCSS を呼び出して非同期要求を完了する必要があります。

vtbl 6 HRESULT EndUnregisterTopologyWorkQueuesWithMMCSS(IMFAsyncResult* pResult)

トポロジーのワークキューを Multimedia Class Scheduler Service (MMCSS) から登録解除する非同期要求を完了します。

pResultIMFAsyncResult*inIMFAsyncResult インターフェイスへのポインター。コールバックオブジェクトが IMFAsyncCallback::Invoke メソッドで受け取ったのと同じポインターを渡します。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。

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

解説(Remarks)

IMFWorkQueueServices::BeginRegisterTopologyWorkQueuesWithMMCSS メソッドが非同期に完了したときに、このメソッドを呼び出します。

vtbl 7 HRESULT GetTopologyWorkQueueMMCSSClass(DWORD dwTopologyWorkQueueId, LPWSTR pwszClass, DWORD* pcchClass)

現在のトポロジーの指定されたブランチについて、Multimedia Class Scheduler Service (MMCSS) クラスを取得します。

dwTopologyWorkQueueIdDWORDinこのトポロジーブランチに割り当てられているワークキューを識別します。アプリケーションは、ブランチのソースノードに MF_TOPONODE_WORKQUEUE_ID 属性を設定することで、この値を定義します。
pwszClassLPWSTRoutMMCSS クラスの名前を受け取るバッファーへのポインター。このパラメーターは NULL でもかまいません。
pcchClassDWORD*inout入力時には pwszClass バッファーのサイズを文字数単位で指定します。出力時には、必要なバッファーのサイズを文字数単位で受け取ります。このサイズには終端の null 文字が含まれます。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
指定された識別子を持つワークキューが存在しません。
MF_E_BUFFERTOOSMALL
pwszClass バッファーが小さすぎて、クラス名を受け取ることができません。
vtbl 8 HRESULT GetTopologyWorkQueueMMCSSTaskId(DWORD dwTopologyWorkQueueId, DWORD* pdwTaskId)

現在のトポロジーの指定されたブランチについて、Multimedia Class Scheduler Service (MMCSS) タスク識別子を取得します。

dwTopologyWorkQueueIdDWORDinこのトポロジーブランチに割り当てられているワークキューを識別します。アプリケーションは、ブランチのソースノードに MF_TOPONODE_WORKQUEUE_ID 属性を設定することで、この値を定義します。
pdwTaskIdDWORD*outタスク識別子を受け取ります。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは成功しました。
vtbl 9 HRESULT BeginRegisterPlatformWorkQueueWithMMCSS(DWORD dwPlatformWorkQueue, LPWSTR wszClass, DWORD dwTaskId, IMFAsyncCallback* pCallback, IUnknown* pState)

プラットフォームワークキューを Multimedia Class Scheduler Service (MMCSS) タスクに関連付けます。

dwPlatformWorkQueueDWORDinMMCSS に登録するプラットフォームワークキュー。Work Queue Identifiers を参照してください。 すべての標準ワークキューを同じ MMCSS タスクに登録するには、このパラメーターを MFASYNC_CALLBACK_QUEUE_ALL に設定します。
wszClassLPWSTRin実行する MMCSS タスクの名前。
dwTaskIdDWORDin一意のタスク識別子。新しいタスク識別子を取得するには、この値を 0 に設定します。
pCallbackIMFAsyncCallback*inコールバックオブジェクトの IMFAsyncCallback インターフェイスへのポインター。呼び出し元がこのインターフェイスを実装する必要があります。
pStateIUnknown*in呼び出し元が定義する状態オブジェクトの IUnknown インターフェイスへのポインター。このパラメーターは NULL でもかまいません。このオブジェクトは状態情報を保持するために使用できます。コールバックが呼び出されるときに、このオブジェクトが呼び出し元へ返されます。

戻り値

このメソッドが成功した場合は S_OK を返します。そうでない場合は HRESULT エラーコードを返します。

解説(Remarks)

このメソッドは非同期です。操作が完了すると、コールバックオブジェクトの IMFAsyncCallback::Invoke メソッドが呼び出されます。その時点で、アプリケーションは IMFWorkQueueServices::EndRegisterPlatformWorkQueueWithMMCSS を呼び出して非同期要求を完了する必要があります。

ワークキューを MMCSS クラスから登録解除するには、IMFWorkQueueServices::BeginUnregisterPlatformWorkQueueWithMMCSS を呼び出します。

vtbl 10 HRESULT EndRegisterPlatformWorkQueueWithMMCSS(IMFAsyncResult* pResult, DWORD* pdwTaskId)

プラットフォームワークキューを Multimedia Class Scheduler Service (MMCSS) タスクに関連付ける非同期要求を完了します。

pResultIMFAsyncResult*inIMFAsyncResult インターフェイスへのポインター。コールバックオブジェクトが IMFAsyncCallback::Invoke メソッドで受け取ったのと同じポインターを渡します。
pdwTaskIdDWORD*out一意のタスク識別子。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。

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

解説(Remarks)

IMFWorkQueueServices::BeginRegisterPlatformWorkQueueWithMMCSS メソッドが非同期に完了したときに、この関数を呼び出します。

ワークキューを MMCSS クラスから登録解除するには、IMFWorkQueueServices::BeginUnregisterPlatformWorkQueueWithMMCSS を呼び出します。

vtbl 11 HRESULT BeginUnregisterPlatformWorkQueueWithMMCSS(DWORD dwPlatformWorkQueue, IMFAsyncCallback* pCallback, IUnknown* pState)

プラットフォームワークキューを Multimedia Class Scheduler Service (MMCSS) タスクから登録解除します。

dwPlatformWorkQueueDWORDinMMCSS に登録するプラットフォームワークキュー。IMFWorkQueueServices::BeginRegisterPlatformWorkQueueWithMMCSS を参照してください。
pCallbackIMFAsyncCallback*inコールバックオブジェクトの IMFAsyncCallback インターフェイスへのポインター。呼び出し元がこのインターフェイスを実装する必要があります。
pStateIUnknown*in呼び出し元が定義する状態オブジェクトの IUnknown インターフェイスへのポインター。このパラメーターは NULL でもかまいません。このオブジェクトは状態情報を保持するために使用できます。コールバックが呼び出されるときに、このオブジェクトが呼び出し元へ返されます。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。

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

解説(Remarks)

このメソッドは非同期です。操作が完了すると、コールバックオブジェクトの IMFAsyncCallback::Invoke メソッドが呼び出されます。その時点で、アプリケーションは IMFWorkQueueServices::EndUnregisterPlatformWorkQueueWithMMCSS を呼び出して非同期要求を完了する必要があります。

vtbl 12 HRESULT EndUnregisterPlatformWorkQueueWithMMCSS(IMFAsyncResult* pResult)

プラットフォームワークキューを Multimedia Class Scheduler Service (MMCSS) タスクから登録解除する非同期要求を完了します。

pResultIMFAsyncResult*inIMFAsyncResult インターフェイスへのポインター。コールバックオブジェクトが IMFAsyncCallback::Invoke メソッドで受け取ったのと同じポインターを渡します。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。

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

解説(Remarks)

IMFWorkQueueServices::BeginUnregisterPlatformWorkQueueWithMMCSS メソッドが非同期に完了したときに、このメソッドを呼び出します。

vtbl 13 HRESULT GetPlaftormWorkQueueMMCSSClass(DWORD dwPlatformWorkQueueId, LPWSTR pwszClass, DWORD* pcchClass)

指定されたプラットフォームワークキューについて、Multimedia Class Scheduler Service (MMCSS) クラスを取得します。

dwPlatformWorkQueueIdDWORDin照会するプラットフォームワークキュー。IMFWorkQueueServices::BeginRegisterPlatformWorkQueueWithMMCSS を参照してください。
pwszClassLPWSTRoutMMCSS クラスの名前を受け取るバッファーへのポインター。このパラメーターは NULL でもかまいません。
pcchClassDWORD*inout入力時には pwszClass バッファーのサイズを文字数単位で指定します。出力時には、必要なバッファーのサイズを文字数単位で受け取ります。このサイズには終端の null 文字が含まれます。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは成功しました。
MF_E_BUFFERTOOSMALL
pwszClass バッファーが小さすぎて、クラス名を受け取ることができません。
vtbl 14 HRESULT GetPlatformWorkQueueMMCSSTaskId(DWORD dwPlatformWorkQueueId, DWORD* pdwTaskId)

指定されたプラットフォームワークキューについて、Multimedia Class Scheduler Service (MMCSS) タスク識別子を取得します。

dwPlatformWorkQueueIdDWORDin照会するプラットフォームワークキュー。IMFWorkQueueServices::BeginRegisterPlatformWorkQueueWithMMCSS を参照してください。
pdwTaskIdDWORD*outタスク識別子を受け取ります。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは成功しました。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IMFWorkQueueServices "{35FE1BB8-A3A9-40FE-BBEC-EB569C9CCCA3}"
#usecom global IMFWorkQueueServices IID_IMFWorkQueueServices "{}"
#comfunc global IMFWorkQueueServices_BeginRegisterTopologyWorkQueuesWithMMCSS    3 sptr,sptr
#comfunc global IMFWorkQueueServices_EndRegisterTopologyWorkQueuesWithMMCSS      4 sptr
#comfunc global IMFWorkQueueServices_BeginUnregisterTopologyWorkQueuesWithMMCSS  5 sptr,sptr
#comfunc global IMFWorkQueueServices_EndUnregisterTopologyWorkQueuesWithMMCSS    6 sptr
#comfunc global IMFWorkQueueServices_GetTopologyWorkQueueMMCSSClass              7 int,var,var
#comfunc global IMFWorkQueueServices_GetTopologyWorkQueueMMCSSTaskId             8 int,var
#comfunc global IMFWorkQueueServices_BeginRegisterPlatformWorkQueueWithMMCSS     9 int,wstr,int,sptr,sptr
#comfunc global IMFWorkQueueServices_EndRegisterPlatformWorkQueueWithMMCSS       10 sptr,var
#comfunc global IMFWorkQueueServices_BeginUnregisterPlatformWorkQueueWithMMCSS   11 int,sptr,sptr
#comfunc global IMFWorkQueueServices_EndUnregisterPlatformWorkQueueWithMMCSS     12 sptr
#comfunc global IMFWorkQueueServices_GetPlaftormWorkQueueMMCSSClass              13 int,var,var
#comfunc global IMFWorkQueueServices_GetPlatformWorkQueueMMCSSTaskId             14 int,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。