对于一个小背景故事,我在计算机实验室工作,我们需要一个简单的方法来根据PCI总线位置禁用适配器上的某些网络协议绑定。
到目前为止,我已经编写了一个C#命令行实用程序来查找它们,获取它们的总线位置,netcfginstanceid等。我还没弄明白该怎么做的一件事是删除那些适配器上的绑定,我可以通过在注册表中删除它们但它仍将显示在适配器设置中。
最终我在windows DDK中发现了一些简洁的实用程序,特别是bindview示例程序,我想要做的是采用bindview示例中包含的NetCfgAPI并在我的C#程序中使用它,问题是它们是C ++文件。我已经尝试使用MIDL将它们转换为.ddl或.tlb,然后我可以使用pinvoke但我对pinvoke知之甚少,而MIDL编译器会出现错误,例如“midl:命令行错误MIDL1003:错误返回C预处理器(4)“。
我的问题是,有更简单的方法吗?如果没有,将NetCfgApi c ++文件转换为可在C#中使用的东西的最佳方法是什么?
我可以用C ++编写实用程序,但我更习惯使用C#。
答案 0 :(得分:2)
您可以尝试使用C ++ / CLI编译这些东西作为DLL。在编译器下的项目设置中,提到你不想要CLR,它会简化编译。
然后你应该能够在你的C#项目中添加该DLL作为参考。
答案 1 :(得分:0)
使用ATL或C ++(非托管,直接C ++)创建C ++代码的COM对象包装器。然后使用C#中的COM-interop与您的COM对象进行通信。