функция обратного вызова PFND3DDDI_QUERYRESIDENCYCB (d3dumddi.h)
Функция pfnQueryResidencyCb запрашивает состояние расположения ресурса или список выделений.
Синтаксис
PFND3DDDI_QUERYRESIDENCYCB Pfnd3dddiQueryresidencycb;
HRESULT Pfnd3dddiQueryresidencycb(
HANDLE hDevice,
const D3DDDICB_QUERYRESIDENCY *unnamedParam2
)
{...}
Параметры
hDevice
Дескриптор устройства отображения (графический контекст).
unnamedParam2
pData [in, out]
Указатель на структуру D3DDDICB_QUERYRESIDENCY , описывающую состояние расположения ресурса или списка выделений.
Возвращаемое значение
pfnQueryResidencyCb возвращает одно из следующих значений:
Код возврата | Описание |
---|---|
S_OK | Состояние места жительства успешно возвращено. |
E_INVALIDARG | Параметры были проверены и определены как неверные. |
Эта функция также может возвращать другие значения HRESULT.
Комментарии
Драйвер отображения пользовательского режима может вызывать функцию pfnQueryResidencyCb для запроса состояния расположения выделений с помощью ресурса или списка выделений. Если драйвер запрашивает состояние расположения выделений через ресурс, запрашиваются все выделения, принадлежащие ресурсу. Как правило, драйвер отображения пользовательского режима запрашивает место расположения ресурса или список выделений после того, как среда выполнения Microsoft Direct3D вызывает функцию QueryResourceResidency или QueryResourceResidencyDXGI драйвера отображения пользовательского режима, чтобы определить место расположения ресурса. Однако драйвер отображения пользовательского режима может запрашивать место расположения ресурса или список выделений в любое время.
Примеры
В следующем примере кода показано, как запросить состояние расположения.
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;
}
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно в Windows Vista и более поздних версиях операционных систем Windows. |
Целевая платформа | Персональный компьютер |
Верхняя часть | d3dumddi.h (включая D3dumddi.h) |