Projète Périphérique dans un Bloc de Mémoire
![[1.0]](../10.gif)
Projète les adresses assignée à un périphérique sur les adresses
linéaire d'un bloc mémoire précedemment alloué avec l'Int 31H Fonction 0504H.
Appel avec

AX = 0508H
ESI = handle du bloc de mémoire
EBX = offset dans le bloc de mémoire de(s) page(s) à
projeter (doit être aligné sur une page)
ECX = nombre de pages à projeter
EDX = adresse physique du périphérique (doit être
aligné sur une page)
Retourne

si la fonction réussit
Carry flag = 0
si la fonction échoue
Carry flag = 1
AX = code d'erreur
8001H | fonction non supportée
|
8003H | integrité du système (adresse de périphérique invalide) |
8023H | handle invalide (dans ESI) |
8025H | adresse linéaire invalide ( l'étendue specifiée
n'est pas dans le bloc specifié ou EBX/EDX
n'est pas aligné sur une page) |
Notes
- Les hôtes DPMI 16-bit ne supportent pas cette fonction. Un client 16-bit
d'un hôte DPMI 32-bit 1.0 peut utiliser cette function.
- Le support de cet appel par les hôtes 32-bit DPMI est optionnel.
Les applications ou DOS Extenders qui requièrent cet appel pour pouvoir
s'exécuter ne sont pas compatible-DPMI .
- Toutes pages engagées ou projetées dans l'étendue de l'adresse linéaire
seront désengagées ou "déprojetées"automatiquement par l'hôte.
- Toutes les pages créées par cet appel ont le bit projeté bit 2) posé
dans les attributs retournés par l' (Int 31H Fonction 0506H).
- Cette fonction diffères de l'(Int 31H Function 0800H)
dans ce que cette fonction supporte la projection des périphérique
physique à l'intérieur d'un bloc de mémoire ,plutot qu'une adresse
linéaire arbitraire. L'utilisation d'un bloc de mémoire existant
donne aux programmes 32-bit la capacité d'accéder aux périphériques physiques
avec des pointeurs NEAR , ce qui est toujours hautement désirable pour des
raisons de performance .
- A la difference de l'Int 31H Fonction 0800H,cett
fonction autorise la projection des adresses en dessous de 1 Mo ce qui n'entre pas
en contradiction avec la RAM disponible our les programmes; ex: cette fonction
peut être utilisée pour projeter les buffers de rafraichissement de l'adaptateur
video d'un PC.
- Si l'hôte DPMI ne virtualise pas le périphérique,il doit désactiver disable
tout cache mémoire sur les pages projetées ; en particulier, sur le 486 ou
supérieur, le bit PCD (page cache disable) doit être posé dans la table d'entrée
des pages.
- Les hôtes DPMI qui ne virtualisent pas les périphériques physiques
peuvent supporter cette fonction en créant des entrées dans la table des pages
qui projètent le périphérique. Les entrées dans la table des pages
doivent être marquées comme projetées, ainsi l'hôte sait qu'il ne faut pas libérer
de la mémoire physique les pages quand le bloc mémoire est libéré.
- Les hôtes DPMI sont autorisés à supporter cette fonction pour certains
périphériques et pas d'autres, car la projection de périphériques
virtuels requiert le "page aliasing" dans l'hôte - une tâche complexe.
Les hôtes DPMI qui supportent partiellement cette fonction peuvent rater
l'appel de la fonction avec les périphériques virtuels
(comme la video), et réussir avec les périphériques non virtuels
(comme les coprocesseurs Weitek ). Permettre au client de projeter un
périphérique physique qui pourra être ainsi accedé avec des
réferences NEAR, par exemple, aidera le client à accomplir de bien meilleures
performances.