PFND3DDDI_DEALLOCATECB função de retorno de chamada (d3dumddi.h)

A função de retorno de chamada pfnDeallocateCb libera alocações ou um objeto de recurso no modo kernel se o objeto de recurso foi criado.

Sintaxe

PFND3DDDI_DEALLOCATECB Pfnd3dddiDeallocatecb;

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

Parâmetros

hDevice

Um identificador para o dispositivo de exibição (contexto gráfico).

unnamedParam2

pData [in]

Um ponteiro para uma estrutura D3DDDICB_DEALLOCATE que descreve o recurso a ser liberado.

Retornar valor

pfnDeallocateCb retorna um dos seguintes valores:

Código de retorno Descrição
S_OK A memória foi liberada 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 liberar alocações das seguintes maneiras:

  • Individualmente, definindo o membro hResource da estrutura D3DDDICB_DEALLOCATE que é apontado por pData como NULL e preenchendo a matriz no membro HandleList de D3DDDICB_DEALLOCATE com identificadores das alocações a serem lançadas
  • Em um grupo, definindo hResource como um identificador de recurso cujas alocações devem ser liberadas. Se hResource não for NULL, os membros HandleList e NumAllocations de D3DDDICB_DEALLOCATE serão ignorados.
Observe que, se o driver de exibição do modo de usuário definir hResource como NULL e preencher todos os elementos de matriz no HandleList para liberar todas as alocações, o driver deverá chamar posteriormente a função pfnDeallocateCb novamente para liberar apenas o recurso definindo hResource para o identificador para o recurso.

Observe que a função pfnDeallocateCb é distinta da função DestroyResource ou DestroyResource(D3D10) do driver de exibição do usuário. No entanto, o driver de exibição do modo de usuário normalmente chama pfnDeallocateCb em resposta a uma chamada para sua função DestroyResource ou DestroyResource(D3D10).

Observação do Direct3D versão 9: Para obter mais informações sobre como criar e destruir recursos, consulte Manipulando a criação e a destruição de recursos.

Observação do Direct3D versão 11: Para obter mais informações sobre como o driver chama pfnDeallocateCb, consulte Alterações do Direct3D 10.

O exemplo de código a seguir mostra como liberar um 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 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)

Confira também

D3DDDICB_DEALLOCATE

D3DDDI_DEVICECALLBACKS

DestroyResource

DestroyResource(D3D10)

pfnAllocateCb