XTaskQueueDuplicateHandle
复制 XTaskQueueHandle 对象。
语法
HRESULT XTaskQueueDuplicateHandle(
XTaskQueueHandle queueHandle,
XTaskQueueHandle* duplicatedHandle
)
参数
queueHandle _In_
类型:XTaskQueueHandle
要引用的队列。
duplicatedHandle _Out_
类型:XTaskQueueHandle*
复制的队列句柄。
返回值
类型:HRESULT
HRESULT 成功或错误代码。
备注
使用 XTaskQueueCloseHandle 关闭 XTaskQueueHandle 对象。
以下示例演示如何复制任务队列句柄。 如果您有长时间运行的工作,可能希望在工作期间复制任务队列句柄。 这可以防止在您仍需要队列时调用 XTaskQueueCloseHandle 函数的人关闭该队列。
void DuplicatingTaskQueueHandle()
{
XTaskQueueHandle queue;
HRESULT hr = XTaskQueueCreate(
XTaskQueueDispatchMode::Manual,
XTaskQueueDispatchMode::Manual,
&queue);
if (FAILED(hr))
{
printf("failed to create task queue: 0x%x\r\n", hr);
return;
}
class LongRunningWork
{
public:
HRESULT Initialize(XTaskQueueHandle queue)
{
return XTaskQueueDuplicateHandle(queue, &m_queue);
}
~LongRunningWork()
{
if (m_queue != nullptr)
{
XTaskQueueCloseHandle(m_queue);
}
}
private:
XTaskQueueHandle m_queue = nullptr;
};
LongRunningWork work;
hr = work.Initialize(queue);
// Note that LongRunningWork's queue handle is still valid.
XTaskQueueCloseHandle(queue);
if (FAILED(hr))
{
printf("Failed to duplicate queue handle: 0x%x\r\n", hr);
}
}
要求
头文件:XTaskQueue.h
库:xgameruntime.lib
支持平台:Windows、Xbox One 系列主机和 Xbox Series 主机