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