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 本体