Форум: "Corba";
Текущий архив: 2005.09.04;
Скачать: [xml.tar.bz2];
ВнизПравильно передать 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 вся ветка
Форум: "Corba";
Текущий архив: 2005.09.04;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.018 c