Interface d’objet

Windows fournit des fonctions qui effectuent les tâches suivantes :

  • Créer un objet
  • Obtenir un handle d’objet
  • Obtenir des informations sur l’objet
  • Définir des informations sur l’objet
  • Fermer le handle d’objet
  • Détruire l’objet

Certaines de ces tâches ne sont pas nécessaires pour chaque objet. Certaines de ces tâches sont combinées pour certains objets. Par exemple, une application peut créer un objet d’événement. D’autres applications peuvent ouvrir l’événement pour obtenir un handle unique pour cet objet d’événement. Lorsque chaque application termine l’utilisation de l’événement, elle ferme son handle à l’objet . Lorsqu’il n’y a pas de handles ouverts restants pour l’objet d’événement, le système détruit l’objet d’événement. En revanche, une application peut obtenir un handle pour un objet de fenêtre existant. Lorsque l’objet de fenêtre n’est plus nécessaire, l’application doit détruire l’objet, ce qui invalide le handle de fenêtre.

Parfois, un objet reste en mémoire une fois que tous les handles d’objet ont été fermés. Par exemple, un thread peut créer un objet d’événement et attendre le handle d’événement. Pendant que le thread est en attente, un autre thread peut fermer le même handle d’objet d’événement. L’objet événement reste en mémoire, sans handles d’objet d’événement, jusqu’à ce que l’objet d’événement soit défini à l’état signalé et que l’opération d’attente soit terminée. À ce stade, le système supprime l’objet de la mémoire.

Les handles et les objets consomment de la mémoire. Par conséquent, pour préserver les performances du système, vous devez fermer les handles et supprimer les objets dès qu’ils ne sont plus nécessaires. Si vous ne le faites pas, votre application peut nuire aux performances du système, en raison d’une utilisation excessive du fichier de pagination.

Lorsqu’un processus s’arrête, le système ferme automatiquement les handles et supprime les objets créés par le processus. Toutefois, lorsqu’un thread s’arrête, le système ne ferme généralement pas les handles ou ne supprime pas d’objets. Les seules exceptions sont les objets de conversation window, hook, position de la fenêtre et d’échange dynamique de données (DDE). ces objets sont détruits lorsque le thread de création se termine.