PFND3DDDI_QUERYRESIDENCYCB funzione di callback (d3dumddi.h)
La funzione pfnQueryResidencyCb esegue una query sullo stato di residenza di una risorsa o di un elenco di allocazioni.
Sintassi
PFND3DDDI_QUERYRESIDENCYCB Pfnd3dddiQueryresidencycb;
HRESULT Pfnd3dddiQueryresidencycb(
HANDLE hDevice,
const D3DDDICB_QUERYRESIDENCY *unnamedParam2
)
{...}
Parametri
hDevice
Handle per il dispositivo di visualizzazione (contesto grafico).
unnamedParam2
pData [in, out]
Puntatore a una struttura D3DDDICB_QUERYRESIDENCY che descrive lo stato di residenza di una risorsa o un elenco di allocazioni.
Valore restituito
pfnQueryResidencyCb restituisce uno dei valori seguenti:
Codice restituito | Descrizione |
---|---|
S_OK | Lo stato di residenza è stato restituito correttamente. |
E_INVALIDARG | I parametri sono stati convalidati e sono stati determinati come non corretti. |
Questa funzione potrebbe anche restituire altri valori HRESULT.
Commenti
Il driver di visualizzazione in modalità utente può chiamare la funzione pfnQueryResidencyCb per eseguire una query sullo stato di residenza delle allocazioni tramite una risorsa o tramite un elenco di allocazioni. Se il driver esegue una query sullo stato di residenza delle allocazioni tramite una risorsa, vengono eseguite query su tutte le allocazioni appartenenti alla risorsa. In genere, il driver di visualizzazione in modalità utente esegue una query sulla residenza di una risorsa o un elenco di allocazioni dopo che il runtime di Microsoft Direct3D chiama la funzione QueryResourceResidency o QueryResourceResidencyDXGI del driver di visualizzazione in modalità utente per determinare la residenza di una risorsa. Tuttavia, il driver di visualizzazione in modalità utente può eseguire query sulla residenza di una risorsa o un elenco di allocazioni in qualsiasi momento.
Esempio
Nell'esempio di codice seguente viene illustrato come eseguire una query sullo stato di residenza.
HRESULT
CD3DContext::QueryResourceResidency(CONST D3DDDIARG_QUERYRESOURCERESIDENCY* pQRR)
{
D3DDDICB_QUERYRESIDENCY queryRes;
D3DDDI_RESIDENCYSTATUS resStatus = (D3DDDI_RESIDENCYSTATUS)0;
HRESULT hr;
BOOL bPartInSharedMem = FALSE;
for (UINT i = 0; i < pQRR->NumResources; i++) {
memset(&queryRes, 0, sizeof(queryRes));
queryRes.hResource = m_RTbl[(DWORD)(DWORD_PTR)pQRR->pHandleList[i]].m_hResRuntime;
if (! queryRes.hResource) {
return (DDERR_INVALIDPARAMS);
}
queryRes.pResidencyStatus = &resStatus;
hr = m_d3dCallbacks.pfnQueryResidencyCb(m_hD3D, &queryRes);
if (FAILED(hr)) {
return (hr);
}
switch (resStatus) {
case D3DDDI_RESIDENCYSTATUS_NOTRESIDENT:
return S_NOT_RESIDENT;
case D3DDDI_RESIDENCYSTATUS_RESIDENTINSHAREDMEMORY:
bPartInSharedMem = TRUE;
break;
case D3DDDI_RESIDENCYSTATUS_RESIDENTINGPUMEMORY:
break;
default:
return DDERR_GENERIC;
}
}
if (bPartInSharedMem) {
return S_RESIDENT_IN_SHARED_MEMORY;
}
else {
return S_OK;
}
}
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) |