IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Comment gérer une variable HANDLE? Que pouvons-nous faire avec ?


Sujet :

C++

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 28
    Points : 9
    Points
    9
    Par défaut Comment gérer une variable HANDLE? Que pouvons-nous faire avec ?
    Bonjour,

    Je dispose d'un code avec des variables HANDLE qui gère des événements si j'ai bien compris. Cependant je ne connais pas assez bien ces variables pour savoir qu'est ce qu'il est possible de faire avec. J'ai essayé de faire une DLL du code comportant ces variables mais je perds l'information. Donc j'aimerais savoir ce que je peux faire avec ces variables, y a t'il une méthode particulière à appliquer pour bien les traiter ?

    Je vous remercie par avance pour vos réponses.

    Karen.

  2. #2
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Bonjour,

    un handle est un terme générique pour désigner un alias de donnée. Un pointeur est un handle (on ne manipule pas la donnée elle-même, mais quelque chose qui nous permet de la désigner) ; une référence est un handle ; un identifiant d'objet est un handle ; un descripteur de fichier est un handle ; etc.

    Pour savoir que faire d'un handle qu'une fonction te retourne, il te faut te référer à la documentation du produit que tu utilises. En général, les API présentent un ensemble de fonctions servant à manipuler ces handles. RTFM .
    -- Yankel Scialom

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    HANDLE, c'est une poignée de porte, et l'image est bien trouvée.

    @prgasp77 donne bien l'aspect générique de la chose.

    HANDLE, c'est un descripteur de ressources données OPAQUE.

    Ce que vous pouvez faire avec, c'est fonction de la primitive qui vous l'a fournie.

    Donc, RTFM est la seule réponse sensée à votre question.

  4. #4
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 043
    Points : 2 234
    Points
    2 234
    Par défaut
    Salut,

    Un HANDLE est un terme générique pour "Identifiant de quelque chose". Il peut être tout et n'importe quoi. Ce peut être un entier qui est l'identifiant d'un objet, un pointeur sur un objet, ou un objet lui même contenant d'autre informations permettant d'identifier le "quelque chose".

    Si tu prend le HANDLE de l'API de Windows Win32 alors c'est un void*, donc c'est tout et n'importe quoi. Seule l'API de Windows sait comment l'utiliser, toi lorsque tu as un HANDLE, tu dois juste le donner en paramètre au fonction qui le demande.

    Par exemple, tu demande une ressource X avec LoadRessource("blabla"). Il te revois un HANDLE sur ta ressource ( Peut importe ce que c'est ). De la tu peux utiliser ta ressource avec des fonctions adéquate existante dans l'API. Tu devras donc passer ton HANDLE.
    Homer J. Simpson


  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    À part en de rares cas mal conçus (comme LoadImage()), le type HANDLE sous Windows désigne spécifiquement une référence vers un objet du kernel: Typiquement un fichier ouvert ou un objet de synchronisation (Event, Mutex, Timer, Sémaphore, etc. ou même un Thread ou Processus).

    De tels objets sont créés par des fonctions CreateXxxxx() qui retournent un HANDLE, agissant comme les descripteurs de fichier de *n*x. On les ferme avec CloseHandle(), et un objet du kernel est détruit quand le dernier HANDLE vers lui est fermé.

    Les opérations possibles sur les objets du kernel dépendent du type d'objet. Certains (Fichiers, Tubes) supportent la lecture et l'écriture via ReadFile() et WriteFile(), d'autres supportent l'attente de synchronisation via WaitForSingleObject() et ses fonctions sœurs, et tous supportent GetKernelObjectSecurity() pour savoir qui a quels droits dessus.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Que pouvons nous faire avec Pfsense, ipfire ?
    Par llaffont dans le forum Applications
    Réponses: 0
    Dernier message: 12/09/2013, 17h43
  2. Réponses: 22
    Dernier message: 17/06/2012, 10h28
  3. Réponses: 22
    Dernier message: 19/01/2011, 10h00
  4. Utiliser un pointeur IntPtr d'une BitmapSource WPF - que peut-on faire avec ça ?
    Par BruceWayne dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 01/06/2007, 18h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo