次の方法で共有


IDXGIResource::GetSharedHandle メソッド (dxgi.h)

[Direct3D 11.1 以降では、 GetSharedHandle を使用して共有リソースへのハンドルを取得しないことをお勧めします。 代わりに、 IDXGIResource1::CreateSharedHandle を使用して共有のハンドルを取得します。 IDXGIResource1::CreateSharedHandle を使用するには、リソースを共有として作成し、NT ハンドルを使用するように指定する必要があります (つまり、D3D11_RESOURCE_MISC_SHARED_NTHANDLE フラグを設定します)。 また、これらの共有リソースで CloseHandleDuplicateHandle などを使用できるように、NT ハンドルを使用する共有リソースを作成することをお勧めします。

共有リソースへのハンドルを取得します。

構文

HRESULT GetSharedHandle(
  [out] HANDLE *pSharedHandle
);

パラメーター

[out] pSharedHandle

型: HANDLE*

ハンドルへのポインター。

戻り値

型: HRESULT

DXGI_ERROR値のいずれかを返します。

解説

GetSharedHandle は、共有として作成したリソースのハンドルを返します (つまり、D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX フラグの有無にかかわらず、D3D11_RESOURCE_MISC_SHAREDを設定します)。 このハンドルを ID3D11Device::OpenSharedResource メソッドに渡して、別のデバイスに共有リソースへのアクセス権を付与できます。 また、このハンドルを別のプロセスにマーシャリングして、別のプロセスのデバイスとリソースを共有することもできます。 ただし、このハンドルは NT ハンドルではありません。 そのため、 CloseHandleDuplicateHandle などのハンドルは使用しないでください。

共有リソースの作成者は、目的のすべてのエンティティがリソースを開くまで、リソースを破棄することはできません。 ハンドルの有効性は、基になるビデオ メモリの有効期間に関連付けられます。 このリソースを参照するデバイスにリソース オブジェクトが存在しない場合、ハンドルは無効になります。 ハンドルとビデオ メモリの有効期間を延長するには、デバイスで共有リソースを開く必要があります。

GetSharedHandle は、 ID3D11Device::OpenSharedResource に渡されたリソースのハンドルを返して、それらのリソースを開くこともできます。

ハンドルを取得するリソースが共有されていない場合、GetSharedHandle は失敗します。

要件

   
対象プラットフォーム Windows
ヘッダー dxgi.h
Library DXGI.lib

関連項目

IDXGIResource