PFND3DDDI_SETPRIORITYCB funzione di callback (d3dumddi.h)

La funzione pfnSetPriorityCb imposta il livello di priorità di una risorsa o un elenco di allocazioni.

Sintassi

PFND3DDDI_SETPRIORITYCB Pfnd3dddiSetprioritycb;

HRESULT Pfnd3dddiSetprioritycb(
  HANDLE hDevice,
  D3DDDICB_SETPRIORITY *unnamedParam2
)
{...}

Parametri

hDevice

Handle per il dispositivo di visualizzazione (contesto grafico).

unnamedParam2

pData [in]

Puntatore a una struttura D3DDDICB_SETPRIORITY che descrive il livello di priorità per impostare una risorsa o un elenco di allocazioni su.

Valore restituito

pfnSetPriorityCb restituisce uno dei valori seguenti:

Codice restituito Descrizione
S_OK Il livello di priorità è stato impostato correttamente.
E_INVALIDARG I parametri sono stati convalidati e determinati per essere non corretti.

Questa funzione potrebbe anche restituire altri valori HRESULT.

Commenti

Il driver di visualizzazione in modalità utente può chiamare la funzione pfnSetPriorityCb per impostare la priorità della risorsa sottostante o dell'elenco di allocazioni. Se il livello di priorità di una risorsa è impostato, tutte le allocazioni appartenenti alla risorsa vengono impostate sul livello di priorità specificato. In genere, il driver di visualizzazione in modalità utente imposta la priorità di una risorsa o un elenco di allocazioni dopo che il runtime di Microsoft Direct3D chiama la funzione SetPriority o SetResourcePriorityDXGI per impostare la priorità di rimozione dalla memoria per una risorsa. Tuttavia, il driver di visualizzazione in modalità utente può impostare la priorità delle allocazioni in qualsiasi momento.

Dopo che un'applicazione richiede di impostare il livello di priorità di una superficie, il driver di visualizzazione in modalità utente deve impostare la risorsa o l'elenco di allocazioni appropriate al livello di priorità specificato dall'applicazione.

Nota I livelli di priorità sono solo un suggerimento per la gestione memoria video; possono essere ignorati dal gestore della memoria in varie condizioni.
 
Una priorità di allocazione definisce sia la probabilità che l'allocazione rimanga residente che la probabilità che la gestione memoria video cercherà di rispettare la preferenza del driver per la posizione dell'allocazione. I livelli di priorità seguenti sono definiti nel file di intestazione D3dukmdt.h:

Il driver può usare i livelli di priorità diversi dai valori definiti precedente quando appropriato. Ad esempio, contrassegnando un'allocazione con un livello di priorità di 0x78000001 indica che l'allocazione è leggermente superiore alla normale.

Esempio

Nell'esempio di codice seguente viene illustrato come impostare il livello di priorità.

HRESULT CD3DContext::SetPriority(CONST D3DDDIARG_SETPRIORITY* pSetPriority) {
    DWORD  dwSurfaceHandle = (DWORD)(DWORD_PTR)pSetPriority->hResource;
    CResource   &res = m_RTbl[dwSurfaceHandle];
    D3DDDICB_SETPRIORITY    setPri;
    UINT                    priority;

    priority = pSetPriority->Priority;

    memset(&setPri, 0, sizeof(setPri));

    setPri.hResource   = res.m_hResRuntime;
    setPri.pPriorities = &priority;

    return (m_d3dCallbacks.pfnSetPriorityCb(m_hD3D, &setPri));
}

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

D3DDDICB_SETPRIORITY

D3DDDI_DEVICECALLBACKS

DxgkCbCreateContextAllocation

SetPriority

SetResourcePriorityDXGI