IMFDXGIBuffer
COM公式ドキュメント
Microsoft DirectX Graphics Infrastructure (DXGI)サーフェスを含むバッファを表します。
解説(Remarks)
DXGIメディアバッファを作成するには、まずDXGIサーフェスを作成します。次に MFCreateDXGISurfaceBuffer を呼び出します。
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
Microsoft DirectX Graphics Infrastructure (DXGI)サーフェスに対してインターフェイスを照会します。
| riid | GUID* | in | 要求するインターフェイスのインターフェイス識別子(IID)。 |
| ppvObject | void** | out | インターフェイスへのポインターを受け取ります。呼び出し元はインターフェイスを解放する必要があります。 |
戻り値
このメソッドは次のいずれかの値を返すことができます。
| 戻り値 | 説明 |
|---|---|
| 成功。 | |
| オブジェクトは指定されたインターフェイスをサポートしていません。 | |
| 無効な要求です。 |
解説(Remarks)
このメソッドを使用して、サーフェスの ID3D11Texture2D インターフェイスへのポインターを取得できます。バッファがロックされている場合、このメソッドは MF_E_INVALIDREQUEST を返します。
このメディアバッファに関連付けられているサブリソースのインデックスを取得します。
| puSubresource | DWORD* | out | サブリソースの0から始まるインデックスを受け取ります。 |
戻り値
このメソッドが成功した場合、S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
サブリソースインデックスは、メディアバッファオブジェクトを作成するときに指定します。MFCreateDXGISurfaceBuffer を参照してください。
テクスチャのサブリソースの詳細については、ID3D11Device::CreateTexture2D を参照してください。
メディアバッファオブジェクトに以前格納されたIUnknownポインターを取得します。
| guid | GUID* | in | IUnknown ポインターの識別子。 |
| riid | GUID* | in | 要求するインターフェイスのインターフェイス識別子(IID)。 |
| ppvObject | void** | out | インターフェイスへのポインターを受け取ります。呼び出し元はインターフェイスを解放する必要があります。 |
戻り値
このメソッドは次のいずれかの値を返すことができます。
| 戻り値 | 説明 |
|---|---|
| 成功。 | |
| オブジェクトは指定されたインターフェイスをサポートしていません。 | |
| 指定されたキーが見つかりませんでした。 |
任意のIUnknownポインターをメディアバッファオブジェクトに格納します。
| guid | GUID* | in | IUnknown ポインターの識別子。この識別子は、値を取得するためのキーとして使用されます。任意の GUID 値を指定できます。 |
| pUnkData | IUnknown* | inoptional | IUnknown インターフェイスへのポインター。以前に設定したポインターをクリアするには、このパラメーターを NULL に設定します。 |
戻り値
このメソッドは次のいずれかの値を返すことができます。
| 戻り値 | 説明 |
|---|---|
| 成功。 | |
| このキーを持つ項目が既に存在します。 |
解説(Remarks)
オブジェクトからポインターを取得するには、IMFDXGIBuffer::GetUnknown を呼び出します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMFDXGIBuffer "{E7174CFA-1C9E-48B1-8866-626226BFC258}" #usecom global IMFDXGIBuffer IID_IMFDXGIBuffer "{}" #comfunc global IMFDXGIBuffer_GetResource 3 var,sptr #comfunc global IMFDXGIBuffer_GetSubresourceIndex 4 var #comfunc global IMFDXGIBuffer_GetUnknown 5 var,var,sptr #comfunc global IMFDXGIBuffer_SetUnknown 6 var,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IMFDXGIBuffer "{E7174CFA-1C9E-48B1-8866-626226BFC258}" #usecom global IMFDXGIBuffer IID_IMFDXGIBuffer "{}" #comfunc global IMFDXGIBuffer_GetResource 3 sptr,sptr #comfunc global IMFDXGIBuffer_GetSubresourceIndex 4 sptr #comfunc global IMFDXGIBuffer_GetUnknown 5 sptr,sptr,sptr #comfunc global IMFDXGIBuffer_SetUnknown 6 sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。