Mutex-Objekte, Shared Memory und das Suchen von Objekten



  • Servus Forum,

    ich war lange nicht mehr hier und da mich Cpp nun wieder hat - da muss und will ich auch hier wieder aufschlagen :-).

    Ich soll mit Shared Memory via WinAPI arbeiten. Jetzt habe ich ein Klickibunti-Fremdprogramm, bei dem ich angeben konnte, wie das Mutex-Objekt heisst und das Shared-Memory. Nun will ich eine CPP-Konsolenanwendung schreiben, hole mir hier Zugriff auf das Mutex-Objekt-Handle und das Shared-Memory-Handle(da gab es Code-Snippets). Ich wundere mich: wie kann ich nach dem Objekt suchen, dass irgendwo im Speicher liegt. Im konkreten Fall gab ich beim Fremdprogramm an, dass ich den relevanten Wert bitte auf 'M0.1' hinterlegen will. Ich vermute es handelt sich dabei um eine Adressangabe, wo dann ein boolescher Wert liegt.

    Kann man eigentlich das komplette SharedMemory so debuggen, dass man sich die ganzen dortigen Objekte anzeigen lassen kann? Danke vorab.



  • Falsches Forum, du willst zur WinAPI.

    Sieh dir mal die Dokumentation an: CreateMutex bzw. OpenMutex. Da kannst du dem Mutex einen Namen geben und per Namen den Mutex holen. Hat also mit Speicheradressen nichts zu tun. Ich wüsste nicht, wie man alle Mutexe auflistet, das fände ich auch nicht sonderlich sinnvoll. Wenn man den Mutex nicht kennt kann man ihn auch nicht sinnvoll benutzen.



  • Es gibt keine "Objekte" im Shared-Memory -- Shared-Memory ist einfach nur Speicher.
    Umgesetzt wird das unter Windows durch memory mapped Files.

    Bzw. genauer gesagt: natürlich kann man da Objekte reinlegen, aber es gibt keinen Standards diesbezüglich. Weder darüber wie die Objekte aussehen sollten noch ob oder wie man sie in einem Verzeichnis eintragen soll damit sie von anderen Programmen über den Namen gefunden werden können.

    Du hast deinen rohen Speicher, und das war's. Falls das Programm also mehrere Objekte mit Namen im selben Shared-Memory Abschnitt ablegen kann, dann musst du rausbekommen wie es das macht.

    ----

    Das einzige dem man - mit Standardmitteln - einen Namen geben kann ist der gesamte Shared-Memory Abschnitt. Der ist wie gesagt ein memory mapped File. Und memory mapped Files können halt einen Namen haben. Wie genau das geht ist egal, darum kümmert sich der Kernel. Der pflegt halt irgendwo eine Liste von benannten Kernel-Objekten, und da drinnen kann er nachsehen.

    ----

    Und wenn ich hier Standardmittel schreibe, dann meine ich WinAPI Standardmittel, nicht C++. => Dieser Thread gehört ins WinAPI Forum.



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) 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.


Anmelden zum Antworten