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