PFND3DDDI_DEALLOCATECB función de devolución de llamada (d3dumddi.h)

La función de devolución de llamada pfnDeallocateCb libera asignaciones o un objeto de recurso en modo kernel si se creó el objeto de recurso.

Sintaxis

PFND3DDDI_DEALLOCATECB Pfnd3dddiDeallocatecb;

HRESULT Pfnd3dddiDeallocatecb(
  HANDLE hDevice,
  const D3DDDICB_DEALLOCATE *unnamedParam2
)
{...}

Parámetros

hDevice

Identificador del dispositivo de visualización (contexto de gráficos).

unnamedParam2

pData [in]

Puntero a una estructura de D3DDDICB_DEALLOCATE que describe el recurso que se va a liberar.

Valor devuelto

pfnDeallocateCb devuelve uno de los siguientes valores:

Código devuelto Descripción
S_OK La memoria se liberó correctamente.
E_INVALIDARG Los parámetros se validaron y determinaron que son incorrectos.

Esta función también puede devolver otros valores HRESULT.

Comentarios

El controlador de pantalla en modo de usuario puede liberar asignaciones de las siguientes maneras:

  • Individualmente, estableciendo el miembro hResource de la estructura D3DDDICB_DEALLOCATE a la que apunta pData en NULL y rellenando la matriz en el miembro HandleList de D3DDDICB_DEALLOCATE con identificadores de las asignaciones para liberar
  • En un grupo, estableciendo hResource en un identificador de recursos cuyas asignaciones se van a liberar. Si hResource no es NULL, se omiten los miembros HandleList y NumAllocations de D3DDDICB_DEALLOCATE.
Tenga en cuenta que si el controlador de visualización en modo de usuario establece hResource en NULL y rellena todos los elementos de matriz de HandleList para liberar todas las asignaciones, el controlador debe llamar posteriormente a la función pfnDeallocateCb de nuevo para liberar solo el recurso estableciendo hResource en el identificador del recurso.

Tenga en cuenta que la función pfnDeallocateCb es distinta de la función DestroyResource o DestroyResource(D3D10) del controlador de pantalla en modo de usuario. Sin embargo, el controlador de pantalla en modo de usuario normalmente llama a pfnDeallocateCb en respuesta a una llamada a su función DestroyResource o DestroyResource(D3D10).

Nota de Direct3D versión 9: Para obtener más información sobre cómo crear y destruir recursos, consulte Control de la creación y destrucción de recursos.

Nota de Direct3D versión 11: Para obtener más información sobre cómo el controlador llama a pfnDeallocateCb, consulte Cambios de Direct3D 10.

En el ejemplo de código siguiente se muestra cómo liberar un recurso.

    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;
    }

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)

Consulte también

D3DDDICB_DEALLOCATE

D3DDDI_DEVICECALLBACKS

DestroyResource

DestroyResource(D3D10)

pfnAllocateCb