D3DKMTShareObjects 函数 (d3dkmthk.h)
D3DKMTShareObjects 共享使用 D3KMTCreateAllocation创建的资源对象,D3KMTCreateAllocation2D3DKMTCreateKeyedMutex2,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_CREATEALLOCATIONFLAGS、D3DKMT_CREATEKEYEDMUTEX2_FLAGS和 D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS 结构中可用。
此函数必须仅将 hObjects 参数指定为以下输入对象数组类型的组合的句柄:
- 分配
- 分配、键化互斥体和同步对象
- 同步对象
作系统将拒绝任何其他输入句柄组合。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 8 |
支持的最低服务器 | Windows Server 2012 |
目标平台 | 普遍 |
标头 | d3dkmthk.h (包括 D3dkmthk.h) |
库 | Gdi32.lib |
DLL | Gdi32.dll |
另请参阅
D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS