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 :
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.
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
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 :
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.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.
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.
Partager