Syntaxe
Paramètres
Nom |
Description |
hObject |
Ce paramètre permet d'indiquer le Handle de l'objet à fermer. |
Retour
Valeur |
Description |
0 |
Cette valeur permet d'indiquer que la fonction a échoué. Pour obtenir des informations d'erreur étendues, appelez la fonction GetLastError. |
0 != |
Ces valeurs permettent d'indiquer que l'opération a réussi. |
Description
Cette fonction permet d'effectuer la fermeture d'un identificateur de descripteur Handle.
Remarques
- Si l'application est exécutée sous un débogueur, la fonction lève une exception si elle reçoit une valeur de descripteur non valide ou une valeur de pseudo-descripteur. Cette situation
peut se produire si vous fermez 2 fois un descripteur ou si vous appelez CloseHandle sur un descripteur renvoyé par la fonction FindFirstFileA au
lieu d'appeler la fonction FindClose.
- La fonction CloseHandle ferme l'identificateur de descripteur Handle sur les objets suivants : le jeton d'accès, la dispositif de communication, l'entrée de la console,
le tampon d'écran de la console, un événement, un fichier, une cartographie de fichier, un port d'achèvement d'entrée/sortie, une tâche, un emplacement de courriel, un avertissement de
ressource mémoire, un Mutex, un canal nommée, un tuyau, un processus, une sémaphore, un processus léger, une transaction ou
une minuterie en attente.
- La documentation des fonctions créant ces objets indique que CloseHandle doit être utilisé lorsque vous avez terminé avec l'objet et ce qu'il advient des opérations en attente sur
l'objet après la fermeture du descripteur. En général, CloseHandle invalide le descripteur d'objet spécifié, décrémente le nombre de descripteurs de l'objet et effectue des contrôles
de rétention d'objet. Une fois le dernier descripteur d'un objet fermé, celui-ci est supprimé du système.
- En règle générale, une application doit appeler CloseHandle une fois pour chaque identificateur de descripteur Handle ouvert. Il n'est généralement pas nécessaire
d'appeler CloseHandle si une fonction utilisant un descripteur échoue avec ERROR_INVALID_HANDLE, car cette erreur indique généralement que le descripteur est déjà invalide.
Cependant, certaines fonctions utilisent ERROR_INVALID_HANDLE pour indiquer que l'objet lui-même n'est plus valide. Par exemple, une fonction tentant d'utiliser un descripteur dans
un fichier sur un réseau peut échouer avec ERROR_INVALID_HANDLE si la connexion réseau est coupée, car l'objet fichier n'est plus disponible. Dans ce cas, l'application doit fermer
l'identificateur de descripteur Handle.
- Si un descripteur est traité, tous les descripteurs liés à une transaction doivent être fermés avant que la transaction ne soit validée. Si un descripteur de transaction a été ouvert en
appelant CreateFileTransacted avec le drapeau FILE_FLAG_DELETE_ON_CLOSE, le fichier n'est pas supprimé jusqu'à ce que l'application ferme le descripteur et appelle
CommitTransaction.
- La fermeture d'un identificateur de descripteur Handle de processus léger ne met pas fin au processus léger associé et ne supprime pas l'objet du processus léger. La fermeture
d'un descripteur de processus ne met pas fin au processus associé ni ne supprime l'objet de processus. Pour supprimer un objet de la fil, vous devez terminer la fil, puis fermer toutes les
identificateur de descripteur Handle de la fil. Pour supprimer un objet de processus, vous devez terminer le processus, puis fermer tous les descripteurs du processus.
- La fermeture d'un descripteur de cartographie de fichier peut réussir même s'il existe des vues de fichier toujours ouvertes.
- N'utilisez pas la fonction CloseHandle pour fermer un socket. Utilisez plutôt la fonction CloseSocket, libérant toutes les ressources associées au Socket, y compris le
descripteur, à l'objet Socket.
- N'utilisez pas la fonction CloseHandle pour fermer un identificateur de descripteur Handle sur une clef de registre ouverte. À la place, utilisez la fonction
RegCloseKey. La fonction CloseHandle ne ferme pas l'identificateur de descripteur Handle de la clef de registre, mais ne renvoie pas d'erreur pour indiquer son échec.
Voir également
Articles - Les géants de l'informatique - Microsoft
Dernière mise à jour : Mercredi, le 6 août 2014