Accueil > Forum > > > > probleme de taille de structure
probleme de taille de structure
mardi 22 juillet 2008 à 10:57:43 |
probleme de taille de structure

hisoka56
|
Bonjour, je suis en train de programmer un lecteur de mémoire et j'ai un problème avec la taille d'une structure. Voici ma structure : struct QuestLog { DWORD ql1; DWORD ql2[2]; };
struct Cplayer { /*0x0000*/ WOWGUID GUID; /*0x0008*/ DWORD Type; /*0x000c*/ DWORD Entry; //tons of other ....
/*0x03b0*/ QuestLog questLog[25]; /*0x04dc*/ VisibleItem visibleItem[19]; //others... };
Je rempli ma structure à l'aide de mon MemoryReader avec : CPlayer player; mem->read( playerptr.UnitData, &player, sizeof(CJoueur) ) ; et bool CMemoryReader::read(const DWORD &addr, void * value, const DWORD &size_, SIZE_T * total) { if( this->gHandle == INVALID_HANDLE_VALUE ) return false; BOOL ok = false; ok = ReadProcessMemory(this->gHandle, (LPCVOID)addr, value, size_, total); _error(); return ok; }et mon code de test : DWORD pos_GUID = (DWORD) &(j->GUID); DWORD pos_rel_questlog = (DWORD) &(j->questLog) - pos_GUID; DWORD normal_position_visibleitem = pos_rel_questlog + sizeof(j->questLog);
DWORD pos_rel_visibleitem = (DWORD) &(j->visibleItem) - pos_GUID; ILogger::Log("relative adress QuestLog : %p", pos_rel_questlog); ILogger::Log("normal position (should be) of visibleItem : %p", normal_position_visibleitem); ILogger::Log("the value i get : %p", pos_rel_visibleitem);Si je ne faisais aps d'erreur, je devrais avoir les même valeurs pour "normal_position_visibleitem" et "pos_rel_visibleitem" mais j'ai une différence de 4 bytes (1 DWORD?)  En calculant manuellement la taille de questLog je trouve (DWORD=4 *3 * 25) = 300 = 12C or 12C+3B0 = 4dc mais dans mon programme de test, ce n'est pas ce que je trouve. Je ne comprend pas pourquoi j'ai une différence (ce qui décale les adresses de toute ma structure et toutes les autres membres sont donc faux.
|
|
mardi 22 juillet 2008 à 11:48:45 |
Re : probleme de taille de structure

Neo_Fr
|
Réponse acceptée !
Salut regarde bien si ta structure est correctement alignée, si ce n'est pas le cas le compilateur peut rajouter des octets pour l'aligner a ta place, par defaut les structures sont alignés sur 4 octets, il est cependant possible de changer cette valeur grace a la directive pack: http://msdn.microsoft.com/en-us/library/2e70t5y1(VS.80).aspx
Un peu de doc sur l'alignement des structures:
http://msdn.microsoft.com/en-us/library/71kf49f1(VS.80).aspx
Cette doc s'applique pour les systemes 64bits donc les structures sont alignées sur 8 octets, mais le principe reste le meme..
Neo_Fr
|
|
mardi 22 juillet 2008 à 12:05:03 |
Re : probleme de taille de structure

hisoka56
|
je te remercie, je ne connaissait rien en alignement, d'ailleurs, ça me semble toujours un peu flou mais j'ai réussi à corriger mon erreur, en ajoutant juste un pack(4).
Mais je vois pas trop pourquoi le compilateur fais ce type d'arrangement c'est pour gagner de la vitesse?
|
|
Cette discussion est classée dans : structure, dword, pos, questlog, visibleitem
Répondre à ce message
Sujets en rapport avec ce message
Entete d'un .avi [ par kididouille ]
Dans vfw.h on trouve les structures des entetes des .avi Il y a la structure principal MainAVIHeader (56 bytes) Mais il y a également une structure AV
les valeur de structure COMMTIMEOUTS ?????????? [ par hattabfethi ]
Je veux faire une communication PC automate S7-200 via le port rs232.Si qq peut me donner les valeurs de la structure COMMTIMEOUTS. typedef struct _C
communication entre PC et automate siemens S7-200 à travers le port série??????????? [ par hattabfethi ]
SVP aider moi, mon problème est le suivant :j'ai un documents qui explique le protocole ppi (explique les formats de trames acceptées par le cpu de l'
Copier le contenu d'une structure dans un fichier en C++ [ par brute ]
Bonjour, J'ai un problème pour copier le contenu d'une structure dans un fichier en c++. J'ai bien regardé les messages postés dans le forum sur ce s
Structure et FileMapping [ par Loukhass ]
Bonjour. Je dois utiliser le filemapping pour transmettre un tableau de structure d'un programme à un autre. Mon premier probleme était le fileMappin
MS3D [ par mondrone ]
Bonjour à tous. Je cherche des information sur la structure des fichiers ms3d. J'ai déjà pu voir en faisant une recherche sur le forum, que certains s
Question sur les tableaux de structures [ par Kleidp ]
Bonjour,j'ai quelques problèmes avec les tableaux de structure. Tout d'abord voici une de mes structures:typedef struct{ float r,g,b;}text;text tex
fonction recursive [ par infodaoudi ]
Bonjour, j'ai la fonction recusive ci-dessu, suposons qu'on a un cas qui passe par les etapes 2/3/5/2/3/4, normalement la valeur de retour de la fonct
Appel de structure avec argv [ par Neoflo ]
Voici mon problème, j'ai défini un type de structure nombre. Puis j'ai initialisé 2 élements avec ce type (francais et anglais). Maintenant, suivant
tableau de structure [ par lunatic34 ]
Salut a tous!!!!voila j'ai mis un tableau de structure en memoire et je voudrais l' enregistrer dans un fichier donc s'il y a des personnes qui peuven
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURSTECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURS par ROMELARD Fabrice
Animé par: Laurent Cotton Le développement dans SharePoint 2010 passe par plusieurs axes qui seront évoqués dans cette session, mais plus particulièrement les développements simples lié au besoin Business Business Connectivity Services Ce BCS es...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOURTECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOUR par ROMELARD Fabrice
Cette session est la dernière pleinière de ces 3 jours de TechDays Paris 2010. Généralement, cette troisième journée est plus axée sur l'avenir vu par Microsoft. Après un retour sur l'avenir vu par la Science Fiction ou par ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion
Forum
RE : WIN APIRE : WIN API par racpp
Cliquez pour lire la suite par racpp
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|