Introducción a la arquitectura
La arquitectura de WPD se puede dividir en tres procesos. Dentro de estos procesos se encuentran los tres componentes principales de WPD: la API, el serializador y el controlador. En la ilustración siguiente se muestran estos procesos y componentes que constituyen la arquitectura de WPD.
Interfaz de programación de aplicaciones WPD
La API de WPD se implementa como un servidor COM en proceso. La API usa las API estándar de Microsoft Win32 para comunicarse con el controlador WPD adecuado. Tanto los objetos de API como el controlador usan un componente denominado serializador WPD para empaquetar o desempaquetar parámetros hacia o desde los búferes del marco de controladores de Windows (WDF)-Marco de controlador en modo de usuario (UMDF).
Serializador WPD
El serializador WPD también se implementa como un servidor COM en proceso. La API de WPD usa el serializador para empaquetar comandos y parámetros en búferes de mensajes que se envían al controlador. El controlador usa el serializador para desempaquetar estos búferes de mensajes para su procesamiento. El controlador también usa el serializador para empaquetar datos y parámetros en búferes de respuesta que se devuelven a la API de WPD y la API de WPD usa el serializador para desempaquetar estos búferes de respuesta para devolver los resultados a los autores de la llamada.
Controlador WPD
El controlador WPD se implementa como un controlador estándar de Windows Driver Frameworks (WDF)-User-Mode Driver Framework (UMDF). Los controladores WPD se hospedan en WUDF en un proceso independiente denominado Host de controlador.
El controlador recibe mensajes del reflector WUDF (esto no se muestra en el diagrama, ya que la forma en que se reciben los búferes no es importante para el controlador. Consulte la documentación de WUDF para obtener más información). El controlador implementa un controlador IOCTL específico de WPD para procesar los mensajes WPD recibidos por la API de WPD. El controlador usa el serializador WPD para desempaquetar comandos y parámetros de estos búferes de mensajes y para empaquetar la respuesta en el búfer.
Los controladores de WPD pueden comunicarse con sus dispositivos pasando por un controlador en modo kernel, a los que normalmente se accede a través de operaciones de archivo Win32 (como CreateFile, ReadFile, WriteFile, etc.). En el caso de los autobuses comunes, Microsoft proporcionará controladores de kernel estándar para que los proveedores usen, lo que permitirá a los proveedores enviar una solución de controlador solo en modo de usuario.