XTaskQueueDuplicateHandle
XTaskQueueHandle 개체를 복제합니다.
구문
HRESULT XTaskQueueDuplicateHandle(
XTaskQueueHandle queueHandle,
XTaskQueueHandle* duplicatedHandle
)
매개 변수
queueHandle _In_
형식: XTaskQueueHandle
참조 큐입니다.
duplicatedHandle _Out_
형식: XTaskQueueHandle*
복제된 큐 핸들입니다.
반환 값
형식: HRESULT
HRESULT 성공 또는 오류 코드입니다.
비고
XTaskQueueHandle 개체를 닫으려면 XTaskQueueCloseHandle을 사용합니다.
다음 예에서는 작업 큐 핸들을 복제하는 방법을 보여줍니다. 장기 실행 작업이 있는 경우 해당 작업 기간 동안 작업 큐 핸들을 복제하려 할 수 있습니다. 이 기능은 사용자에게 큐가 필요한 동안 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 콘솔