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)

Lihat juga

D3DDDICB_QUERYRESIDENCY

D3DDDI_DEVICECALLBACKS

QueryResourceResidency

QueryResourceResidencyDXGI