Partager via


VideoPortMapBankedMemory, fonction (video.h)

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

VideoPortMapBankedMemory remappe une plage physique relative de bus de la 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, les pilotes miniport et d’affichage ne peuvent pas accéder à la mémoire en dehors de la plage délimitée par la valeur d’entrée à 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 est en 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

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 actuel. Dans le cas contraire, ce handle peut être une valeur transmise dans un VRP par le pilote d’affichage correspondant du pilote miniport. À l’issue d’un appel réussi, VideoPortMapBankedMemory réinitialise la variable à l’adresse virtuelle de base sur laquelle elle 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 un HwVidBankedMemoryCallback fourni par un 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 de retour

VideoPortMapBankedMemory retourne NO_ERROR si la plage logique donnée a été correctement mappée à une plage virtuelle d’espace utilisateur. Sinon, elle 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 miniports pour gérer efficacement les appareils de type x86 limités au mappage d’une mémoire tampon d’images dans les banques. Lorsque cette routine revient à l’appelant, la mémoire tampon de trame gérée par le pilote miniport est mappée en tant que mémoire tampon d’image 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 bancaire pour pointer vers une nouvelle banque qui contient l’adresse actuellement référencée. Le registre des indices bancaires est géré par le chauffeur miniport de BankRoutine. L’index de banque correct est calculé de manière transparente par le Gestionnaire de mémoire à un pilote d’affichage et transmis au pilote miniport dans le rappel à BankRoutine.

Exigences

Exigence Valeur
client minimum pris en charge Disponible dans Windows 2000 et versions ultérieures des systèmes d’exploitation Windows.
plateforme cible Bureau
d’en-tête video.h (include 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