Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.04;
Скачать: CL | DM;

Вниз

Правильно передать IStream из DCOM-клиента на DCOM-сервер ?   Найти похожие ветки 

 
Cheburek   (2004-11-15 20:44) [0]

Уважаемые мастера, здравствуйте.
Мучаюсь над проблемой передачи интерфейса IStream
из DCOM-клиента на DCOM-сервер для того, чтобы сервер
мог читать\писать поток, переданный ему клиентом.

Возможно ли такое вообще ? В описании к IStream сказано,
что это обычный СОМ-интерфейс. Я так понимаю что его пере-
давать в качестве параметра на DCOM сервера ? Или я не прав*?

Пример клиента:
//  В метод сервера передаётся имя желаемого файла и IStream приёмника.
var dsa : TStreamAdapter;
   DestSt : TFileStream;
   dI : IStream;
begin
DCOMConnection1.Connected := true;
IMySoed := IMyTestZakachDisp(DCOMConnection1.GetServer);
DestSt := TFileStream.Create("D:\Server.exe",fmCreate);
dsa := TStreamAdapter.Create(DestSt);
di := IStream(dsa);
IMySoed.ReadFile("D:\Program Files\Borland\Delphi7\Projects\SecretPipe2\Server\Server.exe", di);

Пример сервера :
procedure TMyTestZakach.ReadFile(FileName: OleVariant; const Param2: IUnknown);
var ssa : TStreamAdapter;
   SourceSt : TFileStream;
   sI, dI : IStream;
   size : int64;
   rd, wr : int64;
begin
SourceSt := TFileStream.Create(FileName, fmOpenRead);
ssa := TStreamAdapter.Create(SourceSt);
si := IStream(ssa);
size := ssa.Stream.Size;
di := IStream(Param2);
if si.CopyTo(di, size, rd, wr) =  S_OK then ShowMessage("Всё хорошо.");
// Si.Copy вызывает исключение со ссылкой на ole32.dll ????

Подкажите, что можно сделать ?
Приму любую помощью.
Заранее спасибо всем ответившим. С уважением.....

P.S. требуется для перекачки файлов.


 
Чебуратор   (2004-11-16 11:23) [1]

Никто не знает чтоли ?


 
hexone   (2004-11-19 17:48) [2]

Если необязательно использовать IStream, используй SafeArray


 
Набережных С.   (2004-11-27 15:36) [3]

>Cheburek   (15.11.04 20:44)

>procedure TMyTestZakach.ReadFile(FileName: OleVariant; const Param2: IUnknown);
>di := IStream(Param2);

"Как прикажешь тебя понимать, Саид?" Ну я-то ладно, но как это должны понимать Proxy- и StubManager? Как они могут догадаться, что нужно создавать заглушку и заместителя для IStream?

di := Param2 as IStream;]

И, кстати, указатель стрима надо-бы переставить на начало, а?



Страницы: 1 вся ветка

Текущий архив: 2005.09.04;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.072 c
2-1121775602
drakoga
2005-07-19 16:20
2005.09.04
Как оприделить температуру


4-1121430528
JohnSmith
2005-07-15 16:28
2005.09.04
Работа с Mutex


1-1123094473
Juice
2005-08-03 22:41
2005.09.04
Отсутствие множественного наследования


3-1122373054
Yurisimus
2005-07-26 14:17
2005.09.04
База *.xls через ADO в Delphi


14-1123943420
root
2005-08-13 18:30
2005.09.04
Игры для мобильников.