2010-12-10 26 views
0


Existe-t-il un moyen de lire une autre mémoire de processus comme si sa mémoire faisait partie de ma mémoire de processus en C++/Windows (sans utiliser "ReadProcessMemory")?Unifier 2 mémoires d'espace

Que diriez-vous de "CreateRemoteThread"? Je veux être en mesure de lire la mémoire de l'autre processus, mais pas seulement dans mon thread à distance et de mon application elle-même. Est-ce que cela fera l'affaire?

+0

Qu'est-ce qui ne va pas avec ReadProcessMemory? – Puppy

+0

Je cherche un moyen plus rapide ... – Idov

Répondre

1

MSDN has a sample that explains how to use CreateFileMapping to share memory between two processes.

Fondamentalement, vous créez un mappage de fichier avec un nom explicite à l'aide du fichier de page en tant que magasin de sauvegarde, ouvrez ensuite que le mappage de fichiers dans le deuxième processus avec le même nom. Pour mapper la même adresse dans les deux processus, vous devrez passer une plage de mémoire convenue précédemment et la passer à MapViewOfFileEx. Gardez à l'esprit que vous ne pouvez pas garantir qu'une adresse mémoire est inutilisée entre deux processus en général, vous ne souhaiterez peut-être pas baser votre conception sur la même adresse entre deux processus.

1

Vous pouvez essayer de créer un fichier temporaire, puis de mapper le fichier à partir des deux processus. Cela devrait vous obtenir des pages de mémoire partagée.

+0

Créer un fichier? mais j'ai besoin de le mettre à jour en temps réel ... – Idov

+0

Si vous mappez le même fichier à partir des deux processus, la mémoire est directement partagée, tandis que le fichier disque est simplement utilisé pour l'espace de swap. Il se met à jour en temps réel, sans appel explicite de lecture ou d'écriture. –