COM BITS APIに対して .NET コードを書いています。Windows キットの下にある bits.idl ファイルを見つけて実行すると、bits.tlb がmidl bits.idl
得られました。次に、実行tlbimp bits.tlb
して BackgroundCopyManager.dll を取得しました。
このアセンブリ (私の .net プロジェクトで参照) ではすべてが期待どおりであり、VS 2013 のオブジェクト ブラウザーに表示され、ildasm で適切に表示されますが、1 つの例外があります。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 相互運用機能はまだ機能していなかったと思います。