다음을 통해 공유


호스트된 디바이스를 디바이스 호스트에 등록

호스트된 디바이스를 등록한다는 것은 디바이스 호스트에 디바이스 설명 및 해당 디바이스 제어 개체를 제공하는 것을 의미합니다. 그런 다음, 디바이스 호스트는 전체 UPnP 디바이스 설명을 생성하고, 게시하고, UPnP 검색 프로토콜을 사용하여 네트워크에서 디바이스를 알릴 수 있습니다. 디바이스가 게시되면 제어 지점에 사용할 수 있습니다.

디바이스는 다음 두 가지 방법으로 등록됩니다.

  • 애플리케이션은 디바이스 제어 개체의 instance 만들고 디바이스 호스트에 포인터를 전달합니다.
  • 애플리케이션은 등록된 디바이스 제어 개체에 대한 ProgID를 디바이스 호스트에 전달합니다. 디바이스 호스트는 디바이스 호스트가 디바이스에 대한 첫 번째 요청을 수신할 때 인스턴스화합니다.

사용되는 방법에 관계없이 디바이스 호스트는 디바이스가 등록되는 즉시 디바이스를 게시하고 알려 줍니다. 두 방법의 차이점은 디바이스 코드가 로드될 때와 관련이 있습니다. 애플리케이션이 디바이스 제어 개체에 대한 포인터를 전달하면 등록 시 디바이스 코드가 로드되고 실행됩니다. 애플리케이션이 ProgID를 통과하면 작업이 호출되거나, 속성이 쿼리되거나, 이벤트 구독 요청이 도착할 때만 디바이스 코드가 로드됩니다. 두 번째 방법은 약간 더 효율적입니다. 그러나 컨트롤 또는 이벤트 구독 요청이 도착하기 전에 실행되어야 하는 디바이스에는 적합하지 않습니다. 이 방법을 사용하면 디바이스 제어 개체가 필요할 때만 생성되기 때문입니다. 이 두 번째 메서드는 디바이스 유형에 대한 첫 번째 요청을 받을 때 성능 문제를 만들 수도 있습니다.

컴퓨터가 시작될 때 네트워크의 디바이스 호스트가 디바이스를 자동으로 발표하도록 하려면 IUPnPRegistrar::RegisterDevice를 호출합니다. RegisterDevice 는 컨트롤 또는 이벤트 구독 요청을 받을 때만 디바이스 코드가 로드되도록 합니다.

디바이스가 일시적이거나 브리지된 경우 IUPnPRegistrar::RegisterRunningDevice를 호출하면 컴퓨터가 다시 시작될 때 디바이스가 자동으로 다시 보급되지 않습니다.

검색 공지 수명

디바이스 호스트에 등록된 각 디바이스는 등록 시 디바이스에서 지정하는 수명에 연결됩니다. 디바이스의 수명은 디바이스의 검색 알림이 유효한 기간입니다. 수명은 초기 검색 공지에서 헤더로 제어 지점에 전달됩니다. 디바이스 호스트는 만료 시간 전에 알림을 자동으로 새로 고칩니다. 검색 공지 수명 값은 15분 이상이어야 합니다(기본값은 30분).

등록 시 생성된 디바이스 식별자

디바이스 설명 템플릿을 만들 때 디바이스 개발자는 서비스 설명 및 관련 아이콘에 대한 리소스 경로를 제공해야 합니다. 리소스 경로는 디바이스 애플리케이션에 의해 결정됩니다.

동일한 디바이스를 동일한 컴퓨터에 여러 번 등록할 수 있으므로 디바이스 설명 템플릿에 지정된 UDN만으로는 디바이스를 고유하게 식별할 수 없습니다. 따라서 디바이스가 등록되면 디바이스 호스트는 디바이스 식별자를 만듭니다. 이 디바이스 식별자는 디바이스 설명 템플릿의 UDN과 관련하여 디바이스를 고유하게 식별하는 데 사용할 수 있습니다.

이 식별자는 디바이스가 일시적으로 등록 취소된 다음 다시 등록될 때도 사용됩니다. 디바이스가 일시적으로 등록 취소된 경우 디바이스 호스트는 UDN을 삭제하지 않습니다. UDN을 삭제하지 않는 이유는 다음과 같습니다.

  • 디바이스가 업그레이드되고 있습니다.
  • 디바이스의 속성을 변경하고 있습니다.
  • 서비스를 일시적으로 사용할 수 없습니다.
  • 디바이스에 새 서비스를 추가하고 있습니다.
  • DLL을 업데이트하고 있습니다.
  • 디바이스가 대기 모드에 있습니다.

등록에 대한 자세한 내용은 다음 섹션을 참조하세요.