IDXGIResource1::CreateSharedHandle メソッド (dxgi1_2.h)
共有リソースへのハンドルを作成します。 その後、返されたハンドルを複数の Direct3D デバイスで使用できます。
構文
HRESULT CreateSharedHandle(
[in, optional] const SECURITY_ATTRIBUTES *pAttributes,
[in] DWORD dwAccess,
[in, optional] LPCWSTR lpName,
[out] HANDLE *pHandle
);
パラメーター
[in, optional] pAttributes
2 つの独立した関連データ メンバー (省略可能なセキュリティ記述子と、子プロセスが返されたハンドルを継承できるかどうかを決定するブール値) を含む SECURITY_ATTRIBUTES 構造体へのポインター。
アプリケーションが作成する子プロセスが CreateSharedHandle
構造体の lpSecurityDescriptor メンバーは、リソースの SECURITY_DESCRIPTOR を指定します。 ランタイムが返されたハンドルに関連付けられているリソースに既定のセキュリティ記述子を割り当てる場合は、このメンバーを NULL に設定します。 リソースの既定のセキュリティ記述子の ACL は、作成者のプライマリ トークンまたは偽装トークンから取得されます。 詳細については、「同期オブジェクトのセキュリティとアクセス権のを
[in] dwAccess
リソースに対して要求されたアクセス権。 DXGI では、汎用アクセス権に加えて、次の値を定義します。
- DXGI_SHARED_RESOURCE_READ ( 0x80000000L ) - リソースへの読み取りアクセスを指定します。
- DXGI_SHARED_RESOURCE_WRITE ( 1 ) - リソースへの書き込みアクセスを指定します。
[in, optional] lpName
共有するリソースの名前。 名前はMAX_PATH文字に制限されています。 名前の比較では大文字と小文字が区別されます。
ID3D11Device1::OpenSharedResourceByName メソッドを呼び出して共有リソースに名前でアクセスする場合は、リソース名が必要です。 代わりに、
名前には、グローバル名前空間またはセッション名前空間にオブジェクトを明示的に作成するための "Global" または "Local" プレフィックスを付けることができます。 名前の残りの部分には、円記号 (\) を除く任意の文字を含めることができます。 詳細については、「カーネル オブジェクト名前空間
オブジェクトはプライベート名前空間に作成できます。 詳細については、「オブジェクト名前空間の」を参照してください。
[out] pHandle
共有するリソースに NT HANDLE 値を受け取る変数へのポインター。 このハンドルは、リソースにアクセスするための呼び出しで使用できます。
戻り値
成功した場合はS_OKを返します。それ以外の場合は、次のいずれかの値を返します。
- いずれかのパラメーターが無効な場合に DXGI_ERROR_INVALID_CALL します。
- 共有するリソースの指定された名前が既に別のリソースに関連付けられている場合は、DXGI_ERROR_NAME_ALREADY_EXISTS します。
- オブジェクトが保護された名前空間に作成されているかどうかをE_ACCESSDENIEDします。
- ハンドルを作成するのに十分なメモリが使用できない場合にE_OUTOFMEMORYします。
- DXGI_ERROR トピックで説明されているその他のエラー コードが考えられます。
備考
CreateSharedHandle
CreateSharedHandle
CreateSharedHandle
リソースを共有するために createSharedHandle
リソースを共有として作成し、NT ハンドルを使用するように指定しなかった場合、CreateSharedHandle
例
ID3D11Texture2D* pTexture2D;
ID3D11Device* pDevice;
pDevice->CreateTexture2D(…, &pTexture2D); // Create the texture as shared with NT HANDLEs.
HANDLE handle;
IDXGIResource1* pResource;
pTexture2D->QueryInterface(__uuidof(IDXGIResource1), (void**) &pResource);
pResource->CreateSharedHandle(NULL,
DXGI_SHARED_RESOURCE_READ | DXGI_SHARED_RESOURCE_WRITE,
NULL,
&handle);
// Pass the handle to another process to share the resource.
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 7 用 Windows 8 およびプラットフォーム更新プログラム [デスクトップ アプリ |UWP アプリ] |
サポートされる最小サーバー | Windows Server 2012 および Windows Server 2008 R2 用プラットフォーム更新プログラム [デスクトップ アプリ |UWP アプリ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | dxgi1_2.h |
ライブラリ | Dxgi.lib |