Partager via


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. À mesure que chaque application se termine à l’aide de l’événement, elle ferme son handle à l’objet. En l’absence de handles ouverts restants pour l’objet événement, le système détruit l’objet d’événement. En revanche, une application peut obtenir un handle pour un objet window existant. Lorsque l’objet 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 attend, un autre thread peut fermer le même handle d’objet d’événement. L’objet d’événement reste en mémoire, sans handles d’objet d’événement, jusqu’à ce que l’objet événement soit défini sur 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 des 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 se termine, le système ferme automatiquement les handles et supprime les objets créés par le processus. Toutefois, lorsqu’un thread se termine, le système ne ferme généralement pas les handles ou supprime les objets. Les seules exceptions sont les objets de conversation de fenêtre, de hook, de position de fenêtre et d’échange de données dynamiques (DDE). ces objets sont détruits lorsque le thread de création se termine.