PFND3DDDI_QUERYRESIDENCYCB fonction de rappel (d3dumddi.h)
La fonction pfnQueryResidencyCb interroge le status de résidence d’une ressource ou d’une liste d’allocations.
Syntaxe
PFND3DDDI_QUERYRESIDENCYCB Pfnd3dddiQueryresidencycb;
HRESULT Pfnd3dddiQueryresidencycb(
HANDLE hDevice,
const D3DDDICB_QUERYRESIDENCY *unnamedParam2
)
{...}
Paramètres
hDevice
Handle pour le périphérique d’affichage (contexte graphique).
unnamedParam2
pData [in, out]
Pointeur vers une structure de D3DDDICB_QUERYRESIDENCY qui décrit la status de résidence d’une ressource ou d’une liste d’allocations.
Valeur retournée
pfnQueryResidencyCb retourne l’une des valeurs suivantes :
Code de retour | Description |
---|---|
S_OK | Le status de résidence a été retourné avec succès. |
E_INVALIDARG | Les paramètres ont été validés et déterminés comme incorrects. |
Cette fonction peut également retourner d’autres valeurs HRESULT.
Remarques
Le pilote d’affichage en mode utilisateur peut appeler la fonction pfnQueryResidencyCb pour interroger la status de résidence des allocations par le biais d’une ressource ou d’une liste d’allocations. Si le pilote interroge la résidence status d’allocations via une ressource, toutes les allocations qui appartiennent à la ressource sont interrogées. En règle générale, le pilote d’affichage en mode utilisateur interroge la résidence d’une ressource ou d’une liste d’allocations après que le runtime Microsoft Direct3D a appelé la fonction QueryResourceResidency ou QueryResourceResidencyDXGI du pilote d’affichage en mode utilisateur pour déterminer la résidence d’une ressource. Toutefois, le pilote d’affichage en mode utilisateur peut interroger la résidence d’une ressource ou d’une liste d’allocations à tout moment.
Exemples
L’exemple de code suivant montre comment interroger les status de résidence.
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;
}
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible dans Windows Vista et versions ultérieures des systèmes d’exploitation Windows. |
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | d3dumddi.h (inclure D3dumddi.h) |