функция обратного вызова PFND3DDDI_DEALLOCATECB (d3dumddi.h)
Функция обратного вызова pfnDeallocateCb освобождает выделения или объект ресурса в режиме ядра, если объект ресурса был создан.
Синтаксис
PFND3DDDI_DEALLOCATECB Pfnd3dddiDeallocatecb;
HRESULT Pfnd3dddiDeallocatecb(
HANDLE hDevice,
const D3DDDICB_DEALLOCATE *unnamedParam2
)
{...}
Параметры
hDevice
Дескриптор устройства отображения (графический контекст).
unnamedParam2
pData [in]
Указатель на структуру D3DDDICB_DEALLOCATE , описывающую освобождаемые ресурсы.
Возвращаемое значение
pfnDeallocateCb возвращает одно из следующих значений:
Код возврата | Описание |
---|---|
S_OK | Память была успешно освобождена. |
E_INVALIDARG | Параметры были проверены и определены как неверные. |
Эта функция также может возвращать другие значения HRESULT.
Комментарии
Драйвер отображения пользовательского режима может освобождать выделения следующими способами:
- По отдельности, задав элемент hResourceструктуры D3DDDICB_DEALLOCATE , на которую указывает pData , значение NULL и заполняя массив в элементе HandleList D3DDDICB_DEALLOCATE дескрипторами выделения для освобождения.
- В группе, задав для hResource дескриптор ресурса, выделения которого должны быть освобождены. Если значение hResource не равно NULL, элементы HandleList и NumAllocations D3DDDICB_DEALLOCATE игнорируются.
Обратите внимание, что функция pfnDeallocateCb отличается от функции DestroyResource или DestroyResource(D3D10) драйвера дисплея пользовательского режима. Однако драйвер отображения пользовательского режима обычно вызывает pfnDeallocateCb в ответ на вызов функции DestroyResource или DestroyResource(D3D10).
Direct3D версии 9 Примечание. Дополнительные сведения о создании и уничтожении ресурсов см. в разделе Обработка создания и уничтожения ресурсов.
Direct3D версии 11 Примечание. Дополнительные сведения о том, как драйвер вызывает pfnDeallocateCb, см. в разделе Изменения direct3D 10.
В следующем примере кода показано, как освободить ресурс.
D3DDDICB_DEALLOCATE deAllocCB;
HRESULT hr;
D3DKMT_HANDLE hKMAllocHandle;
memset(&deAllocCB, 0, sizeof(deAllocCB));
deAllocCB.hResource = m_hCurResRuntime;
hr = m_d3dCallbacks.pfnDeallocateCb(m_hD3D, &deAllocCB);
if ((m_hCurResRuntime) && (SUCCEEDED(hr))) {
m_bCurResFreed = TRUE;
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно в Windows Vista и более поздних версиях операционных систем Windows. |
Целевая платформа | Персональный компьютер |
Верхняя часть | d3dumddi.h (включая D3dumddi.h) |