Comment fait-on quand une fonction d'API renvoie un buffer ?
Bonjour/bonsoir joyeux programmeurs.
Je suis en train de me battre contre- enfin, avec - un programme C utilisant des API, et que je veux transposer en VB6. Et là, je tombe sur un bec !
Un certain appel va me retourner un pointeur sur un buffer, soit que la fonction me le construise à la demande, soit que ec soit un buffer système. Mais à l'appel, je dois mettre un pointeur NULL !
Je viens de trouver un tutoriel (ici même, d'ailleurs) qui dit que, même si, dans la déclaration de la fonction, le pointeur est spécifié "byref", dans l'appel de la fonction, on doit écrire "byval 0&" : je comprends parfaitement bien la logique : il faut bien que l'argument soit "0", et pas l'adresse d'une zone d e8 octets contenant des "0".
Mais comment je récupère le buffer, après ?
Exemple :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
type GUID
Data1 as long
Data2 as integer
Data3 as integer
Data4[8] as byte
end type
public declare function LaFonctionDeLAPI lib "LAPI" (byref LeGUIDvoulu as GUID, byref Toto as Objet) as long
' J'arrive ici avec l'objet préparé dans MonObjet
Err = LaFonctionDeLAPI(byval 0&, MonObjet)
... |
Ca ne peut pas être ça, il me manque le moyen de récupérer le GUID. mais je ne connais pas le moyen de résoudre ce problème en VB6.
A l'aide !
Merci d'avance.
AMIcalement.