Pipes
-
Hallo,
ich habe folgendes Problem ich will eine Pipe zwischen zwei Prozessen aufziehen.
Dazu hab ich mir eine .dll geschrieben auf die die beiden Prozesse zugreifen und die dann die Pipe erstellen. (aufgrund von anderen Modularitäten im Projekt muß das so sein)Die dll hat die funktionen
Init -> create named Pipe und Create File
RX und TX -> sollen Connecten und dann read bzw write ausführen.Jetzt hab ich das problem das in den RX bzw TX funktionen vom anderen Prozess uas das Hande nicht bekannt ist um ConnectPipe aufzurufen.
Kann mir jemand sagen wie ich an das Handle von dem anderen Prozess komme?
Mit das in einem Shared Memory zu merken halte ich für nicht gerade sinnvoll.
Grüsse
Piper
-
Die Pipe hat doch 'nen Namen. Damit kommst Du doch auf beiden Seiten an das Handle ran.
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x) in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
kannst du mir vllt noch die Funktion sagen.
In der Init mache ich
[cpp]
/create pipe
Pipe = CreateNamedPipe(Name,...Pipe = CreateFile(Name, ...
[\cpp]jetzt ist hier das Handle gültig
Wie connecte ich denn jetzt mit namen zu der Pipe?
weil,ConnectNamedPipe(Pipe,NULL); ja ein Handel erwartet!
Und zwei mal createFile (also ens für RX bzw. TX) geht ja wohl schlecht
-
Was gibt den CreateNamedPipe() zurück? - RTFM
-
-
Piper schrieb:
Wie connecte ich denn jetzt mit namen zu der Pipe?
weil,ConnectNamedPipe(Pipe,NULL); ja ein Handel erwartet!
...
Piper schrieb:
Ein handle
du hast ein Handle und eine Funktion die ein Handel erwartet

-
Ja schon nur aber in unterschiedlichn Prozessen.
Daher die frage wie ich an das entsprechende Pipe Handle komme weil das ja nicht in beiden von anfang an bekannt ist
-
[url=http://msdn.microsoft.com/en-us/library/aa365781(v=VS.85).aspx]Pipe Functions
[/url]
-
Ja aber da hab ich bisher noch nicht meine Lösung gefunden. Weil connect,read and write das Handle brauchen.
Ich brauch quasi ein prozessübergreifendes Handle oder etwas wie ich an das handle eines bestimmten Prozesses komme.
-
Liest Du nicht was man Dir schreibt?
Die Pipe bekommt einen Namen, von dem Pipe Server. JederClient kann die Pipe mit diesem Namen öffnen.Wieso benötigst Du da ein übergreifendes Handle? Du hast doch den Namen.
Das üble an Deiner Frage ist zusätzlich, dass Du offensichtlich nicht die Doku gelesen hast,die ein perfektes Beispiel enthält:
http://msdn.microsoft.com/en-us/library/aa365588(VS.85).aspx