PFND3DDDI_SETASYNCCALLBACKSCB función de devolución de llamada (d3dumddi.h)
La función pfnSetAsyncCallbacksCb notifica al tiempo de ejecución de Microsoft Direct3D si el tiempo de ejecución se iniciará o dejará de recibir llamadas a las funciones de devolución de llamada del tiempo de ejecución desde un subproceso de trabajo.
Sintaxis
PFND3DDDI_SETASYNCCALLBACKSCB Pfnd3dddiSetasynccallbackscb;
HRESULT Pfnd3dddiSetasynccallbackscb(
HANDLE hDevice,
BOOL Enable
)
{...}
Parámetros
hDevice
Identificador del dispositivo de visualización (contexto de gráficos).
Enable
Valor booleano que especifica si el tiempo de ejecución se iniciará o dejará de recibir llamadas a las funciones de devolución de llamada del tiempo de ejecución desde un subproceso de trabajo. TRUE indica que el tiempo de ejecución comenzará a recibir llamadas a sus funciones de devolución de llamada desde un subproceso de trabajo; FALSE indica que el tiempo de ejecución dejará de recibir llamadas a sus funciones de devolución de llamada desde un subproceso de trabajo.
Valor devuelto
pfnSetAsyncCallbacksCb devuelve uno de los siguientes valores:
Código devuelto | Descripción |
---|---|
S_OK | Se ha notificado correctamente el tiempo de ejecución de Direct3D. |
E_INVALIDARG | Los parámetros se validaron y determinaron que son incorrectos. |
Esta función también podría devolver otros valores HRESULT.
Comentarios
Si un controlador de pantalla en modo de usuario implementa sus propias optimizaciones de varios procesadores (es decir, el controlador crea un subproceso de trabajo y procesa comandos en ese subproceso), el controlador debe llamar a pfnSetAsyncCallbacksCb para notificar al tiempo de ejecución de Direct3D si el tiempo de ejecución se iniciará o dejará de recibir llamadas a las funciones de devolución de llamada del subproceso de trabajo. Además, estos controladores no deben implementar las funciones LockAsync, UnlockAsync y Rename . Esto garantiza que el tiempo de ejecución no intente usar sus propias optimizaciones de varios procesadores.
El controlador de pantalla en modo de usuario puede llamar a pfnSetAsyncCallbacksCb solo en el subproceso de aplicación principal (es decir, el subproceso que llamó al controlador). El subproceso de trabajo del controlador no puede llamar a pfnSetAsyncCallbacksCb. En cualquier momento, solo se puede ejecutar un subproceso que haga referencia a un dispositivo de representación determinado en cualquiera de las funciones de devolución de llamada del tiempo de ejecución.
Antes de que el controlador de pantalla en modo de usuario llame a cualquiera de las funciones de devolución de llamada del tiempo de ejecución en un subproceso que no sea el subproceso de aplicación principal, el controlador debe pasar TRUE al parámetro Enable en una llamada a pfnSetAsyncCallbacksCb. Antes de que el controlador de pantalla en modo de usuario llame a cualquiera de las funciones de devolución de llamada del tiempo de ejecución en el subproceso de aplicación principal, el controlador debe pasar FALSE al parámetro Enable en una llamada a pfnSetAsyncCallbacksCb.
Dentro de la implementación de Flush para cada dispositivo de representación, el controlador llama a pfnSetAsyncCallbacksCb y pasa FALSE al parámetro Enable .
Cuando el controlador pasa TRUE al parámetro Enable en una llamada a pfnSetAsyncCallbacksCb, el tiempo de ejecución se coloca en un estado en el que no responde inmediatamente a situaciones perdidas del dispositivo en sus funciones de devolución de llamada. En su lugar, cuando el tiempo de ejecución detecta un dispositivo perdido en una función de devolución de llamada mientras se encuentra en este estado, establece un bit que indica que se produjo el evento. Cuando el controlador pasa FALSE al parámetro Enable en una llamada a pfnSetAsyncCallbacksCb, el tiempo de ejecución comprueba el bit para determinar si se ha perdido un dispositivo. Si se establece el bit, el tiempo de ejecución realiza su control típico perdido del dispositivo. Después de este punto, el controlador ya no recibe la mayoría de las llamadas a sus funciones desde el entorno de ejecución.
Solo las versiones de DirectX 9 y DirectX 9L del entorno de ejecución admiten pfnSetAsyncCallbacksCb. DirectX 10 y versiones posteriores del runtime establecen el miembro pfnSetAsyncCallbacksCb de la estructura de D3DDDI_DEVICECALLBACKS en NULL cuando el tiempo de ejecución llama a la función CreateDevice(D3D10) del controlador de visualización en modo de usuario para crear un dispositivo de representación.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible en Windows Vista y versiones posteriores de los sistemas operativos Windows. |
Plataforma de destino | Escritorio |
Encabezado | d3dumddi.h (incluya D3dumddi.h) |