Для приложения мы используем UPnP для обнаружения и регистрации устройств / сервисов (у нас есть серверная и клиентская часть).
Для обнаружения мы использовали http://managedupnp.codeplex.com/, который работал очень хорошо.
Для регистрации мы нашли некоторую библиотеку, но она была ОЧЕНЬ ошибочной (библиотека Intel с открытым исходным кодом), и теперь мы хотим использовать компонент COM и сделать на нем небольшую абстракцию C #.
Я нашел документацию: http: / /msdn.microsoft.com/en-us/library/windows/desktop/aa381805(v=vs.85).aspx, но у меня проблема.
Эта библиотека содержит только интерфейсы, и я не понимаю, как получить ее экземпляр. И я не могу найти ни одного примера / документации.
Итак, кто-нибудь знает, как зарегистрировать устройство / службу с помощью этого COM-компонента?
Спасибо!
ИЗМЕНИТЬ :
Я попытался сгенерировать dll C #:
midl /target NT51 /tlb "C:\upnphost.tlb" "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include\upnphost.idl"
tlbimp upnphost.tlb
Но после импорта этой сгенерированной dll я получил только тот же интерфейс, что и раньше: /. Я на правильном пути, как мне это сделать?
1 ответ
После того, как вы выполнили midl + tlbimp, вы можете просто написать такой код, поскольку tlbimp должен создать класс (UPnPRegistrarClass) и интерфейс IUPnPRegistrar, которые реализует базовый COM-класс:
IUPnPRegistrar registrar = (IUPnPRegistrar)new UPnPRegistrarClass();
registrar.RegisterDevice(
File.ReadAllText("DimmerDevice-Desc.xml"),
"My.Class",
"MyInitString",
"MyContainerId",
Path.GetFullPath("."),
3200);
Примечание. Чтобы это работало, загрузите образец регистрации устройства UPnP на свой disk и скопируйте два файла описания XML в текущий путь выполнения. Вы также должны реализовать COM-объект с прогидом ("My.Class", который работает, потому что вызов RegisterDevice действительно создаст экземпляр этого объекта для построения идентификатора. Это можно сделать с помощью .NET.
Форматы описания устройств и услуг доступны здесь: Архитектура устройства UPnP ™ 1.1 < / а>. В мире Windows здесь указаны некоторые дополнительные ограничения: Создание описания устройства (Windows)
Interop type 'UPnPHostLib.UPnPRegistrarClass' cannot be embedded. Use the applicable interface instead.
<device></device>
, что мне не очень помогает. Я пытался создать свой, но что-то упустил. Есть ли инструменты для создания этого XML-файла? И есть дополнительный параметр (кроме XML), я не уверен, что понимаю, для чего они нужны.
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.