Createfile und \\.\?



  • Hallo,

    habe gerade im Mumble code (Chat Programm) eine Creatfile gefunden das als Pipe oder IPC verwendet wird. Leider sagt mir das nichts. Shared Memory ist es wohl nicht, da hier ein File Handle verwendet wird und FileMapping nicht verwendet wird. Eine Unicode Datei wirds wohl auch nicht sein, da \.\ doch eigentlich ein Device sein sollte. Einen Treiber namens pipe hat das Programm aber nicht.

    hSocket = CreateFileW(L"\\\\.\\pipe\\myPipe", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
    if (hSocket == INVALID_HANDLE_VALUE) 
    {
       ods("Pipe: Connection failed");
       return;
    }
    

    Was macht der Code genau?
    bzw. wie kann ich mir eine Pipe vorstellen?





  • Wie kann ich mir das technisch vorstellen?
    Programm 1 macht Create und schreibt "hallo welt".
    Programm 2 macht irgendwann auch Create mit open_existing und macht readfile.
    Alles dazwischen ist gepuffert?

    Sollte Program1 einen Quit hinlegen bevor Program2 gestartet wurde ist allerdings nichts in der Pipe?

    Named pipes can be used to provide communication between processes on the same computer or between processes on different computers across a network. If the server service is running, all named pipes are accessible remotely. If you intend to use a named pipe locally only, deny access to NT AUTHORITY\NETWORK or switch to local RPC.

    If the server service is running, all named pipes are accessible remotely.
    Wie geht das?


  • Mod

    Ja! Ja! Ja, denn dann geht die Verbindng sfort hopps.

    Was ist Dein Problem das zu verstehen?
    Ein internen Dienst manages den I/O der Pipes (also eine Art eigene sDateisystem).



  • Ich verstehe nicht warum IPC mit shared Memory und MapViewOfFile gleichgesetzt wird anstatt Pipes dafür hergenommen werden.
    Bei der Beschreibung für Netzwerk frage ich mich sogar ob Socket Programmierung noch einen Sinn macht, wenn man einfach durchpipen kann.


  • Mod

    Du fragst zurecht.
    Ich habe noch nie verstanden warum alle eher auf Sockets setzen innerhalb eine MS-Netzwerkes.

    Ich habe hier bisher immer nur Named Pipes eingesetzt. Und es ist sicher, weil es eben auch die Sicherheitsmechanismen alle komplett implementiert.

    Shared Memory und Memory Mapped Files ist ja ein anderer Ansatz.


Log in to reply