DosFreeModule |
DOS : Libère la mémoire |
---|---|
DOSCALLS.DLL | os2.h |
Syntaxe
APIRET DosFreeModule( HMODULE hMod ); |
Paramètres
Nom | Description |
---|---|
hMod | Ce paramètre permet d'indiquer l'identificateur Handle à libérer, précédemment alloué par la fonction DosLoadModule. |
Retour
Valeur | Constante | Description |
---|---|---|
0 | NO_ERROR | Cette valeur permet d'indiquer que l'opération s'est correctement effectué |
6 | ERROR_INVALID_HANDLE | Cette valeur permet d'indiquer que la valeur du hmuxSemaphore ne point pas sur un sémaphore valide. |
12 | ERROR_INVALID_ACCESS | Cette valeur permet d'indiquer une erreur d'accès invalide. |
95 | ERROR_INTERRUPT | Cette valeur permet d'indiquer qu'une erreur d'interruption s'est produite. |
Description
Cette fonction permet de libérer les références du module de lien dynamique pour ce processus et si le module de liaison dynamique n'est utilisé par aucun autre processus, la mémoire occupée par le module est libérée. Par conséquent, aucune fonction du module de liaison dynamique ne peut plus être utilisée.
Remarques
- La fonction DosFreeModule libère la référence à la bibliothèque de liens dynamiques pour le processus en cours. Une fois la dernière référence à la DLL libérée, le module est libéré de la mémoire.
- Le constante ERROR_INVALID_ACCESS est retourné si le module à libérer n'a pas été chargé à l'aide de la fonction DosLoadModule.
- Une fois cette fonction terminée, le descripteur de module n'est plus valide et ne peut plus être utilisé pour faire référence à la DLL. Une tentative d'appeler des procédures chargées à partir de la DLL entraînera une erreur de protection.
- Même si la DLL n'est plus liée à aucun processus, elle reste chargée si elle contient des routines faisant partie d'une liste de sortie pour tout programme lié. Dans ce cas, la fonction DosExitList doit être appelé pour supprimer les routines. En règle générale, une erreur ERROR_INVALID_ACCESS est renvoyée dans ce cas. Dans certaines versions de Microsoft C (16 bits) et Microsoft C/2, une routine de liste de sortie serait enregistrée par en dessous lorsque des routines STDIO étaient utilisées, ce qui rendrait impossible le déchargement dynamique du module.
Exemple
Voici un simple exemple montrant comme appeler cette API avec WatCom C++ for OS/2 :
- #define INCL_DOSERRORS
- #define INCL_DOSMODULEMGR
- #include "os2.h"
- #include "stdio.h"
-
- void main(void) {
- HMODULE hmod;
- switch(DosFreeModule(hmod)) {
- case NO_ERROR: printf("Tout va bien !");break;
- case ERROR_INVALID_HANDLE: printf("Erreur : La valeur du hmuxSemaphore ne point pas sur un sémaphore valide.");break;
- case ERROR_INVALID_ACCESS: printf("Erreur : Une erreur d'accès invalide.");break;
- case ERROR_INTERRUPT: printf("Erreur : Une erreur d'interruption s'est produite.");break;
- }
- }
Voir également
Langage de programmation - C pour OS/2 - DosLoadModule
Langage de programmation - C pour OS/2 - DosQueryProcAddr
Système d'exploitation - OS/2 - Introduction
Dernière mise à jour : Lundi, le 19 juillet 2010