Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2814 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [VC++] Affecter 1 adresse connue au pointeur d'1 structure

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VC++] Affecter 1 adresse connue au pointeur d'1 structure

n°1071678
cm_felix
Posté le 04-05-2005 à 13:49:40  profilanswer
 

Bonjour,
 
J'ai une application 1 qui initialise et remplit en mémoire une structure avant de lancer une application 2.
 
Dans l'application 2 je suis sur VC++ 6.00 et je redéfinis une structure identique à la première.
J'aimerais que cette structure pointe sur la zone mémoire de la première application, or cela ne marche pas.
 
Je suis dans le cadre d'une migration 16 bits en 32 bits. Or en 16 bits, cela fonctionnait.
 
voici mon programme.
 
 
Dans le fichier *.hpp de l'application 2:
/
Code:
// Définition de ma structure
typedef struct {
 char sz...
 long ...
 ...
} S5COMMUN;
 
class Ihm
{
    public:
 S5COMMUN * pts5;  
};
 
 
Dans le fichier *.cpp de l'application 2:
Code:
int Ihm::GetSegments ()
{
 CString szAd5;
    long ad;  
    const char *chAd;  
    szAd5 = "811794438"; // Adresse de mémoire de la structure de l'application 1 (exemple)
    if (szAd5.IsEmpty())
        return 0;
 
    // initialisation des pointeurs
    chAd = (const char*)szAd5;    
 ad = atol (chAd);  
//    pts5 = (S5COMMUN _far *)ad; // Fonctionne ainsi en 16 bits
    pts5 = (S5COMMUN  *)ad;  // Ne fonctionne pas en 32 bits!!!
 
    return 1;
}
 
 
Merci de m'aider.

mood
Publicité
Posté le 04-05-2005 à 13:49:40  profilanswer
 

n°1071686
blackgodde​ss
vive le troll !
Posté le 04-05-2005 à 13:55:12  profilanswer
 

les 2 processus ont chacun leur espace d'adressage de leur coté.
 
pour ecrire avec l'un dans l'autre, utilise OpenProcess/WriteProcessMemory/ReadProcessMemory (cf msdn)
 
sinon tu peux utiliser un espace mémoire partagé, comme un FileMapping par exemple (CreateFileMappping/MapViewOfFile)


---------------
-( BlackGoddess )-
n°1071688
Friday Mon​day
Trop de hérissons écrasés...
Posté le 04-05-2005 à 13:55:51  profilanswer
 

L'adressage direct, c'est moyen.
En 32 bits, c'est pas terrible
Et en C++, c'est MAL.
 
Les l4g permettent d'éviter ces magouilles, on n'est plus en assembleur.
 
C'est pour ça qu'il existe moult protocoles de communication entre les applis.


Message édité par Friday Monday le 04-05-2005 à 14:01:05
n°1071768
cm_felix
Posté le 04-05-2005 à 14:43:05  profilanswer
 

blackgoddess a écrit :

les 2 processus ont chacun leur espace d'adressage de leur coté.
 
pour ecrire avec l'un dans l'autre, utilise OpenProcess/WriteProcessMemory/ReadProcessMemory (cf msdn)
 
sinon tu peux utiliser un espace mémoire partagé, comme un FileMapping par exemple (CreateFileMappping/MapViewOfFile)


 
 
Merci pour l'information, mais je ne trouve pas de doc en Français!
 
Par hasard, ... , tu n'en n'aurais pas?
 
Merci tout de même

n°1072025
cm_felix
Posté le 04-05-2005 à 16:11:08  profilanswer
 

Personne d'autre n'a d'idée!
Car cela ne passe toujours pas!!!
 
Je ne comprend pas comment de l'interpréter compilé avec VC++ peut marché et que VC++ lui même refuse!!!
 
Merci de me fournir d'autre info, j'ai 4 jours pour trouver la solution, ou je passe la porte!

n°1073144
blackgodde​ss
vive le troll !
Posté le 05-05-2005 à 19:18:57  profilanswer
 

non je n'ai pas de doc en francais ...


---------------
-( BlackGoddess )-
n°1084528
slash33
Posté le 15-05-2005 à 18:53:12  profilanswer
 

+1 pour mémoire partagée ou socket

n°1084772
blackgodde​ss
vive le troll !
Posté le 15-05-2005 à 21:59:03  profilanswer
 

socket c'est plus orienté flux/envoi de message que stockage d'informations je trouve :/
en tout cas c'est sur, l'ecriture dans la mémoire d'un processus ne doit pas etre la solution la plus adapté
je voterais donc mémoire partagée


---------------
-( BlackGoddess )-

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [VC++] Affecter 1 adresse connue au pointeur d'1 structure

 

Sujets relatifs
Adresse Mac par PHPNommer un pointeur i par Mi, i variable?
[VBA] Question simple sur InStr et adresse e-mail...[VISUAL STUDIO 2003] structure des répertoires ?
Valider un formulaires par la barre d'adresse pour reinitialis routeurpointeur et tableaux
adresse du projetobtenir mon adresse IP en Perl
Passer une structure dans une shared memory POSIXaide Java au bout du pointeur
Plus de sujets relatifs à : [VC++] Affecter 1 adresse connue au pointeur d'1 structure


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR