PFND3DDDI_QUERYRESIDENCYCB Rückruffunktion (d3dumddi.h)
Die pfnQueryResidencyCb-Funktion fragt den Residency-Status einer Ressource oder Liste der Zuordnungen ab.
Syntax
PFND3DDDI_QUERYRESIDENCYCB Pfnd3dddiQueryresidencycb;
HRESULT Pfnd3dddiQueryresidencycb(
HANDLE hDevice,
const D3DDDICB_QUERYRESIDENCY *unnamedParam2
)
{...}
Parameter
hDevice
Ein Handle für das Anzeigegerät (Grafikkontext).
unnamedParam2
pData- [in, out]
Ein Zeiger auf eine D3DDDICB_QUERYRESIDENCY Struktur, die den Residency-Status einer Ressource oder liste der Zuordnungen beschreibt.
Rückgabewert
pfnQueryResidencyCb gibt einen der folgenden Werte zurück:
Rückgabecode | Beschreibung |
---|---|
S_OK | Der Residency-Status wurde erfolgreich zurückgegeben. |
E_INVALIDARG | Parameter wurden überprüft und ermittelt, dass sie falsch sind. |
Diese Funktion kann auch andere HRESULT-Werte zurückgeben.
Bemerkungen
Der Anzeigetreiber für den Benutzermodus kann die pfnQueryResidencyCb--Funktion aufrufen, um den Residency-Status von Zuordnungen entweder über eine Ressource oder über eine Liste von Zuordnungen abzufragen. Wenn der Treiber den Residency-Status von Zuordnungen über eine Ressource abfragt, werden alle Zuordnungen abgefragt, die zur Ressource gehören. In der Regel fragt der Anzeigetreiber im Benutzermodus die Residency einer Ressource oder Liste von Zuordnungen ab, nachdem die Microsoft Direct3D-Laufzeit die QueryResourceResidency- oder QueryResourceResidencyDXGI--Funktion des Benutzermodus aufruft, um die Residency einer Ressource zu bestimmen. Der Anzeigetreiber im Benutzermodus kann jedoch jederzeit die Residency einer Ressource oder Liste der Zuordnungen abfragen.
Beispiele
Das folgende Codebeispiel zeigt, wie Sie den Residency-Status abfragen.
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;
}
}
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Verfügbar in Windows Vista und höheren Versionen der Windows-Betriebssysteme. |
Zielplattform- | Desktop |
Header- | d3dumddi.h (include D3dumddi.h) |