Tareas del controlador en modo de usuario de Miracast para admitir pantallas inalámbricas miracast en Windows 8.1

Nota

A partir de Windows 10 (WDDM 2.0), el sistema operativo se distribuye con una pila de Miracast integrada que puede funcionar en cualquier GPU. Para obtener información sobre la pila de Microsoft Miracast y los requisitos de controladores y hardware para admitir pantallas de Miracast a partir de Windows 10, consulte la siguiente documentación:

Los desarrolladores de controladores ya no deben implementar una pila de Miracast personalizada. Microsoft podría quitar la compatibilidad con las pilas personalizadas de Miracast en una versión futura de Windows.

Para habilitar las pantallas inalámbricas de Miracast en Windows 8.1, debe crear un archivo DLL independiente y único que implemente un controlador en modo de usuario de Miracast. Este controlador se carga en un proceso dedicado de sesión 0. Agregue el nombre del controlador en la configuración de software del dispositivo en el archivo INF como MiracastDriverName:

[MyDevice_DeviceSettings]
HKR,, MiracastDriverName, %REG_SZ%, Miracast.dll

El archivo DLL debe tener una función de exportación denominada QueryMiracastDriverInterface a la que puede llamar el sistema operativo. Este archivo binario del controlador no debe usar un archivo DLL de controlador de pantalla en modo de usuario de Direct3D existente.

Dado que el controlador del modo de usuario de Miracast se carga en el proceso de UMDF0, no se necesita ninguna versión independiente de Windows en Windows (WOW) de este controlador. Por ejemplo, se usa una versión de 64 bits del controlador en un procesador de 64 bits.

Cuando el sistema operativo esté listo para prepararse para una sesión conectada de Miracast, llama a la función CreateMiracastContext del controlador en modo de usuario de Miracast. Cuando se llama a esta función, el controlador del modo de usuario de Miracast asigna todos los recursos de software que necesita para iniciar una sesión conectada de Miracast. En esta llamada, el sistema operativo también proporciona punteros a funciones de devolución de llamada a las que el controlador puede llamar durante la vigencia del contexto actual de Miracast. Después de establecer un vínculo Real-Time Streaming Protocol (RTSP), el sistema operativo llama a StartMiracastSession para iniciar realmente la sesión conectada de Miracast. Cuando el controlador responde a esta llamada de función, debe usar la función getaddrinfo winsock u otras funciones pertinentes para obtener la dirección del protocolo de Internet (IP) del receptor miracast y usar las funciones estándar de Winsock para crear un socket del Protocolo de escritorio remoto (HTCP) del Protocolo de almacenamiento en caché de Hipertexto (HTCP).

Si hay una pantalla de Miracast disponible, el controlador del modo de usuario de Miracast llama a la función MiracastIoControl proporcionada por el sistema operativo para enviar una solicitud de control de E/S al controlador de miniporte de pantalla para notificar un valor de reconocimiento de detección de enchufes activos (HPD) de llegada de monitor. El controlador en modo de usuario de Miracast también debe consultar la información y las funcionalidades del receptor de Miracast y notificar parte de esta información, como la descripción del monitor, al controlador de minipuerto de pantalla mediante una llamada a MiracastIoControl.

Una vez iniciada la sesión conectada de Miracast y después de preparar los datos de streaming y antes de enviarlos a la red, el controlador debe llamar a la función de devolución de llamada ReportStatistic para informar de las estadísticas del vínculo de Miracast al sistema operativo.

Cuando el sistema operativo detiene una sesión conectada de Miracast, llama a la función StopMiracastSession del controlador del modo de usuario de Miracast. En respuesta a esta llamada de función, el controlador debe cerrar todos los sockets que creó y quitar todo el streaming de datos adicional. El controlador no debe cerrar el socket RTSP que le dio el sistema operativo. Tampoco debe enviar una solicitud al controlador de minipuerto de pantalla para notificar un HPD sobre la salida del monitor.

El controlador en modo de usuario de Miracast debe liberar todos los recursos de software que asignó en CreateMiracastContext en respuesta a las llamadas del sistema operativo a la función DestroyMiracastContext .

Cuando el controlador de minipuerto de pantalla recibe una solicitud DxgkDdiCommitVidPn para apagar el monitor Miracast conectado, el controlador debe llamar a la función de devolución de llamada DxgkCbMiracastSendMessage proporcionada por el sistema operativo para enviar un mensaje al controlador en modo de usuario de Miracast. El controlador del modo de usuario de Miracast debe colocar el receptor de Miracast en un estado de baja potencia.

Opcionalmente, el controlador del modo de usuario de Miracast puede llamar a la función de devolución de llamada RegisterForDataRateNotifications para registrarse en el sistema operativo para recibir, una vez por segundo, las notificaciones de calidad de servicio de red (QoS) y el ancho de banda de red actual de la conexión de Miracast. Esta información de red la proporcionan las llamadas del sistema operativo a la función pfnDataRateNotify .

El controlador del modo de usuario de Miracast también puede llamar a estas funciones de devolución de llamada opcionales proporcionadas por el sistema operativo:

Función Descripción
GetNextChunkData Proporciona información sobre el siguiente fragmento de codificación.
ReportSessionStatus El controlador llama a esta función para notificar el estado de la sesión conectada actual de Miracast.