Как вернуть массив байт из 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 );



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

Товарищи! Что не так? И как надо?
Re: Как вернуть массив байт из COM-объекта в управляемый код
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 13.08.10 14:58
Оценка: 3 (1)
Здравствуйте, Kain Merg, Вы писали:

KM>Товарищи! Что не так? И как надо?


http://rsdn.ru/forum/com/2133285.1.aspx
Автор: Odi$$ey
Дата: 27.09.06
Re[2]: Как вернуть массив байт из COM-объекта в управляемый
От: Kain Merg Россия  
Дата: 13.08.10 15:13
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

OE>http://rsdn.ru/forum/com/2133285.1.aspx
Автор: Odi$$ey
Дата: 27.09.06


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