Compartir a través de


PFND3DDDI_QUERYRESIDENCYCB función de devolución de llamada (d3dumddi.h)

La función pfnQueryResidencyCb consulta el estado de residencia de un recurso o una lista de asignaciones.

Sintaxis

PFND3DDDI_QUERYRESIDENCYCB Pfnd3dddiQueryresidencycb;

HRESULT Pfnd3dddiQueryresidencycb(
  HANDLE hDevice,
  const D3DDDICB_QUERYRESIDENCY *unnamedParam2
)
{...}

Parámetros

hDevice

Identificador del dispositivo de visualización (contexto de gráficos).

unnamedParam2

pData [in, out]

Puntero a una estructura de D3DDDICB_QUERYRESIDENCY que describe el estado de residencia de un recurso o una lista de asignaciones.

Valor devuelto

pfnQueryResidencyCb devuelve uno de los siguientes valores:

Código devuelto Descripción
S_OK El estado de residencia se devolvió correctamente.
E_INVALIDARG Los parámetros se validaron y determinaron que son incorrectos.

Esta función también podría devolver otros valores HRESULT.

Comentarios

El controlador de pantalla en modo de usuario puede llamar a la función pfnQueryResidencyCb para consultar el estado de residencia de las asignaciones a través de un recurso o mediante una lista de asignaciones. Si el controlador consulta el estado de residencia de las asignaciones a través de un recurso, se consultan todas las asignaciones que pertenecen al recurso. Normalmente, el controlador de visualización en modo de usuario consulta la residencia de un recurso o una lista de asignaciones después de que el tiempo de ejecución de Microsoft Direct3D llame a la función QueryResourceResidency o QueryResourceResidencyDXGI del controlador de visualización en modo de usuario para determinar la residencia de un recurso. Sin embargo, el controlador de visualización en modo de usuario puede consultar la residencia de un recurso o una lista de asignaciones en cualquier momento.

Ejemplos

En el ejemplo de código siguiente se muestra cómo consultar el estado de residencia.

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;
    }
}

Requisitos

Requisito Value
Cliente mínimo compatible Disponible en Windows Vista y versiones posteriores de los sistemas operativos Windows.
Plataforma de destino Escritorio
Encabezado d3dumddi.h (incluya D3dumddi.h)

Consulte también

D3DDDICB_QUERYRESIDENCY

D3DDDI_DEVICECALLBACKS

QueryResourceResidency

QueryResourceResidencyDXGI