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