Especificar un modo de sincronización de devolución de llamada

Advertencia

UMDF 2 es la versión más reciente de UMDF y sustituye a UMDF 1. Todos los controladores UMDF nuevos deben escribirse con UMDF 2. No se agregan nuevas características a UMDF 1 y hay compatibilidad limitada con UMDF 1 en versiones más recientes de Windows 10. Los controladores universales de Windows deben usar UMDF 2.

Los ejemplos de UMDF 1 archivados se pueden encontrar en la actualización de ejemplos de controladores de Windows 11, versión 22H2 - mayo de 2022.

Para obtener más información, consulta Introducción con UMDF.

El controlador puede especificar cómo el marco llama a sus funciones de devolución de llamada. El controlador especifica un modo de sincronización (o bloqueo) para un dispositivo antes de llamar al método IWDFDriver::CreateDevice para crear un objeto de dispositivo para el dispositivo. Para especificar el modo de sincronización, el controlador debe llamar al método IWDFDeviceInitialize::SetLockingConstraint . El controlador recibe un puntero a la interfaz IWDFDeviceInitialize cuando se llama a su método IDriverEntry::OnDeviceAdd para agregar el dispositivo al sistema.

El controlador puede especificar uno de los siguientes valores del tipo de enumeración WDF_CALLBACK_CONSTRAINT en el parámetro LockType de IWDFDeviceInitialize::SetLockingConstraint para identificar el modo de bloqueo. El tipo de restricción (o bloqueo) especificado depende de cuánto paralelismo puede aprovechar el dispositivo de hardware y cuánto puede controlar el controlador.

Valor Significado

Ninguno (0)

Indica que no se sincronizan funciones de devolución de llamada en el controlador.

WdfDeviceLevel (1)

Indica que se sincronizan todas las funciones de devolución de llamada de cola en el controlador.

Nota Si el controlador no llama a IWDFDeviceInitialize::SetLockingConstraint para especificar un valor, el marco establece el valor predeterminado de esta propiedad en WdfDeviceLevel.

Las restricciones solo se aplican a las funciones de devolución de llamada de cola y no a Plug and Play (PnP) y a las funciones de devolución de llamada de administración de energía. Las funciones de devolución de llamada de cola incluyen lo siguiente:

Las funciones de devolución de llamada de finalización de solicitudes (IRequestCallbackRequestCompletion::OnCompletion) no son funciones de devolución de llamada en cola. Por lo tanto, no se sincronizan.