Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Duplicates a XTaskQueueHandle object.
Syntax
HRESULT XTaskQueueDuplicateHandle(
XTaskQueueHandle queueHandle,
XTaskQueueHandle* duplicatedHandle
)
Parameters
queueHandle _In_
Type: XTaskQueueHandle
The queue to reference.
duplicatedHandle _Out_
Type: XTaskQueueHandle*
The duplicated queue handle.
Return value
Type: HRESULT
HRESULT success or error code.
Remarks
Use XTaskQueueCloseHandle to close the XTaskQueueHandle object.
The following example demonstrates how to duplicate a task queue handle. If you have long-running work, you might want to duplicate the task queue handle for the duration of that work. This prevents anyone that calls the XTaskQueueCloseHandle function from closing the queue while you still need it.
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);
}
}
Requirements
Header: XTaskQueue.h
Library: xgameruntime.lib
Supported platforms: Windows, Xbox One family consoles and Xbox Series consoles
See also
XTaskQueue members
Asynchronous Programming Model
Async Task Queue Design