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