D3DKMTShareObjects 関数 (d3dkmthk.h)

D3DKMTShareObjects は、D3KMDTCreateAllocation、D3KMDTCreateAllocation2D3DKMTCreateKeyedMutex2および D3DKMTCreateSynchronizationObject2 関数で作成されたリソース オブジェクトを共有します。

構文

NTSTATUS D3DKMTShareObjects(
  [in]  UINT                cObjects,
  [in]  const D3DKMT_HANDLE *hObjects,
  [in]  POBJECT_ATTRIBUTES  pObjectAttributes,
  [in]  DWORD               dwDesiredAccess,
  [out] HANDLE              *phSharedNtHandle
);

パラメーター

[in] cObjects

hObjects パラメーターで指定されたリソース オブジェクトの数。 この値は 、D3DKMT_MAX_OBJECTS_PER_HANDLE以下である必要があります。

[in] hObjects

共有するリソース オブジェクトを指定するローカル カーネル モード ハンドルの配列へのポインター。 詳細については、「解説」をご覧ください。

[in] pObjectAttributes

リソース オブジェクトの属性を指定する OBJECT_ATTRIBUTES 構造体へのポインター。

[in] dwDesiredAccess

リソースの読み取りおよび書き込みアクセスを指定します。

GPU 同期オブジェクトの場合、 dwDesiredAccess は次のビット フィールド ( d3dukmdt.h で定義) の組み合わせにすることができます。

意味
STANDARD_RIGHTS_READ 同期オブジェクトを開くプロセスは、同期オブジェクトの状態を読み取ることができます。 このフラグを指定するか、オブジェクトにアクセスできません。
D3DDDI_SYNC_OBJECT_WAIT 同期オブジェクトを開くプロセスでは、同期オブジェクトの待機操作を発行できます。
D3DDDI_SYNC_OBJECT_SIGNAL 同期オブジェクトを開くプロセスでは、同期オブジェクトのシグナル操作を発行できます。
D3DDDI_SYNC_OBJECT_ALL_ACCESS 同期オブジェクトを開くプロセスは、同期オブジェクトに対して任意の操作を発行できます。

共有リソースの場合、必要なアクセスは、次のフラグ ( d3dkmthk.h で定義) の組み合わせとして指定できます。

意味
STANDARD_RIGHTS_READ リソースを開くプロセスは、読み取りアクセス権を持つことができます。 このフラグを指定するか、オブジェクトにアクセスできません。
SHARED_ALLOCATION_WRITE リソースを開くプロセスは、書き込みアクセス権を持つことができます。 このアクセス フラグが指定されていない場合、リソースは読み取り専用として開かれます。
SHARED_ALLOCATION_ALL_ACCESS リソースを開くプロセスは、 オブジェクトへのすべてのアクセス権を持つことができます。

[out] phSharedNtHandle

リソース オブジェクトを指定する共有 NT ハンドルへのポインター。

NtSecuritySharing フラグ値が設定されていない場合、このパラメーターは NULL になります。 詳細については、「解説」をご覧ください。

戻り値

メソッドは、操作 が成功した場合STATUS_SUCCESS を返します。 それ以外の場合、このメソッドは適切な NTSTATUS エラー コードを返す可能性があります。

注釈

D3DKMTShareObjects を使用して共有するオブジェクトは、まず NtSecuritySharing フラグ値を設定して作成する必要があります。 このフラグ値は、 D3DKMT_CREATEALLOCATIONFLAGSD3DKMT_CREATEKEYEDMUTEX2_FLAGSおよびD3DDDI_SYNCHRONIZATIONOBJECT_FLAGS 構造体で使用できます。

この関数では、入力オブジェクト配列型の次の組み合わせにのみ 、hObjects パラメーターを使用してハンドルを指定する必要があります。

  • 割り当て
  • 割り当て、キー付きミューテックス、および同期オブジェクト
  • 同期オブジェクト

オペレーティング システムは、他の入力ハンドルの組み合わせを拒否します。

要件

要件
サポートされている最小のクライアント Windows 8
サポートされている最小のサーバー Windows Server 2012
対象プラットフォーム ユニバーサル
Header d3dkmthk.h (D3dkmthk.h を含む)
Library Gdi32.lib
[DLL] Gdi32.dll

こちらもご覧ください

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS

D3DKMTCreateAllocation

D3DKMTCreateAllocation2

D3DKMTCreateKeyedMutex2

D3DKMTCreateSynchronizationObject2

D3DKMT_CREATEALLOCATIONFLAGS

D3DKMT_CREATEKEYEDMUTEX2_FLAGS