Как вернуть массив байт из COM-объекта в управляемый код?
От: Kain Merg Россия  
Дата: 13.08.10 14:28
Оценка:
Есть 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 );



получаю эксепшн, в котором говориться, что заглушке передан нулевой указтель.

Товарищи! Что не так? И как надо?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.