次の方法で共有


ID3D11Fence::CreateSharedHandle メソッド (d3d11_3.h)

フェンス オブジェクトへの共有ハンドルを作成します。

このメソッドは、Direct3D 12 ID3D12Device::CreateSharedHandle メソッドと同等であり、Direct3D 11 と Direct3D 12 の間の相互運用を伴うシナリオで適用されます。 DirecX 11 では、ID3D11Device5::OpenSharedFence メソッドを使用して共有フェンス ハンドルを開くことができます。 DirecX 12 では、ID3D12Device::OpenSharedHandle メソッドを使用して共有フェンス ハンドルを開くことができます。

構文

HRESULT CreateSharedHandle(
  [in, optional] const SECURITY_ATTRIBUTES *pAttributes,
                 DWORD                     dwAccess,
  [in, optional] LPCWSTR                   lpName,
  [out]          HANDLE                    *pHandle
);

パラメーター

[in, optional] pAttributes

型: const SECURITY_ATTRIBUTES*

2 つの独立した関連するデータ メンバー (省略可能なセキュリティ記述子)、および子プロセスが返されたハンドルを継承できるかどうかを決定する ブール型 値の 2 つを含む SECURITY_ATTRIBUTES 構造体へのポインター。

アプリケーションが作成する子プロセスが CreateSharedHandleによって返されるハンドルを継承しないようにする場合、および返されたハンドルに関連付けられているリソースで既定のセキュリティ記述子を取得する場合は、このパラメーターを null 設定します。

構造体の lpSecurityDescriptor メンバーは、リソースの SECURITY_DESCRIPTOR を指定します。 ランタイムが返されたハンドルに関連付けられているリソースに既定のセキュリティ記述子を割り当てる場合は、このメンバーを NULL に設定します。 リソースの既定のセキュリティ記述子の ACL は、作成者のプライマリ トークンまたは偽装トークンから取得されます。 詳細については、「同期オブジェクトのセキュリティとアクセス権のを する」を参照してください。

dwAccess

型: DWORD

現在、このパラメーターが受け入れる唯一の値はGENERIC_ALLです。

[in, optional] lpName

型: LPCWSTR

NULL-terminated UNICODE 文字列。共有ヒープに関連付ける名前が含まれています。 名前はMAX_PATH文字に制限されています。 名前の比較では、大文字と小文字が区別されます。

名前 が既存のリソースの名前と一致する場合、CreateSharedHandle DXGI_ERROR_NAME_ALREADY_EXISTSで失敗します。 これは、これらのオブジェクトが同じ名前空間を共有しているために発生します。

名前には、グローバル名前空間またはセッション名前空間にオブジェクトを明示的に作成するための "Global" または "Local" プレフィックスを付けることができます。 名前の残りの部分には、円記号 (\) を除く任意の文字を含めることができます。 詳細については、「カーネル オブジェクト名前空間を参照してください。 高速ユーザー切り替えは、ターミナル サービス セッションを使用して実装されます。 カーネル オブジェクト名は、アプリケーションが複数のユーザーをサポートできるように、ターミナル サービスに関して概説されているガイドラインに従う必要があります。

オブジェクトはプライベート名前空間に作成できます。 詳細については、「オブジェクト名前空間の」を参照してください。

[out] pHandle

型: HANDLE*

共有するリソースに NT HANDLE 値を受け取る変数へのポインター。 このハンドルは、リソースにアクセスするための呼び出しで使用できます。

戻り値

型: HRESULT

成功した場合はS_OKを返します。それ以外の場合は、次のいずれかの値を返します。

  • いずれかのパラメーターが無効な場合に DXGI_ERROR_INVALID_CALL します。
  • 共有するリソースの指定された名前が既に別のリソースに関連付けられている場合は、DXGI_ERROR_NAME_ALREADY_EXISTS します。
  • オブジェクトが保護された名前空間に作成されているかどうかをE_ACCESSDENIEDします。
  • ハンドルを作成するのに十分なメモリが使用できない場合にE_OUTOFMEMORYします。
  • Direct3D 11 リターン コード」で説明されているその他のエラー コード 可能性があります。

備考

指定したフェンスの共有ハンドルを作成するには、フェンスが D3D11_FENCE_FLAG_SHARED または D3D11_FENCE_FLAG_SHARED_CROSS_ADAPTER フラグで作成されている必要があります。 詳細については、D3D11_FENCE_FLAG 列挙体を参照してください。

必要条件

要件 価値
ターゲット プラットフォーム の ウィンドウズ
ヘッダー d3d11_3.h
ライブラリ D3D11.lib
DLL D3D11.dll

関連項目

ID3D11Fence