Syntaxe
USHORT DosAllocHuge(USHORT NumSeg, USHORT Size, PSEL Selector, USHORT MaxNumSeg, USHORT AllocFlags);
|
Paramètres
Nom |
Description |
NumSeg |
Ce paramètre permet d'indiquer un nombre de 65536 octets d'un segment a alloué. |
Size |
Ce paramètre permet d'indiquer le nombre d'octets a alloué dans les derniers segments (non 65536 octets). |
Selector |
Ce paramètre permet d'indiquer l'adresse où le sélecteur du premier segment alloué est retourné. |
MaxNumSeg |
Ce paramètre permet d'indiquer le nombre maximal de 65536 octets de segment que l'objet occupe dans le résultat de n'importe que sous-séquence DosReallocHuge. Si la valeur de ce paramètre vaut 0, OS/2 assume que ce segment ne sera jamais augmenté par la fonction DosReallocHuge. |
AllocFlags |
Ce paramètre permet d'indiquer les indicateurs de drapeaux des caractéristiques d'un segment alloué. |
Retour
Valeur |
Constante |
Description |
0 |
NO_ERROR |
Cette valeur permet d'indiquer que l'opération s'est correctement effectué |
87 |
ERROR_INVALID_PARAMETER |
Cette valeur permet d'indiquer qu'un ou plusieurs des paramètres contient une valeur illégale. |
209 |
ERROR_INVALID_SIGNAL_NUMBER |
Cette valeur permet d'indiquer que le numéro de signal et invalide. |
Description
Cette fonction permet d'allouer un objet de mémoire Huge.
Remarques
- La fonction DosAllocHuge permet à un processus d'allouer une grande quantité de mémoire en indiquant au système le nombre de segments de 64 Ko dont il a besoin et s'il
nécessite un segment partiel supplémentaire. Le système alloue la mémoire, étant déplaçable et échangeable, et renvoie un sélecteur au premier segment. Lorsque ce sélecteur est utilisé
avec un appel, la fonction demandée est exécutée pour tout le bloc de mémoire.
- Chaque segment d'une énorme allocation de mémoire possède un sélecteur unique. Pour déterminer les sélecteurs restants d'une énorme allocation de mémoire, lancez
DosGetHugeShift, retournant un décompte de décalage. Pour calculer le prochain sélecteur séquentiel, prenez la valeur 1 et décalez-la vers la
gauche du nombre de bits spécifié dans le comptage de décalage. Utilisez la valeur résultante comme incrément pour ajouter au sélecteur précédent, en utilisant le sélecteur renvoyé par
la fonction DosAllocHuge comme premier sélecteur.
- Les applications doivent être discrétionnaires en réclamant une mémoire volumineuse, car cela peut nuire aux performances du système. Pour tester la disponibilité de la mémoire système,
lancez la fonction DosMemAvail. Cet appel renvoie la taille du plus grand bloc de mémoire non allouée. Bien que cette valeur puisse changer à tout
moment en raison de l'activité du système, elle peut fournir une bonne indication de l'état de la mémoire système.
- La mémoire allouée par la fonction DosAllocHuge est libérée par la fonction DosFreeSeg. Un appel à la fonction
DosFreeSeg, en passant le sélecteur renvoyé d'un DosAllocHuge, libère toute la mémoire allouée.
- Cette requête peut être émise à partir du niveau de privilège 2. Cependant, le segment est alloué en tant que segment de niveau de privilège 3.
- Considérations relatives au famille d'API : Certaines options fonctionnent différemment en mode DOS qu'en mode OS/2. Par conséquent, les considérations suivantes
s'appliquent à DosAllocHuge lors du codage pour le mode DOS : La valeur de taille demandée est arrondie au paragraphe suivant (16 octets) et le sélecteur est l'adresse de
segment réelle allouée.
Voir également
Système d'exploitation - OS/2 - Introduction
Dernière mise à jour : Lundi, le 19 juillet 2010