le 03-16-2012 05:41 AM
Bonjour à tous,
je développe actuellement une application sous LabVIEW 7.1 qui doit s'interfacer avec un LDAP en Active Directory.
Je recontre un problème avec le type Integer8 (64 bits) de Mircosoft qui est utilisé notamment pour le codage de certaines propriétés du LDAP (accountExpires,lastLogon...).
Le problème intervient au moment de la lecture des propriétés codées en Integer8: pour transformer mes données .Net en Variant j'utilise le VI
.NetObjectToVariant mais celui-ci me renvoit dans le cadre d'un Integer8 un refnum.
Par exemple j'obtiens:
.NET Refnum OMId Class Size: 98, Assembly Name: mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Class Name: System.__ComObject
0x1A200006
Comment doit-on procéder pour accéder à valeur de la propriété?
Merci d'avance pour votre aide.
le 03-16-2012 06:07 AM
le 03-16-2012 07:27 AM
Bonjour,
En pièce jointe se trouve une copie d'écran du bout de code que j'utilise ainsi que le résultat obtenu.
J'ai également essayé d'obtenir la valeur en passant par la méthode "Get" mais le résultat est identique, j'imagine que tout se joue au niveau du VI .Net Object To Variant.
Pour infos j'utilise le System.DirectoryServices(2.0.0.0).
Si jamais vous avez des idées je suis preneur...
Merci d'avance
03-16-2012 08:29 AM - modifié 03-16-2012 08:29 AM
Bonjour,
Il me semble que la sortie de PropertyValueCollection.Value est une référence, donc on doit surement être dans ce cas précis :
Accessing Values by Reference when Invoking a .NET Assembly Method from LabVIEW
Cordialement,
le 03-16-2012 08:45 AM
Re-bonjour,
Merci pour l'info je vais regarder ça de plus près,
Effectivement la sortie de PropertyValueCollection.Value semble être une référence, référence qui est traitée par la suite dans le VI .NetObjectToVariant dans mon code.
Vu qu'avec le même bout de code j'arrive à récupérer des valeurs codées avec un type différent (I32,String,TimeStamp...), peut-on en déduire que c'est ce VI qui ne supporte pas le type Integer8?
le 03-16-2012 11:01 AM
Bonjour,
D'ou voyez vois qu'il s'agit d'un Integer8 ?
Moi je vois : "Type : System.Object ".
Cordialement,
le 03-16-2012 11:22 AM
Bonjour,
l'attribut de la propriété accountExpires auquel je tente d'accéder est codé en Integer8 d'après MSDN:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms675098(v=vs.85).aspx
Je m'attends donc à recevoir un Integer8 mais à la place j'obtiens un System_Object que je ne sais pas interpréter.
Cordialement
le 03-19-2012 10:05 AM
le 03-19-2012 11:11 AM
Bonjour,
merci pour votre aide.
Malheureusement j'avais déjà essayé de "caster" la sortie mais sans succès: la valeur change à chaque execution du VI. On doit probablement "caster" la référence qui est renvoyée et non la donnée de la propriété.
Cordialement