Partager via


Fonction VideoPortMapBankedMemory (video.h)

La fonction VideoPortMapBankedMemory est obsolète et est prise en charge uniquement pour Windows NT 4.0 et les pilotes précédents. Les pilotes Windows 2000 et versions ultérieures doivent utiliser VideoPortMapMemory.

VideoPortMapBankedMemory remappe une plage physique relative de bus de mémoire vidéo dans l’espace d’adressage virtuel du pilote d’affichage correspondant en réponse à un VRP avec le membre IoControlCode défini sur IOCTL_VIDEO_SHARE_VIDEO_MEMORY ou IOCTL_VIDEO_MAP_VIDEO_MEMORY.

Syntaxe

VIDEOPORT_DEPRECATED VIDEOPORT_API VP_STATUS VideoPortMapBankedMemory(
  PVOID                   HwDeviceExtension,
  PHYSICAL_ADDRESS        PhysicalAddress,
  PULONG                  Length,
  PULONG                  InIoSpace,
  PVOID                   *VirtualAddress,
  ULONG                   BankLength,
  UCHAR                   ReadWriteBank,
  PBANKED_SECTION_ROUTINE BankRoutine,
  PVOID                   Context
);

Paramètres

HwDeviceExtension

Pointeur vers l’extension de périphérique du pilote miniport.

PhysicalAddress

Spécifie l’adresse de base relative du bus de la plage à mapper.

Length

Pointeur vers une variable spécifiant le nombre total d’octets de mémoire de l’appareil à mapper (quelle que soit la taille de la banque). VideoPortMapBankedMemory retourne la taille réelle de la mémoire mappée, qui peut être arrondie à une limite d’alignement déterminée par le système, dans ce paramètre. Toutefois, le miniport et les pilotes d’affichage ne peuvent pas accéder à la mémoire en dehors de la plage délimitée par la valeur d’entrée en longueur.

InIoSpace

Indique l’emplacement de la plage. Ce paramètre peut être l’une des valeurs suivantes :

Valeur Signification
VIDEO_MEMORY_SPACE_DENSE Obsolète
VIDEO_MEMORY_SPACE_IO La plage se trouve dans l’espace d’E/S système plutôt que dans l’espace mémoire.
VIDEO_MEMORY_SPACE_MEMORY La plage se trouve dans l’espace mémoire plutôt que dans l’espace d’E/S système.
VIDEO_MEMORY_SPACE_P6CACHE Le processeur agrège une séquence d’opérations d’écriture et les envoie à une ligne de cache donnée. Le processeur vide ensuite le cache. Cet indicateur n’est significatif que lorsque VIDEO_MEMORY_SPACE_IO n’est pas défini.
VIDEO_MEMORY_SPACE_USER_MODE Indique que la plage d’adresses spécifiée doit être mappée en mode utilisateur plutôt qu’en mode noyau. Cet indicateur n’est significatif que lorsque VIDEO_MEMORY_SPACE_IO n’est pas défini.

VirtualAddress

Est un handle du processus dans lequel la mémoire doit être mappée, ou NULL. NULL spécifie que le pilote de port doit mapper la plage de mémoire logique à n’importe quel emplacement dans l’espace d’adressage du processus en cours. Sinon, ce handle peut être une valeur transmise dans un VRP par le pilote d’affichage correspondant du pilote miniport. Au retour d’un appel réussi, VideoPortMapBankedMemory réinitialise la variable à l’adresse virtuelle de base à laquelle il a mappé l’adresse physique donnée.

BankLength

Spécifie la taille d’une banque, en octets.

ReadWriteBank

Si la valeur est TRUE , la banque est En lecture/écriture ; si la valeur est FALSE , il existe deux banques de lecture et d’écriture indépendantes.

BankRoutine

Pointeur vers une fonction HwVidBankedMemoryCallback fournie par le pilote à appeler par le Gestionnaire de mémoire lorsqu’une nouvelle banque est accessible par le pilote d’affichage.

Context

Pointeur vers un contexte fourni par le pilote miniport qui est renvoyé au pilote lorsque le BankRoutine est appelé.

Valeur retournée

VideoPortMapBankedMemory retourne NO_ERROR si la plage logique donnée a été correctement mappée à une plage virtuelle d’espace utilisateur. Sinon, il peut retourner ERROR_INVALID_PARAMETER.

Remarques

VideoPortMapBankedMemory s’exécute en mode noyau dans le même contexte que le thread en mode utilisateur qui a lancé l’appel.

VideoPortMapBankedMemory est appelé par les pilotes miniport pour gérer efficacement les appareils de type x86 qui se limitent au mappage d’une mémoire tampon de trame dans les banques. Lorsque cette routine revient à l’appelant, la mémoire tampon d’image gérée par le pilote miniport est mappée en tant que mémoire tampon de trame linéaire dans l’espace d’adressage du processus demandeur (voir Paramètre VirtualAddress ). Lorsqu’un accès est effectué à une adresse dans cet espace mappé, le Gestionnaire de mémoire appelle le pilote miniport pour mettre à jour le registre d’index bancaires afin de pointer vers une nouvelle banque qui contient l’adresse actuellement référencée. Le registre d’index de banque est tenu à jour par le chauffeur du miniport dans BankRoutine. L’index de banque correct est calculé par le Gestionnaire de mémoire de manière transparente vers un pilote d’affichage et passé au pilote miniport dans le rappel à BankRoutine.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible dans Windows 2000 et versions ultérieures des systèmes d’exploitation Windows.
Plateforme cible Desktop (Expérience utilisateur)
En-tête video.h (inclure Video.h)
Bibliothèque Videoprt.lib
DLL Videoprt.sys
IRQL PASSIVE_LEVEL

Voir aussi

HwVidBankedMemoryCallback

IOCTL_VIDEO_MAP_VIDEO_MEMORY

IOCTL_VIDEO_SHARE_VIDEO_MEMORY

IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY

VIDEO_REQUEST_PACKET

VideoPortMapMemory

VideoPortUnmapMemory