PFND3DDDI_QUERYRESIDENCYCB Rückruffunktion (d3dumddi.h)
Die pfnQueryResidencyCb-Funktion fragt die Residency-status einer Ressource oder einer Liste von 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 die status einer Ressource oder Einer Liste von Zuordnungen beschreibt.
Rückgabewert
pfnQueryResidencyCb gibt einen der folgenden Werte zurück:
Rückgabecode | Beschreibung |
---|---|
S_OK | Die residenz status wurde erfolgreich zurückgegeben. |
E_INVALIDARG | Die Parameter wurden überprüft und als falsch ermittelt. |
Diese Funktion gibt möglicherweise auch andere HRESULT-Werte zurück.
Hinweise
Der Anzeigetreiber für den Benutzermodus kann die pfnQueryResidencyCb-Funktion aufrufen, um die Residenz status von Zuordnungen entweder über eine Ressource oder über eine Liste von Zuordnungen abzufragen. Wenn der Treiber die Status der Residency-Zuordnungen über eine Ressource abfragt, werden alle Zuordnungen abgefragt, die zur Ressource gehören. In der Regel fragt der Anzeigetreiber für den Benutzermodus die Residenz einer Ressource oder einer Liste von Zuordnungen ab, nachdem die Microsoft Direct3D-Runtime die Funktion QueryResourceResidency oder QueryResourceResidencyDXGI des Benutzermodusanzeigetreibers aufgerufen hat, um die Residenz einer Ressource zu bestimmen. Der Anzeigetreiber für den Benutzermodus kann jedoch jederzeit die Residenz einer Ressource oder einer Liste von Zuordnungen abfragen.
Beispiele
Im folgenden Codebeispiel wird gezeigt, wie Sie die 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 |
---|---|
Unterstützte Mindestversion (Client) | Verfügbar in Windows Vista und höheren Versionen der Windows-Betriebssysteme. |
Zielplattform | Desktop |
Kopfzeile | d3dumddi.h (include D3dumddi.h) |