Compartilhar via


PFND3DDDI_QUERYRESIDENCYCB função de retorno de chamada (d3dumddi.h)

A função pfnQueryResidencyCb consulta a status de residência de um recurso ou lista de alocações.

Sintaxe

PFND3DDDI_QUERYRESIDENCYCB Pfnd3dddiQueryresidencycb;

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

Parâmetros

hDevice

Um identificador para o dispositivo de exibição (contexto gráfico).

unnamedParam2

pData [in, out]

Um ponteiro para uma estrutura de D3DDDICB_QUERYRESIDENCY que descreve o status de residência de um recurso ou lista de alocações.

Retornar valor

pfnQueryResidencyCb retorna um dos seguintes valores:

Código de retorno Descrição
S_OK O status de residência foi retornado com êxito.
E_INVALIDARG Os parâmetros foram validados e determinados como incorretos.

Essa função também pode retornar outros valores HRESULT.

Comentários

O driver de exibição do modo de usuário pode chamar a função pfnQueryResidencyCb para consultar a status de residência de alocações por meio de um recurso ou por meio de uma lista de alocações. Se o driver consultar o status de residência de alocações por meio de um recurso, todas as alocações que pertencem ao recurso serão consultadas. Normalmente, o driver de exibição do modo de usuário consulta a residência de um recurso ou lista de alocações depois que o runtime do Microsoft Direct3D chama a função QueryResourceResidency ou QueryResourceResidencyDXGI do driver de exibição no modo de usuário para determinar a residência de um recurso. No entanto, o driver de exibição do modo de usuário pode consultar a residência de um recurso ou uma lista de alocações a qualquer momento.

Exemplos

O exemplo de código a seguir mostra como consultar status de residência.

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 Valor
Cliente mínimo com suporte Disponível no Windows Vista e versões posteriores dos sistemas operacionais Windows.
Plataforma de Destino Área de Trabalho
Cabeçalho d3dumddi.h (inclua D3dumddi.h)

Confira também

D3DDDICB_QUERYRESIDENCY

D3DDDI_DEVICECALLBACKS

QueryResourceResidency

QueryResourceResidencyDXGI