Использование Windows DDK с C # - PullRequest
0 голосов
/ 20 июля 2011

Для небольшой предыстории я работаю в компьютерной лаборатории, и у нас должен быть простой способ отключить определенные привязки сетевых протоколов на адаптерах в зависимости от их расположения на шине PCI.

До сих пор я написал утилиту командной строки C #, чтобы найти их, узнать их месторасположение шины, netcfginstanceid и т. Д. Единственное, что я не понял, как это сделать - это удалить привязки на этих адаптерах, я мог бы пройти и удалите их в реестре, но он все равно будет отображаться в настройках адаптера.

В конце концов я обнаружил некоторые полезные утилиты в Windows DDK, особенно пример программы bindview. Я хочу взять NetCfgAPI, включенный в пример bindview, и использовать его в моей программе на C #, проблема в том, что это файлы C ++. , Я пытался использовать MIDL для преобразования их в .ddl или .tlb, на котором я могу затем использовать pinvoke, но я мало знаю о pinvoke, и компилятор MIDL обнаруживает ошибки, такие как «midl: ошибка командной строки MIDL1003: ошибка, возвращаемая С препроцессором (4) ".

У меня вопрос: есть ли более простой способ сделать это? а если нет, то как лучше всего конвертировать файлы NetCfgApi c ++ во что-то, пригодное для использования в C #?

Я мог бы написать утилиту на C ++, но мне удобнее использовать C #.

Ответы [ 2 ]

2 голосов
/ 20 июля 2011

Вы можете попробовать скомпилировать этот материал с C ++ / CLI как DLL. В настройках проекта под компилятором отметьте, что вы не хотите CLR, это упростит компиляцию.

Тогда вы сможете добавить эту DLL в качестве ссылки в ваш проект C #.

0 голосов
/ 20 июля 2011

Используйте ATL или что-то с C ++ (не управляемый, прямой C ++), чтобы создать оболочку COM-объекта для кода C ++.Затем используйте COM-взаимодействие из C # для общения с вашим COM-объектом.

...