Получить Буфер из COM объекта

Хочу получить из COM объекта значение на которое в нём указывает указатель BYTE *Var; Пишу ф-цию метод.
//это создаю в акликации в которой получю значениеBYTE *HereIWillGetValue = NULL;Method->GetBytes(HereIWillGetValue);//Это пишу в COM объекте:STDMETHODIMP GetBytes(BYTE *value) { HRESULT = S_OK; value = Var; return hr; }
Но чтото не клеится, поправьте, пожалуйста 
6 ответов

*value = *var;


*value = *var;
Тогда ругается, по поводу Adress access violation...


знать не выделяешь память под один байт в вызывающем метод объекта приложении.собственоо вот:
BYTE *HereIWillGetValue = NULL;
и не выделяешь.
BYTE HereIWillGetValue = 0;Method->GetBytes(&HereIWillGetValue);
надотолько это вернет один байт.если хочется больше надо выделить память в COM объекте и вернуть данные...можно, конечно и просто вернуть указатель на данные (главное не портить (нигде) эти данные и насчет MTA продумать...равно как и не забыть про удаление буфера).например так:
BYTE *HereIWillGetValue = NULL;Method->GetBytes(&HereIWillGetValue);BYTE* Var; //dont forget init this!STDMETHODIMP GetBytes(BYTE **value) { HRESULT = S_OK; *value = Var; return hr; 


Доброе утро.1. То есть, если я хочу получить данные в апликацию в её переменную BYTE *HereWillGetValue из COM объекта, которые находятся в переменной BYTE *Var; не через указатель а по значению, тогда, в первую очередь, я должен вернуть размер памяти, которую занимает BYTE *Var, чтобы выделить этот-же размер памяти под BYTE *HereWillGetValue? 1.a Как можно узнать размер памяти который занимает BYTE *Var в COM объекте? 2.Вернуть указатель на данные BYTE *Var: насчет MTA продумать - МТА - это что?


1. да, нужно передавать не только сам указатель на вновь созданный буфер (который потом будет удаляться вызывающим), но и размер полученного. если же вы просто хотите получить данные, и уверены что их никто не испортит, то можно вернуть только указатель и размер, при этом удалять память будет вызываемый.1а это должен знать сам COM объект. сколько выделяли, столько и будет.1б. а не почитать ли вам про COM вообще? MTA это multithreaded apartament.


Cпасибо, разобрался.