none
Как вернуть массив байт из COM - объекта в управляемый код ? RRS feed

  • Вопрос

  • Есть 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 );
    получаю эксепшн, в котором говориться, что заглушке передан нулевой указтель.

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

     

    13 августа 2010 г. 12:46

Ответы

Все ответы