Есть COM-объект, в его IDL описана функция интерфейса:
HRESULT GetBytes( [out] BYTE** ppbRes, [out, retval] UINT* puiSise );
Реализация:
STDMETHODIMP COMObj::GetBytes( BYTE** ppbRes, UINT* puiSise )
{
const UINT sz = 1024;
*puiSise = sz;
*ppbRes = ::CoTaskMemAlloc( sz );
memcpy_s( *ppbRes, sz, m_myBytes, sz );
}
На стороне управляемого кода получаю следующее описание этой функции:
uint GetBytes( IntPtr ppbRes );
При попытке использования:
IntPtr ipRes = IntPtr.Zero;
uint uiSize = com_obj.GetBytes( ipRes );
получаю эксепшн, в котором говориться, что заглушке передан нулевой указтель.
Товарищи! Что не так? И как надо?