Solicitud de interacción del usuario
En cualquier momento después de la llamada a Dot11ExtIhvInitAdapter, el archivo DLL de extensiones de IHV puede solicitar la interacción con el usuario llamando a la función Dot11ExtSendUIRequest . El sistema operativo reenvía todas las solicitudes de interacción del usuario al archivo DLL de extensiones de interfaz de usuario de IHV, que procesará la solicitud y mostrará las páginas adecuadas de la interfaz de usuario (UI) al usuario.
Una vez completada la solicitud, el sistema operativo llama a la función Dot11ExtIhvProcessUIResponse para reenviar los resultados del archivo DLL de extensiones de interfaz de usuario de IHV para la interacción del usuario. Para obtener más información sobre el archivo DLL de extensiones de interfaz de usuario de IHV, vea Dll de extensiones de interfaz de usuario IHV nativas 802.11.
Por ejemplo, el archivo DLL de extensiones de IHV puede solicitar la interacción del usuario para cualquiera de las siguientes opciones.
Notificar al usuario las fases de una operación previa o posterior a la asociación.
Pida al usuario que escriba sus credenciales para la autenticación durante la operación posterior a la asociación.
Cuando llama a la función Dot11ExtSendUIRequest , el archivo DLL de extensiones de IHV pasa un puntero a una estructura de DOT11EXT_IHV_UI_REQUEST al parámetro pIhvUIRequest . La estructura DOT11EXT_IHV_UI_REQUEST especifica la solicitud, como el identificador único global (GUID), que identifica la solicitud de interfaz de usuario, así como el identificador de clase COM (CLSID) de la página de la interfaz de usuario de destino que controlará esta solicitud.
Cuando el archivo DLL de extensiones de interfaz de usuario de IHV ha completado la notificación de usuario, el sistema operativo llama a la función Dot11ExtIhvProcessUIResponse . Si el usuario ha escrito datos a través de la notificación, el sistema operativo pasa un puntero al búfer, que contiene los datos, al parámetro pvResponseBuffer .
El sistema operativo puede consultar periódicamente el estado de las solicitudes de notificación pendientes. En esta situación, el sistema operativo llama al parámetro Dot11ExtIhvIsUIRequestPending y pasa el GUID de la solicitud de interfaz de usuario al parámetro guidUIRequest .
Al llamar a Dot11ExtSendUIRequest, el archivo DLL de extensiones de IHV debe seguir estas instrucciones.
El archivo DLL de extensiones de IHV no necesita serializar las llamadas a Dot11ExtSendUIRequest. El archivo DLL puede tener más de una solicitud de interfaz de usuario pendiente en cualquier momento.
La solicitud de interfaz de usuario para un GUID determinado solo se completa cuando se llama a Dot11ExtIhvProcessUIResponse para ese GUID. En esta situación, el archivo DLL de extensiones de IHV no debe liberar ningún recurso asignado para la solicitud de interfaz de usuario hasta que se llame a Dot11ExtIhvProcessUIResponse .
Todas las solicitudes de interfaz de usuario pendientes se cancelan cada vez que se llama a Dot11ExtIhvAdapterReset o Dot11ExtIhvDeinitAdapter . Todas las solicitudes de interfaz de usuario pendientes también se cancelan cada vez que se llama a Dot11ExtIhvProcessSessionChange con el parámetro uEventType establecido en WTS_SESSION_LOGOFF.
En estas situaciones, el archivo DLL de extensiones de IHV debe liberar todos los recursos asignados para cada solicitud de interfaz de usuario pendiente.
El sistema operativo puede iniciar la interacción del usuario siempre que cambie el estado de conexión en la red básica del conjunto de servicios (BSS). En esta situación, el sistema operativo llama a la función Dot11ExtIhvQueryUIRequest . El archivo DLL de extensiones de IHV asigna un búfer y lo da formato como una estructura de DOT11EXT_IHV_UI_REQUEST . El archivo DLL establece los miembros de la estructura DOT11EXT_IHV_UI_REQUEST para hacer referencia a una página de interfaz de usuario adecuada para el cambio en el estado de conexión. El sistema operativo es responsable de mostrar la página de la interfaz de usuario.
Nota Las extensiones de IHV deben asignar el búfer que contiene la estructura de DOT11EXT_IHV_UI_REQUEST a través de Dot11ExtAllocateBuffer. El archivo DLL no debe liberar el búfer después de volver de Dot11ExtIhvQueryUIRequest.