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.
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) |