PFND3DDDI_SETASYNCCALLBACKSCB funzione di callback (d3dumddi.h)

La funzione pfnSetAsyncCallbacksCb notifica al runtime di Microsoft Direct3D se il runtime avvierà o arresterà la ricezione di chiamate alle funzioni di callback del runtime da un thread di lavoro.

Sintassi

PFND3DDDI_SETASYNCCALLBACKSCB Pfnd3dddiSetasynccallbackscb;

HRESULT Pfnd3dddiSetasynccallbackscb(
  HANDLE hDevice,
  BOOL Enable
)
{...}

Parametri

hDevice

Handle per il dispositivo di visualizzazione (contesto grafico).

Enable

Valore booleano che specifica se il runtime avvia o arresta la ricezione di chiamate alle funzioni di callback del runtime da un thread di lavoro. TRUE indica che il runtime inizierà a ricevere chiamate alle relative funzioni di callback da un thread di lavoro; FALSE indica che il runtime smetterà di ricevere chiamate alle relative funzioni di callback da un thread di lavoro.

Valore restituito

pfnSetAsyncCallbacksCb restituisce uno dei valori seguenti:

Codice restituito Descrizione
S_OK Il runtime Direct3D è stato informato correttamente.
E_INVALIDARG I parametri sono stati convalidati e sono stati determinati come non corretti.

Questa funzione potrebbe anche restituire altri valori HRESULT.

Commenti

Se un driver di visualizzazione in modalità utente implementa le proprie ottimizzazioni a più processori, ovvero il driver crea un thread di lavoro e elabora i comandi in tale thread, il driver deve chiamare pfnSetAsyncCallbacksCb per notificare al runtime Direct3D se il runtime avvierà o arresterà la ricezione di chiamate alle funzioni di callback del runtime dal thread di lavoro. Inoltre, tali driver non devono implementare le funzioni LockAsync, UnlockAsync e Rename . Ciò garantisce che il runtime non tenti di usare le proprie ottimizzazioni a più processori.

Il driver di visualizzazione in modalità utente può chiamare pfnSetAsyncCallbacksCb solo nel thread dell'applicazione principale, ovvero il thread che ha chiamato nel driver. Il thread di lavoro del driver non può chiamare pfnSetAsyncCallbacksCb. In qualsiasi momento, solo un thread che fa riferimento a un determinato dispositivo di rendering può essere eseguito in una qualsiasi delle funzioni di callback del runtime.

Prima che il driver di visualizzazione in modalità utente chiami una delle funzioni di callback del runtime in un thread diverso dal thread dell'applicazione principale, il driver deve passare TRUE al parametro Enable in una chiamata a pfnSetAsyncCallbacksCb. Prima che il driver di visualizzazione in modalità utente chiami una delle funzioni di callback del runtime nel thread dell'applicazione principale, il driver deve passare FALSE al parametro Enable in una chiamata a pfnSetAsyncCallbacksCb.

All'interno dell'implementazione di Flush per ogni dispositivo di rendering, il driver chiama pfnSetAsyncCallbacksCb e passa FALSE al parametro Enable .

Quando il driver passa TRUE al parametro Enable in una chiamata a pfnSetAsyncCallbacksCb, il runtime si trova in uno stato in cui non risponde immediatamente alle situazioni di perdita del dispositivo nelle relative funzioni di callback. Al contrario, quando il runtime rileva una perdita di un dispositivo in una funzione di callback in questo stato, imposta un bit che indica che l'evento si è verificato. Quando il driver passa FALSE al parametro Enable in una chiamata a pfnSetAsyncCallbacksCb, il runtime controlla il bit per determinare se si è verificato un dispositivo perso. Se il bit è impostato, il runtime esegue la gestione tipica del dispositivo perso. Dopo questo punto, il driver non riceve più la maggior parte delle chiamate alle relative funzioni dal runtime.

Solo le versioni DirectX 9 e DirectX 9L del runtime supportano pfnSetAsyncCallbacksCb. DirectX 10 e versioni successive del runtime impostano il membro pfnSetAsyncCallbacksCb della struttura D3DDDI_DEVICECALLBACKS su NULL quando il runtime chiama la funzione CreateDevice(D3D10) del driver di visualizzazione in modalità utente per creare un dispositivo di rendering.

Nota Le versioni DirectX precedenti alla 9 non supportano le ottimizzazioni a più processori.
 
I driver possono chiamare le funzioni di callback del runtime solo da un thread di lavoro se il runtime imposta in precedenza il membro pfnSetAsyncCallbacksCb di D3DDDI_DEVICECALLBACKS su non NULL in una chiamata alla funzione CreateDevice del driver.

Requisiti

Requisito Valore
Client minimo supportato Disponibile in Windows Vista e versioni successive dei sistemi operativi Windows.
Piattaforma di destinazione Desktop
Intestazione d3dumddi.h (include D3dumddi.h)

Vedi anche

CreateDevice

CreateDevice(D3D10)

D3DDDI_DEVICECALLBACKS

Svuotamento

LockAsync

Rinominare

UnlockAsync