LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Passage d'un paramètre par référence à une dll

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,
soit 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.

Merci d'avance pur toute aide voire réponse.
0 Kudos
Message 1 of 5
(2,710 Views)
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
Rolf Kalbermatter
My Blog
0 Kudos
Message 2 of 5
(2,710 Views)
Hello and thank you very much

I a lot thank you for your help. I have just looked at the vi which you joined: it is strictly speaking impressive and I regret no step to put being incensed much longer.... I am going to apply to understand the diagram because I think of being able to learn many of it
Still thank you to you to be to give this punishment.

RICHARD RUDY
0 Kudos
Message 3 of 5
(2,710 Views)
Monsieur,

Vous trouverez ci-joint un exemple vous permettant de réaliser ce que vous desirez:

http://venus.ni.com/stage/we/niepd_web_display.DISPLAY_EPD4?p_guid=B45EACE3DD8F56A4E034080020E74861&p_node=DZ52048&p_submitted=N&p_rank=&p_answer=&p_source=Internal

cordialement,

NISupport
0 Kudos
Message 4 of 5
(2,710 Views)

Bonjour,

 

 

j'ai le même problème , dans un programme CVI je doit utiliser une fonction définit dans une DLL qui a des paramètres passer par référence

au moment de la compilation j'au des erreurs au niveau de cette fonction qui me signale que je peut pas utilisé l'opérateur & ; autrement dit le passage des variable par référence .

 

est ce qu'il pas une astuce qui me permet de dépassé mon problème sachant que je peut pas changer le code de la fonction donc je doit absolument faire le passage des variable par référence

 

merci bien

 

0 Kudos
Message 5 of 5
(2,250 Views)