Re-bonjour à tous.

Je viens préciser mes précédentes demandes, en espérant que ceux qui veulent bien me lire comprenne bien mon problème.

J'ai trouvé sur Internet le source d'un exemple de programme qui utilise l'API WinLanAPI de Windows. Dans cet exemple, j'ai trouvé la structure suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 Type WLAN_AVAILABLE_NETWORK
   strProfileName               As String * WLAN_MAX_NAME_LENGTH '
   dot11Ssid                    As Long 'DOT11_SSID                  
   dot11BssType                 As Long 'DOT11_BSS_TYPE          
   uNumberOfBssids              As Long                          
   bNetworkConnectable          As Byte                          
   wlanNotConnectableReason     As Long                          
   uNumberOfPhyTypes            As Long                         
   dot11PhyTypes(8)             As Long ' DOT11_PHY_TYPE         
   bMorePhyTypes                As Byte                          
   wlanSignalQuality            As Long                          
   bSecurityEnabled             As Byte                         
   dot11DefaultAuthAlgorithm    As Long ' DOT11_AUTH_ALGORITHM  
   dot11DefaultCipherAlgorithm  As Long ' DOT11_CIPHER_ALGORITHM 
   dwFlags                      As Long                          
   dwReserved                   As Long                          
End Type
Pour bien souligner le problème, j'attire l'attention des lecteurs sur le fait que cette structure mélange un string* (la longueur est 256), des long et des byte.

Si je veux utiliser cette API en VB6, je vais devoir recopier ce bloc mémoire dans mon "espace VB6", et retrouver mes petits (string, longs et bytes) dans le résultat.

En espérant résoudre ce problème, j'ai fait une recherche sur le thème de l'alignement dans les API windows, et j'ai trouvé ça :
The compiler uses these rules for structure alignment:

Unless overridden with __declspec(align(#)), the alignment of a scalar structure member is the minimum of its size and the current packing.

Unless overridden with __declspec(align(#)), the alignment of a structure is the maximum of the individual alignments of its member(s).

A structure member is placed at an offset from the start of its parent structure which is the smallest multiple of its alignment greater than or equal to the offset of the end of the previous member.

The size of a structure is the smallest multiple of its alignment greater than or equal to the offset of the end of its last member.

__declspec(align(#)) can only increase alignment restrictions.
J'ai envie d'en déduire que, dans la structure ci-dessus, chaque "byte" est, en fait, suivi de 3 (ou 7 ???) octets inutilisés. et que l'espace mémoire alloué à la structure est d'autant plus grand.

L'objet de ce message est de demander aux habitués de ce forum de me faire part de leur expérience en la matière.

Qu'ils soient par avance remerciés de leur contribution.

Et je souhaite de joyeuses fêtes à tous.

AMIcalement.