KOB22 wrote:
> Travaillant sur l'utilisation de librairies Dll(s) en général et des
> API Windows en particulier, je me trouve confronter à un problème: le
> passage de paramètres par référence à une API, en l'occurrence dans le
> cas particulier que je traite actuellement il s'agit de la fonction
> GetVersionExA de la librairie kernel32.dll.
> Cette fonction qui permet de retourner différentes informations sur la
> version du système d'exploitation prend comme paramètre un type de
> paramètre personnalisé constitué de cinq numériques et d'une chaîne de
> caractères. D'une manière qui me semblait naturelle, j'ai cherché à
> passer ce paramètre en l'incluant dans un cluster mais cela entraîne
> soit un message d'erreur avec fermeture parfois de l'application, s
oit
> un retour de fonction égal à zéro (ce qui traduit une erreur). De la
> même manière, j'ai essaye d'empaqueter ce cluster dans un tableau 1D
> avec un seul élément mais j'obtiens guère mieux de résultat. J'ai
> remarqué à ce titre que le passage de paramètre par référence me poser
> systématiquement des problèmes en LabVIEW, ce qui m'amène à penser
> qu'il pourrait y avoir une astuce que je connais pas.
Sorry for answering in English but may French is so bad you won't be
able to make much sense of it.
First LabVIEW clusters with variable sized elements (strings or arrays)
are never compatible with anything WinAPI fucntions do expect.
The specific parameter for this function is actually simply a flat
buffer of 156 bytes as the string at the end is a fixed size buffer and
therefore is inlined in the structure and not a pointer to the string at
all. The problem is about retrieving the according information
afterwards. But I happened to have done this function a few years ago
and include it here.
Rolf Kalbermatter