01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
2008-06-13 Fri
■ IDL を D言語 に [D言語]
IDL
interface IUPnPDeviceFinder : IDispatch { ... HRESULT FindByType([in] BSTR bstrTypeURI, [in] DWORD dwFlags, [out, retval] IUPnPDevices ** pDevices); ...
この COM を D からつかうのに、
IUPnPDeviceFinder : IDispatch { ... HRESULT FindByType(BSTR bstrTypeURI, DWORD dwFlags, IUPnPDevices ** pDevices); ... } IUPnPDevices devices; FindByType(cast(IUPnPDevices**)&devices);
と、
IUPnPDeviceFinder : IDispatch { ... HRESULT FindByType(BSTR bstrTypeURI, DWORD dwFlags, IUPnPDevices * pDevices); ... } IUPnPDevices devices; FindByType(&devices);
のどちら良いのだろう?
両方とも 実行時エラーは出ていない。
たまたまだろうか?
前者は、キャストが疑問。
後者は、IDL と違う宣言。