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 objetos e interfaces del marco se basan en el Modelo de objetos componentes (COM) por los siguientes motivos:
COM es familiar para muchos programadores de aplicaciones.
C++ es el lenguaje preferido para programar aplicaciones COM.
Las interfaces COM permiten agrupaciones lógicas de funciones, de modo que la interfaz del controlador de dispositivo (DDI) sea fácil de entender y navegar.
El uso de COM permite que la DDI amplíe y evolucione sin necesidad de que se vuelvan a compilar los archivos DLL del controlador existentes.
Numerosas herramientas, como Microsoft Visual Studio y la biblioteca de plantillas activas (ATL), admiten aplicaciones y objetos basados en COM.
El marco utiliza solo un pequeño subconjunto de COM; no depende de toda la infraestructura COM ni de la biblioteca en tiempo de ejecución. En su lugar, el marco usa solo las características de interfaz de consulta y recuento de referencias. Cada interfaz de marco deriva de IUnknown y, por tanto, admite los métodos QueryInterface, AddRef y Release de forma predeterminada. Los métodos AddRef y Release administran la duración del objeto. El método QueryInterface permite a otros componentes determinar qué interfaces admite el controlador.
Los desarrolladores de Windows tienen varias opciones para crear aplicaciones que se ejecutan en Windows. En este módulo se presentan los marcos de interfaz de usuario de Windows que están disponibles para el desarrollo de Windows. También proporciona instrucciones sobre cómo elegir el mejor marco para la aplicación.
La función de devolución de llamada de eventos EvtDeviceSelfManagedIoInit de un controlador inicializa e inicia las operaciones de E/S autoadministradas del dispositivo.
La estructura EMI_METADATA_SIZE especifica el tamaño del objeto de metadatos de Energy Metering Interface (EMI) que se puede obtener del dispositivo mediante la emisión de una solicitud de IOCTL_EMI_GET_METADATA.
La rutina MmIsDriverVerifying indica si el controlador en modo kernel identificado por el objeto de controlador especificado se está comprobando o llama a un controlador comprobado por el Comprobador de controladores.