Partilhar via


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

A função pfnSetAsyncCallbacksCb notifica o runtime do Microsoft Direct3D se o runtime iniciará ou interromperá o recebimento de chamadas para as funções de retorno de chamada do runtime de um thread de trabalho.

Sintaxe

PFND3DDDI_SETASYNCCALLBACKSCB Pfnd3dddiSetasynccallbackscb;

HRESULT Pfnd3dddiSetasynccallbackscb(
  HANDLE hDevice,
  BOOL Enable
)
{...}

Parâmetros

hDevice

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

Enable

Um valor booliano que especifica se o runtime iniciará ou interromperá o recebimento de chamadas para as funções de retorno de chamada do runtime de um thread de trabalho. TRUE indica que o runtime começará a receber chamadas para suas funções de retorno de chamada de um thread de trabalho; FALSE indica que o runtime interromperá o recebimento de chamadas para suas funções de retorno de chamada de um thread de trabalho.

Valor de retorno

pfnSetAsyncCallbacksCb retorna um dos seguintes valores:

Código de retorno Descrição
S_OK O runtime do Direct3D foi notificado com êxito.
E_INVALIDARG Os parâmetros foram validados e determinados como incorretos.

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

Observações

Se um driver de exibição no modo de usuário implementar suas próprias otimizações de vários processadores (ou seja, o driver cria um thread de trabalho e processa comandos nesse thread), o driver deve chamar pfnSetAsyncCallbacksCb para notificar o runtime do Direct3D se o runtime iniciará ou interromperá o recebimento de chamadas para as funções de retorno de chamada do runtime do thread de trabalho. Além disso, esses drivers não devem implementar as funções LockAsync, UnlockAsynce Renomear. Isso garante que o runtime não tente usar suas próprias otimizações de vários processadores.

O driver de exibição do modo de usuário pode chamar pfnSetAsyncCallbacksCb somente no thread principal do aplicativo (ou seja, o thread que chamou o driver). O thread de trabalho do driver não pode chamar pfnSetAsyncCallbacksCb. A qualquer momento, apenas um thread que referencia um dispositivo de renderização específico pode ser executado em qualquer uma das funções de retorno de chamada do runtime.

Antes que o driver de exibição do modo de usuário chame qualquer uma das funções de retorno de chamada do runtime em um thread diferente do thread do aplicativo principal, o driver deve passar TRUE para o parâmetro Enable em uma chamada para pfnSetAsyncCallbacksCb. Antes que o driver de exibição do modo de usuário chame qualquer uma das funções de retorno de chamada do runtime no thread principal do aplicativo, o driver deve passar FALSE para o parâmetro Enable em uma chamada para pfnSetAsyncCallbacksCb.

Dentro da implementação do Flush para cada dispositivo de renderização, o driver chama pfnSetAsyncCallbacksCb e passa FALSE para o parâmetro Enable.

Quando o driver passa TRUE para o parâmetro Enable em uma chamada para pfnSetAsyncCallbacksCb, o runtime se coloca em um estado em que não responde imediatamente a situações perdidas pelo dispositivo em suas funções de retorno de chamada. Em vez disso, quando o runtime detecta um dispositivo perdido em uma função de retorno de chamada enquanto estiver nesse estado, ele define um bit que indica que o evento ocorreu. Quando o driver passa FALSE para o parâmetro Enable em uma chamada para pfnSetAsyncCallbacksCb, o runtime verifica o bit para determinar se ocorreu um dispositivo perdido. Se o bit estiver definido, o runtime executará sua manipulação típica de perda de dispositivo. Após esse ponto, o driver não recebe mais a maioria das chamadas para suas funções do runtime.

Somente as versões DirectX 9 e DirectX 9L do runtime dão suporte pfnSetAsyncCallbacksCb. O DirectX 10 e versões posteriores do runtime definem o pfnSetAsyncCallbacksCb membro da estrutura D3DDDI_DEVICECALLBACKS para NULL quando o runtime chama a função CreateDevice(D3D10) do driver de exibição do modo de usuário para criar um dispositivo de renderização.

Observação versões do DirectX anteriores a 9 não dão suporte a otimizações de vários processadores.
 
Os drivers podem chamar as funções de retorno de chamada do runtime somente de um thread de trabalho se o runtime tiver definido anteriormente o pfnSetAsyncCallbacksCb membro do D3DDDI_DEVICECALLBACKS paraNULL não em uma chamada para a função CreateDevice do driver.

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

CreateDevice

CreateDevice(D3D10)

D3DDDI_DEVICECALLBACKS

Flush

LockAsync

renomear

UnlockAsync