Partager via


Segments d'espace d'ouverture linéaires

Un segment d’espace d’ouverture linéaire est similaire à un segment d’espace mémoire linéaire. Toutefois, le segment d’espace d’ouverture n’est qu’un espace d’adressage et ne peut pas contenir de bits.

Pour contenir les bits, les pages mémoire système doivent être allouées, et la plage d’espace d’adressage doit être redirigée pour faire référence à ces pages. Le pilote de miniport d’affichage en mode noyau (KMD) doit implémenter la fonction DxgkDdiBuildPagingBuffer pour les types d’opérations DXGK_OPERATION_MAP_APERTURE_SEGMENT et DXGK_OPERATION_UNMAP_APERTURE_SEGMENT pour gérer la redirection et doit exposer cette fonction comme décrit dans DriverEntry of Display Miniport Driver. Dxgkrnl appelle DxgkDdiBuildPagingBuffer avec la plage d’espace d’adressage à rediriger et le MDL qui référence les pages de mémoire système physiques qui ont été allouées.

Le KMD effectue généralement la redirection de la plage d’espace d’adressage en programmant une table de pages, inconnue du gestionnaire de mémoire vidéo (VidMm).

Le pilote doit définir l’indicateur de champ bit Aperture dans le membre Indicateurs de la structure DXGK_SEGMENTDESCRIPTOR pour spécifier un segment d’espace d’ouverture linéaire. Le pilote peut également définir les indicateurs de champ bit suivants pour indiquer la prise en charge d’autres segments :

  • CpuVisible pour indiquer que le segment est accessible au processeur.

  • CacheCoherent pour indiquer que le segment conserve la cohérence du cache avec l’UC pour les pages vers lesquelles le segment est redirigé.

La figure suivante montre une représentation visuelle d’un segment d’espace d’ouverture linéaire.

Diagramme illustrant un segment d’espace d’ouverture linéaire.