PFND3DDDI_QUERYRESIDENCYCB fungsi panggilan balik (d3dumddi.h)
Fungsi pfnQueryResidencyCb meminta status residensi sumber daya atau daftar alokasi.
Sintaks
PFND3DDDI_QUERYRESIDENCYCB Pfnd3dddiQueryresidencycb;
HRESULT Pfnd3dddiQueryresidencycb(
HANDLE hDevice,
const D3DDDICB_QUERYRESIDENCY *unnamedParam2
)
{...}
Parameter
hDevice
Handel ke perangkat tampilan (konteks grafis).
unnamedParam2
pData [masuk, keluar]
Penunjuk ke struktur D3DDDICB_QUERYRESIDENCY yang menjelaskan status residensi sumber daya atau daftar alokasi.
Nilai kembali
pfnQueryResidencyCb mengembalikan salah satu nilai berikut:
Menampilkan kode | Deskripsi |
---|---|
S_OK | Status residensi berhasil dikembalikan. |
E_INVALIDARG | Parameter divalidasi dan ditentukan salah. |
Fungsi ini mungkin juga mengembalikan nilai HRESULT lainnya.
Keterangan
Driver tampilan mode pengguna dapat memanggil fungsi pfnQueryResidencyCb untuk mengkueri status residensi alokasi baik melalui sumber daya atau melalui daftar alokasi. Jika driver meminta status residensi alokasi melalui sumber daya, semua alokasi yang termasuk dalam sumber daya akan dikueri. Biasanya, driver tampilan mode pengguna meminta residensi sumber daya atau daftar alokasi setelah runtime Microsoft Direct3D memanggil fungsi QueryResourceResidency atau QueryResourceResidencyDXGI driver tampilan pengguna untuk menentukan residensi sumber daya. Namun, driver tampilan mode pengguna dapat meminta residensi sumber daya atau daftar alokasi kapan saja.
Contoh
Contoh kode berikut menunjukkan cara mengkueri status residensi.
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;
}
}
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Tersedia di Windows Vista dan versi yang lebih baru dari sistem operasi Windows. |
Target Platform | Desktop |
Header | d3dumddi.h (termasuk D3dumddi.h) |