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

IMFShutdown

COM
IID97ec2ea4-0e42-4937-97ac-9d6d328824e1継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

明示的にシャットダウンする必要がある一部の Media Foundation オブジェクトによって公開されます。

解説(Remarks)

IMFShutdown を公開するオブジェクトの種類は次のとおりです。

これらのオブジェクトのいずれかを作成したコンポーネントは、オブジェクトを解放する前にそのオブジェクトの Shutdown を呼び出す責任があります。通常、アプリケーションがこれらのオブジェクトを直接作成することはないため、アプリケーションでこのインターフェイスを使用する必要は通常ありません。

このインターフェイスへのポインターを取得するには、オブジェクトに対して QueryInterface を呼び出します。

カスタムオブジェクトを実装している場合、アプリケーションが Shutdown を呼び出すことを保証できる場合に限り、オブジェクトでこのインターフェイスを公開できます。

メディアソース、メディアシンク、および 同期 MFT は、このインターフェイスを実装すべきではありません。Media Foundation パイプラインはこれらのオブジェクトに対して Shutdown を呼び出さないためです。 非同期 MFT は、このインターフェイスを実装する必要があります。

このインターフェイスは、Media Foundation の初期化で説明されているように Media Foundation プラットフォームをシャットダウンする MFShutdown 関数とは関連していません。

一部の Media Foundation インターフェイスは Shutdown メソッドを定義しています。これは IMFShutdown::Shutdown と同じ目的を果たしますが、直接関連するものではありません。

メソッド 2

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

vtbl 3 HRESULT Shutdown()

Media Foundation オブジェクトをシャットダウンし、そのオブジェクトに関連付けられているすべてのリソースを解放します。(IMFShutdown.Shutdown)

戻り値

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

解説(Remarks)

MFShutdownObject ヘルパー関数は、このメソッドを呼び出すことと同等です。

vtbl 4 HRESULT GetShutdownStatus(MFSHUTDOWN_STATUS* pStatus)

以前の IMFShutdown::Shutdown メソッド呼び出しの状態を照会します。

pStatusMFSHUTDOWN_STATUS*outMFSHUTDOWN_STATUS 列挙型のメンバーを受け取ります。

戻り値

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

戻り値コード 説明
S_OK
メソッドが成功しました。
E_INVALIDARG
引数が無効です。
MF_E_INVALIDREQUEST
このオブジェクトに対して Shutdown メソッドが呼び出されていません。

解説(Remarks)

Shutdown が呼び出されるまで、GetShutdownStatus メソッドは MF_E_INVALIDREQUEST を返します。

オブジェクトの Shutdown メソッドが非同期の場合、pStatus は値 MFSHUTDOWN_INITIATED を受け取ることがあります。オブジェクトが完全にシャットダウンされると、pStatus は値 MFSHUTDOWN_COMPLETED を受け取ります。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IMFShutdown "{97EC2EA4-0E42-4937-97AC-9D6D328824E1}"
#usecom global IMFShutdown IID_IMFShutdown "{}"
#comfunc global IMFShutdown_Shutdown           3
#comfunc global IMFShutdown_GetShutdownStatus  4 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。