Thema: Delphi Named Pipes - mitlesen

Einzelnen Beitrag anzeigen

Benutzerbild von kuba
kuba

Registriert seit: 26. Mai 2006
Ort: Arnsberg
588 Beiträge
 
Delphi 11 Alexandria
 
#1

Named Pipes - mitlesen

  Alt 17. Sep 2009, 15:33
Hallo,

ich hab hier ein Programm, das kommuniziert über RS232, gibt diese Daten dann per Named Pipes an andere Prozesse weiter.
Mittlerweile habe ich es geschafft die Named Pipe mitzulesen, ich erhalte jedoch immer nur unvollständige Informationen.
ich vermute es liegt an dem eingesetzten Timer, der nach Ablauf den Buffer neu füllt und nichtaufgezeichnete Daten überschreibt.

Aber wie macht man das denn ???

Folgenden Code verwende ich zur Zeit:

Delphi-Quellcode:

procedure TForm2.FormCreate(Sender: TObject);
var
   FSA : SECURITY_ATTRIBUTES;
   FSD : SECURITY_DESCRIPTOR;
begin
   Timer1.Enabled:=false;
   Memo1.Clear;
   InitializeSecurityDescriptor(@FSD, SECURITY_DESCRIPTOR_REVISION);
   SetSecurityDescriptorDacl(@FSD, True, nil, False);
   FSA.lpSecurityDescriptor := @FSD;
   FSA.nLength := sizeof(SECURITY_ATTRIBUTES);
   FSA.bInheritHandle := True;

   Pipe:= CreateFile(PChar('\\.\pipe\Output'),
                     GENERIC_READ or GENERIC_WRITE,
                     0,
                     @FSA,
                     OPEN_EXISTING,
                     0,
                     0);
end;

procedure TForm2.Timer1Timer(Sender: TObject);
begin
  Button1Click(self);
end;


procedure TForm2.Button1Click(Sender: TObject);
var
   buffer: shortstring;
   dw : dword;
begin
   Timer1.enabled:=true;
   ReadFile(Pipe, buffer, sizeof(buffer), dw, nil);
   Memo1.Lines.Add(buffer);
end;
Jemand eine Idee wie ich die Pipe komplett mitschneiden kann ?

KUBA
Stefan Kubatzki
E=mc2
  Mit Zitat antworten Zitat