/ / メモ
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 と違う宣言。

トラックバック http://mikanya.dip.jp/memo/2008-06-13-1