> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XTaskQueueDuplicateHandle

> XTaskQueueDuplicateHandle

# XTaskQueueDuplicateHandle

Duplique un objet XTaskQueueHandle.

## Syntaxe

```cpp theme={null}
HRESULT XTaskQueueDuplicateHandle(  
         XTaskQueueHandle queueHandle,  
         XTaskQueueHandle* duplicatedHandle  
)  
```

### Paramètres

*queueHandle*   \_In\_\
Type : XTaskQueueHandle

File d'attente à référencer.

*duplicatedHandle*   \_Out\_\
Type : XTaskQueueHandle\*

Handle de file d'attente dupliqué.

### Valeur de retour

Type : HRESULT

Code de réussite ou d'erreur HRESULT.

## Remarques

Utilisez [XTaskQueueCloseHandle](/fr/reference/system/xtaskqueue/functions/xtaskqueueclosehandle) pour fermer l'objet **XTaskQueueHandle**.

L'exemple suivant montre comment dupliquer un handle de file d'attente de tâches. Si vous avez un travail de longue durée, vous pouvez dupliquer le handle de file d'attente de tâches pendant la durée de ce travail. Cela empêche quiconque appelle la fonction [XTaskQueueCloseHandle](/fr/reference/system/xtaskqueue/functions/xtaskqueueclosehandle) de fermer la file d'attente alors que vous en avez encore besoin.

```cpp theme={null}
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);
    }
}
```

## Configuration requise

**En-tête :** XTaskQueue.h

**Bibliothèque :** xgameruntime.lib

**Plateformes prises en charge :** Windows, consoles de la famille XBOX One et consoles XBOX Series

## Voir aussi

[Membres XTaskQueue](/fr/reference/system/xtaskqueue/xtaskqueue_members)\
[Modèle de programmation asynchrone](/fr/build/core-features/common/async/async-programming-model)\
[Conception de la file d'attente de tâches asynchrones](/fr/build/core-features/common/async/async-task-queue-design)


## Related topics

- [XTaskQueueDuplicateHandle](/reference/system/xtaskqueue/functions/xtaskqueueduplicatehandle.md)
- [XblGetAsyncQueue](/reference/live/xsapi-c/xbox_live_global_c/functions/xblgetasyncqueue.md)
- [XTaskQueue](/reference/system/xtaskqueue/xtaskqueue_members.md)
