Compartilhar 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.

Retornar valor

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.

Comentários

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 criará um thread de trabalho e processará comandos nesse thread), o driver deverá 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, UnlockAsync e Rename . 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 do aplicativo main (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 de aplicativo main, 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 do aplicativo main, o driver deve passar FALSE para o parâmetro Enable em uma chamada para pfnSetAsyncCallbacksCb.

Dentro da implementação de 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 a pfnSetAsyncCallbacksCb. O DirectX 10 e versões posteriores do runtime definem o membro pfnSetAsyncCallbacksCb da estrutura D3DDDI_DEVICECALLBACKS como 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.

Nota As 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 membro pfnSetAsyncCallbacksCb de D3DDDI_DEVICECALLBACKS como não NULL em uma chamada para a função CreateDevice do driver.

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

Createdevice

CreateDevice(D3D10)

D3DDDI_DEVICECALLBACKS

Liberar

LockAsync

Renomear

UnlockAsync