2008-06-13
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 と違う宣言。