Bonjour à tous,
Voici quelques jours que je galère pour réaliser mes allocations mémoires, mon problème étant que ma structure peut contenir d'autres structures..
Au niveau d'un composant(à l'intérieur d'un même binaire), tout se passe pour le mieux-je pense-, seulement, une fois transféré à un autre composant, la structure global est bien là et allouée correctement, par contre, la structure dans la structure ne ressemble plus à rien..
Un petit exemple de code pour illustrer mes propos:
D'abord, la structure:
Déclaration de l'IDL + l'appel côté client:
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11typedef struct{ char* NameVoiture; int NumPlaque; }sVoiture; typedef struct{ sVoiture Voitures*; int NbVoitures; char* NomParking; }sParking
Maintenant côté serveur, voici comment je remplis la structure:
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
Vous l'aurez compris, j'ai essayé de fournir un exemple le plus général et le plus simplifié possible..
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28....GetVoitures(ULONG* cbOut, byte** p_voit) { *p_voit = (byte*)CoTaskMemAlloc(sizeof(sParking)); sParking* temp; temp = reinterpret_cast<sParking*>( *p_voit ); *cbOut = sizeof(sParking); .... temp->Voitures = CoTaskMemAlloc(temp->nbVoitures * sizeof(sVoitures)); ..... // Même principe pour le char* nom for(int i = 0; i < temp->nbVoitures; i++) { *cbOut += sizeof(sVoitures); *cbOut += strlen(nomdelavoiture)+1; temp->Voitures[i].NameVoiture = CoTaskMemAlloc(strlen(nomdelavoiture)+1); } .... // Donc ici, Côté Serveur, la structure semble être correctement remplie. // Par contre, lors du retour côté client, j'ai bien accès par exemple au nombre de voitures (présent à la 'racine' de la structure) mais par contre, je ne sais plus énumérer les voitures ni consulter leurs noms :( }
Ma première question: Je ne suis pas un familier de l'IDL ni de COM/DCOM, donc, est ce que mes initialisations vous semblent corrects?
La façon dont je remplis ma structure côté serveur aussi?
Ma deuxième question: Qu'est ce qui pourrait bien foirer?
Merci à vous

 

 
		
		 
        

 
			
			

 
   


 Allocation mémoire DCOM pour structure "complexe"
 Allocation mémoire DCOM pour structure "complexe"
				
 Répondre avec citation
  Répondre avec citation
Partager