Syntaxe
USHORT DosAllocSeg(USHORT Size, PSEL Selector, USHORT AllocFlags);
|
Paramètres
Nom |
Description
|
Size |
Ce paramètre permet d'indiquer le nombre d'octets de la requête. |
Selector |
Ce paramètre permet d'indiquer l'adresse où le sélecteur de segment est alloué pour le retour. |
AllocFlags |
Ce paramètre permet d'indiquer les indicateurs de bits décrivant les caractéristiques de segment étant alloué. |
Retour
Valeur |
Constante |
Description |
0 |
NO_ERROR |
Cette valeur permet d'indiquer que l'opération s'est correctement effectué |
8 |
ERROR_NOT_ENOUGH_MEMORY |
Cette valeur permet d'indiquer que la limite de mémoire système est atteinte. |
87 |
ERROR_INVALID_PARAMETER |
Cette valeur permet d'indiquer qu'un ou plusieurs des paramètres contient une valeur illégale. |
Description
Cette fonction permet d'allouer un segment de mémoire.
Remarques
- La fonction DosAllocSeg permet à un processus d'allouer un segment de données jusqu'à 64 Ko, pouvant être déplacé et échangé par le système. Si votre application doit prendre en
charge une grande structure de données dépassant la limite de 64 Ko, la fonction DosAllocHuge peut être émis pour allouer plusieurs segments comme
un énorme bloc de mémoire.
- Un segment alloué par la fonction DosAllocSeg avec le bit de paramètre AllocFlags fixé sur 2 peut être rejeté par le système pour remédier à une situation de mémoire faible lorsque
le segment n'est pas utilisé. Lors de l'allocation, un segment jetable est verrouillé et prêt pour l'accès. L'appelant émet une fonction DosUnlockSeg
lorsqu'il a fini d'utiliser le segment. La prochaine fois que l'appelant doit accéder au segment, il doit émettre un appel à la fonction DosLockSeg. Pendant le temps qu'un
segment est verrouillé, il ne peut pas être supprimé, mais il peut toujours être échangé.
- Allouer la mémoire comme pouvant être jetée lorsqu'elle est nécessaire pour conserver des données pendant de courtes périodes seulement; par exemple, des images bitmap enregistrées pour
des fenêtres ombrés. Une fois que le système a supprimé un segment, l'appelant doit réallouer le segment avec la fonction DosReallocSeg et régénérer les données.
La réallocation du segment le verrouille automatiquement pour le premier accès.
- Un segment peut également être désigné comme partagé avec un autre processus. Si un processus émet l'appel de la fonction DosAllocSeg avec le bit 0 comme paramètre AllocFlags,
le segment alloué peut être partagé via la fonction DosGiveSeg. Pour partager le segment de cette manière, le processus propriétaire peut alors émettre un appel
à la fonction DosGiveSeg pour obtenir un sélecteur pour le partage à utiliser. Le processus propriétaire transmet ensuite le sélecteur au partage en utilisant un moyen de
communication interprocessus. Le processus de partage peut utiliser le sélecteur pour accéder au segment partagé. Si le segment partagé a été désigné comme pouvant être supprimé (le bit 2
du paramètre AllocFlags est également défini), le partage doit émettre un appel à la fonction DosLockSeg pour verrouiller le segment.
- La mémoire allouée avec la fonction DosAllocSeg est libérée par un appel à la fonction DosFreeSeg.
- 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 aux familles d'API : Certaines options fonctionnent différemment en mode DOS qu'en mode OS/2. Par conséquent, les restrictions
suivantes s'appliquent à DosAllocSeg lors du codage pour le mode DOS : La valeur de taille demandée est arrondie au paragraphe suivant (16 octets), le sélecteur est
l'adresse de segment réelle allouée et le paramètre AllocFlags doit être fixe sur 0.
Voir également
Système d'exploitation - OS/2 - Introduction
Dernière mise à jour : Lundi, le 19 juillet 2010