ID3D11Device1::OpenSharedResource1 メソッド (d3d11_1.h)
ハンドルによって参照され、別のデバイス上に作成された共有リソースへのアクセス権をデバイスに付与します。 リソースを共有として作成し、NT ハンドルを使用するように指定しておく必要があります (つまり、 D3D11_RESOURCE_MISC_SHARED_NTHANDLE フラグを設定します)。
構文
HRESULT OpenSharedResource1(
[in] HANDLE hResource,
[in] REFIID returnedInterface,
[out] void **ppResource
);
パラメーター
[in] hResource
開くリソースへのハンドル。 このパラメーターの詳細については、「解説」を参照してください。
[in] returnedInterface
リソース インターフェイスのグローバル一意識別子 (GUID)。 このパラメーターの詳細については、「解説」を参照してください。
[out] ppResource
アクセスする共有リソース オブジェクトのインターフェイスへのポインターを受け取る変数へのポインター。
戻り値
このメソッドは、 Direct3D 11 のリターン コードのいずれかを返します。 このメソッドは、リソースにアクセスするためのアクセス許可が無効な場合もE_ACCESSDENIEDを返します。
Windows 7 のプラットフォーム更新プログラム: Windows 7 用プラットフォーム更新プログラム がインストールされている Windows 7 または Windows Server 2008 R2 では、NTHANDLES が使用されているため、 OpenSharedResource1 はE_NOTIMPLで失敗します。 Windows 7 のプラットフォーム更新プログラムの詳細については、「Windows 7 用プラットフォーム更新プログラム」を参照してください。
注釈
OpenSharedResource1 の動作は、ID3D11Device::OpenSharedResource メソッドの動作に似ています。リソースにアクセスするために OpenSharedResource1 を呼び出すたびに、新しいリソース オブジェクトが作成されます。 つまり、 OpenSharedResource1 を 2 回呼び出し、同じリソース ハンドルを hResource に渡すと、 異なる IUnknown ポインターを持つ 2 つのリソース オブジェクトを受け取ります。
2 つのデバイス間でリソースを共有するには
- D3D11_RESOURCE_MISC_SHARED_NTHANDLE フラグを設定して、リソースを共有として作成し、NT ハンドルを使用するように指定します。
- __uuidof() マクロを使用して、リソースへのインターフェイスの REFIID (GUID) を取得します。 たとえば、__uuidof(ID3D11Texture2D) は、インターフェイスの GUID を 2D テクスチャに取得します。
- IDXGIResource1 インターフェイスのリソースに対してクエリを実行します。
- IDXGIResource1::CreateSharedHandle メソッドを呼び出して、リソースへの一意のハンドルを取得します。
例
HANDLE handle = GetSharedHandleFromOtherProcess();
ID3D11Device1* pDevice;
ID3D11Texture2D* pTexture2D;
pDevice->OpenSharedResource1(
handle,
__uuidof(ID3D11Texture2D),
(void**)&pTexture2D);
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 7 のWindows 8とプラットフォーム更新プログラム [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2008 R2 のWindows Server 2012とプラットフォーム更新プログラム [デスクトップ アプリ |UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | d3d11_1.h |
Library | D3D11.lib |