Historiquement, le handle, c'est un truc inventé par microsoft dans windows 16 bits, quand ses mecanismes internes pouvaient changer l'adresse d'une structure et rendre un pointeur sur icelle invalide (fallait locker et unlocker la structure en memoire avant d'acceder/modifier ses champs).
Bref, c'etait un truc merdique, du a une gestion de la memoire merdique.
Il en reste quelques traces dans les definitions de types de windows, mais apart dans le cas de l'utilisation de COM et des technologies derivées, ca correspoond a de vrais pointeurs maintenant, sauf erreur de ma part.
Le probleme du masquage des types en C quand on ecrit une APi est assez courant.
En general, la solution la plus frequente est:
1) tu as tes types internes pas connus de l'utilisateur
2) tu as tes types externes, connus de ton code et de l'utilisateur
3) les fonctions de l'API ne prennent que les types externes
4) Tous les parametres des fonctions de l'API sont
* verifies (validité,...)
* copiés en types internes. Copiés, ce qui fait que tout ce qui sera manipulé aura ete alloué par ton code, et ne se plantera pas sur une allocation mal faite dans le code utilisateur.
En plus, utiliser des types externes permet en general d'avoir une cohérence de nommage dans l'API.
A+,
Message édité par gilou le 03-10-2003 à 11:32:06
---------------
There's more than what can be linked! -- Iyashikei Anime Forever! -- AngularJS c'est un framework d'engulé! --