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) |