次の方法で共有


IResourceManager::RequestResource メソッド (strmif.h)

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayerIMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]

メソッドは RequestResource 、特定の登録済みリソースの使用を要求します。

構文

HRESULT RequestResource(
  [in] LONG              idResource,
  [in] IUnknown          *pFocusObject,
  [in] IResourceConsumer *pConsumer
);

パラメーター

[in] idResource

リソースが登録されたときに取得されたリソース トークン。

[in] pFocusObject

要求に関連付けられているフォーカス オブジェクトの IUnknown インターフェイスへのポインター (通常はフィルターの IUnknown インターフェイス)。

[in] pConsumer

リソースを要求するオブジェクトの IResourceConsumer インターフェイスへのポインター。

戻り値

HRESULT 値を返します。 要求されたリソースが返された場合はS_OKを返し、リソースが使用できない場合はS_FALSEを返します。その場合、リソースが使用可能になると、リソース マネージャーは要求元のオブジェクトを呼び出します。 その他の戻り値はエラーです。

解説

リソースに対する要求が複数ある場合、リソース マネージャーは、各要求で渡されたフォーカスのオブジェクトを使用して優先度を決定し、最新の IResourceManager::SetFocus メソッドで渡されたフォーカスのオブジェクトと比較します。

要求は、次の優先順位で入力されます。

  1. 最後の SetFocus メソッドとまったく同じフォーカス オブジェクトを使用して行われた要求。
  2. フォーカスのオブジェクトが共通のソース フィルターを共有し、フォーカスのオブジェクトが共通のフィルター グラフを共有する要求。
  3. フォーカスと同じプロセスでの要求。
この優先度を確認すると、リソース マネージャーはフォーカス オブジェクトの QueryInterface を使用してIID_IFilterします。 見つかった場合、リソース マネージャーは IBaseFilter メソッドを使用してフィルター グラフをチェックし、現在のフォーカス オブジェクトを持つ一般的なソース フィルターを探します。

フィルターは、pFocusObject パラメーターでフィルターの IUnknown インターフェイスを渡す必要があります。 フィルター グラフ マネージャーは、フィルターをフィルター グラフに一致させ、フォーカスのオブジェクトをチェックするときに、一般的なソース フィルターへのフィルターのトレースを試みます。

フォーカス オブジェクトは、IResourceManager::CancelRequest メソッドが呼び出されるか、bStillWant パラメーターを FALSE に設定して IResourceManager::NotifyRelease メソッドが呼び出されるまで、要求の有効期間全体にわたって有効である必要があります。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー strmif.h (Dshow.h を含む)
Library Strmiids.lib

関連項目

エラーコードと成功コード

IResourceManager インターフェイス