Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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
IOCTL_VIDEO_SHARE_VIDEO_MEMORY