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
IOCTL_VIDEO_SHARE_VIDEO_MEMORY