Registro de un dispositivo hospedado con el host del dispositivo
Registrar un dispositivo hospedado significa proporcionar el host del dispositivo con la descripción del dispositivo y su objeto de control de dispositivo. A continuación, el host del dispositivo crea una descripción completa del dispositivo UPnP, la publica y anuncia el dispositivo en la red mediante el protocolo de detección de UPnP. Una vez publicado un dispositivo, está disponible para los puntos de control.
Los dispositivos se registran de dos maneras:
- Una aplicación crea una instancia del objeto de control de dispositivo y le pasa un puntero al host del dispositivo.
- La aplicación pasa el ProgID de un objeto de control de dispositivo registrado al host del dispositivo. El host del dispositivo crea una instancia cuando el host del dispositivo recibe la primera solicitud del dispositivo.
Independientemente del método que se use, el host del dispositivo publica y anuncia el dispositivo en cuanto se registra. La diferencia entre los dos enfoques tiene que ver con cuándo se carga el código del dispositivo. Cuando la aplicación pasa un puntero al objeto de control de dispositivo, el código del dispositivo se carga y se ejecuta en el momento del registro. Cuando la aplicación pasa un ProgID, el código del dispositivo solo se carga cuando se invoca una acción, se consulta una propiedad o llega una solicitud de suscripción de eventos. El segundo enfoque es ligeramente más eficaz. Sin embargo, no es adecuado para los dispositivos que deben ejecutarse antes de que lleguen solicitudes de suscripción de eventos o control, ya que con este enfoque, los objetos de control de dispositivo solo se crean cuando son necesarios. Este segundo método también puede crear problemas de rendimiento cuando recibe la primera solicitud de un tipo de dispositivo.
Si desea asegurarse de que el host de dispositivo anuncia un dispositivo en la red automáticamente cuando se inicia el equipo, invoque IUPnPRegistrar::RegisterDevice. RegisterDevice garantiza que el código del dispositivo solo se cargue cuando se recibe una solicitud de suscripción de control o evento.
Si los dispositivos son transitorios o puentes, invoque IUPnPRegistrar::RegisterRunningDevice y el dispositivo no se vuelva a anunciar automáticamente cuando se reinicie el equipo.
Duración del anuncio de detección
Cada dispositivo registrado con el host del dispositivo está asociado a una duración, que el dispositivo especifica tras el registro. La duración del dispositivo es el período de tiempo durante el cual los anuncios de detección del dispositivo son válidos. La duración se pasa al punto de control como encabezado en el anuncio de detección inicial. El host del dispositivo actualiza automáticamente el anuncio antes de la hora de expiración. Los valores de la duración del anuncio de detección deben ser de 15 minutos o más (el valor predeterminado es 30 minutos).
Identificadores de dispositivo creados en el registro
Al crear una plantilla de descripción de dispositivo, el desarrollador de dispositivos debe proporcionar la ruta de acceso del recurso a la descripción del servicio e iconos asociados. La ruta de acceso del recurso viene determinada por la aplicación de dispositivo.
Puesto que el mismo dispositivo se puede registrar varias veces en el mismo equipo, el UDN especificado en la plantilla de descripción del dispositivo no es suficiente para identificar de forma única un dispositivo. Por lo tanto, cuando se registra un dispositivo, el host de dispositivo crea un identificador de dispositivo. Este identificador de dispositivo, en asociación con el UDN de la plantilla de descripción del dispositivo, se puede usar para identificar de forma única un dispositivo.
Este identificador también se usa cuando el dispositivo se anula temporalmente el registro y, a continuación, se vuelve a registrar. Cuando un dispositivo no se registra temporalmente, el host del dispositivo no elimina el UDN. Entre las razones para no eliminar el UDN se incluyen las siguientes:
- El dispositivo se está actualizando.
- Está cambiando las propiedades del dispositivo.
- Un servicio no está disponible temporalmente.
- Va a agregar un nuevo servicio a un dispositivo.
- Está actualizando el archivo DLL.
- El dispositivo está en modo stand-by.
Consulte las secciones siguientes para obtener más información sobre el registro:
- Cómo registrar un dispositivo con el host de dispositivo
- Anulación del registro de un dispositivo
- IUPnPRegistrar::UnregisterDevice
- IUPnPReregistrar