Compartilhar via


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

A função pfnSetDisplayModeCb define a alocação usada para verificar a exibição.

Sintaxe

PFND3DDDI_SETDISPLAYMODECB Pfnd3dddiSetdisplaymodecb;

HRESULT Pfnd3dddiSetdisplaymodecb(
  HANDLE hDevice,
  D3DDDICB_SETDISPLAYMODE *unnamedParam2
)
{...}

Parâmetros

hDevice

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

unnamedParam2

pData [dentro, fora]

Um ponteiro para uma estrutura de D3DDDICB_SETDISPLAYMODE que descreve a alocação usada para verificar.

Valor de retorno

pfnSetDisplayModeCb retorna um dos seguintes valores:

Código de retorno descrição
S_OK O modo de exibição foi definido com êxito.
E_INVALIDARG Os parâmetros foram validados e determinados como incorretos.
D3DDDIERR_INCOMPATIBLEPRIVATEFORMAT O driver de exibição do modo de usuário deve converter o formato da superfície associada à alocação que o membro hPrimaryAllocation de D3DDDICB_SETDISPLAYMODE especifica no atributo de formato especificado pelo PrivateDriverFormatAttributemember de D3DDDICB_SETDISPLAYMODE. Em seguida, o driver deve chamar pfnSetDisplayModeCb novamente. O driver pode alocar uma nova alocação, executar uma transferência de bit-block de conversão (bitblt) da superfície primária antiga para a nova e, em seguida, destruir o primário antigo, desde que o driver use o novo identificador de alocação para essa alocação para todas as operações subsequentes. O driver deve repetir esse processo até que pfnSetDisplayModeCb retorne um valor retornado diferente.

Essa função também pode retornar outros valores HRESULT.

Observações

Depois que o runtime do Microsoft Direct3D chama a função SetDisplayMode ou setDisplayModeDXGI do driver de exibição para definir a superfície primária a ser verificada para a exibição, o driver de exibição no modo de usuário chama a função pfnSetDisplayModeCb para definir a alocação primária subjacente usada para verificação.

Observação Antes que o driver de exibição no modo de usuário chame pfnSetDisplayModeCb para definir um novo modo de exibição que use um formato estendido, um método de amostragem múltipla ou ambos, o driver deve garantir que o modo de exibição GDI atual tenha a mesma resolução que o novo modo de exibição; caso contrário, pfnSetDisplayModeCb retorna E_INVALIDARG.
 

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

Exemplos

O exemplo de código a seguir mostra como definir a alocação para verificação para a exibição.

HRESULT CD3DContext::SetDisplayMode(CONST D3DDDIARG_SETDISPLAYMODE* pSetDisplayMode) {
    DWORD   dwSrcSurf = ((DWORD)(DWORD_PTR)pSetDisplayMode->hResource) + pSetDisplayMode->SubResourceIndex;
    HRESULT hr;
    // Timestamp the source surface
    m_RTbl[dwSrcSurf].m_qwBatch = m_qwBatch;
    // Send the presentation request to the display miniport driver
    D3DDDICB_SETDISPLAYMODE SetDisplayModeCBData = {0};

    SetDisplayModeCBData.hPrimaryAllocation = R200GetSurfaceAllocHandle(m_pR200Ctx,
                                        dwSrcSurf);

    hr = m_d3dCallbacks.pfnSetDisplayModeCb(m_hD3D, &SetDisplayModeCBData);

    return (hr);
}

Requisitos

Requisito Valor
de cliente com suporte mínimo Disponível no Windows Vista e versões posteriores dos sistemas operacionais Windows.
da Plataforma de Destino Área de trabalho
cabeçalho d3dumddi.h (inclua D3dumddi.h)

Consulte também

D3DDDICB_SETDISPLAYMODE

D3DDDI_DEVICECALLBACKS

SetDisplayMode

SetDisplayModeDXGI