我正在针对COM BITS API编写一些 .NET 代码。我在 windows kits 下找到了 bits.idl 文件,并且做了midl bits.idl
,它给了我 bits.tlb。然后我运行tlbimp bits.tlb
并获得了 BackgroundCopyManager.dll。
在这个程序集中一切都符合预期(由我的 .net 项目引用),并显示在 VS 2013 的对象浏览器中,并且在 ildasm 中看起来不错,但有一个例外。我现在在 BackgroundCopyManager 命名空间中有一个新的 GUID 类型,我真的不认为我想要它。
namespace BackgroundCopyManager
{
public struct GUID
{
public uint Data1;
public ushort Data2;
public ushort Data3;
public byte[] Data4;
}
}
我在想 System.Guid 足以满足我所有的 .NET 端 GUID、CLSID 和 IID 相关需求。我可以以某种方式摆脱多余的吗?在 System.Guid 和这个冒名顶替者之间进行转换并不简单,而且似乎没有必要。
我唯一能想到的是,这些接口中有几种方法使用 GUID 作为参数类型,并且由于这个 idl 文件是从 2000 年开始的,我猜想 .NET Interop 还不是一个东西。