Compartir a través de


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.

Nota Las versiones de DirectX anteriores a 9 no admiten optimizaciones de varios procesadores.
 
Los controladores pueden llamar a las funciones de devolución de llamada del tiempo de ejecución solo desde un subproceso de trabajo si el tiempo de ejecución estableció previamente el miembro pfnSetAsyncCallbacksCb de D3DDDI_DEVICECALLBACKS en un valor distinto de NULL en una llamada a la función CreateDevice del controlador.

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)

Consulte también

CreateDevice

CreateDevice(D3D10)

D3DDDI_DEVICECALLBACKS

Vaciar

LockAsync

Cambiar nombre

UnlockAsync