D3DKMTShareObjects 函数 (d3dkmthk.h)

D3DKMTShareObjects 共享使用 D3KMTCreateAllocation创建的资源对象,D3KMTCreateAllocation2D3DKMTCreateKeyedMutex2D3DKMTCreateSynchronizationObject2 函数。

语法

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_FLAGSD3DDDI_SYNCHRONIZATIONOBJECT_FLAGS 结构中可用。

此函数必须仅将 hObjects 参数指定为以下输入对象数组类型的组合的句柄:

  • 分配
  • 分配、键化互斥体和同步对象
  • 同步对象

作系统将拒绝任何其他输入句柄组合。

要求

要求 价值
最低支持的客户端 Windows 8
支持的最低服务器 Windows Server 2012
目标平台 普遍
标头 d3dkmthk.h (包括 D3dkmthk.h)
Gdi32.lib
DLL Gdi32.dll

另请参阅

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS

D3DKMTCreateAllocation

D3DKMTCreateAllocation2

D3DKMTCreateKeyedMutex2

D3DKMTCreateSynchronizationObject2

D3DKMT_CREATEALLOCATIONFLAGS

D3DKMT_CREATEKEYEDMUTEX2_FLAGS