Phobos(D言語の標準ライブラリ)に一応Windows API用のバインディングがあるのはあるのですが、COMインターフェイスがなんと、IUnknownとIClassFactoryの二つしか定義がない。要は、そのほかは自作しろという話になります。一応、「WindowsApi Bindings」というのはあるのですけどね…
一応、IPersist インターフェイスとIPersistFile インターフェイスの定義が必要だったので、ちょこっと書いてみました。
/**
* Microsoft.COM.IPersist interface
* GUID: {0000010c-0000-0000-C000-000000000046}
*/
extern(Windows)
interface IPersist : IUnknown{
public extern(Windows) HRESULT GetClassID(out GUID classid);
}
/**
* Microsoft.COM.IPersistFile interface
* GUID: {0000010b-0000-0000-C000-000000000046}
*/
extern(Windows)
interface IPersistFile : IPersist{
public extern(Windows):
HRESULT GetCurFile(out LPOLESTR pszFileName);
HRESULT IsDirty();
HRESULT Load(LPCOLESTR pszFileName,DWORD dwMode);
HRESULT Save(LPCOLESTR pszFileName,BOOL bRemember);
HRESULT SaveCompleted(LPCOLESTR pszFileName);
}