DXGKCB_MAP_MEMORY fonction de rappel (dispmprt.h)
La fonction DxgkCbMapMemory mappe une plage d’adresses physiques traduites (associées à une ressource mémoire affectée à un adaptateur d’affichage) dans l’espace système ou l’espace d’adressage virtuel d’un processus en mode utilisateur.
Syntaxe
DXGKCB_MAP_MEMORY DxgkcbMapMemory;
NTSTATUS DxgkcbMapMemory(
[in] HANDLE DeviceHandle,
[in] PHYSICAL_ADDRESS TranslatedAddress,
[in] ULONG Length,
[in] BOOLEAN InIoSpace,
[in] BOOLEAN MapToUserMode,
[in] MEMORY_CACHING_TYPE CacheType,
[out] PVOID *VirtualAddress
)
{...}
Paramètres
[in] DeviceHandle
Handle qui représente un adaptateur d’affichage. Le pilote miniport d’affichage a obtenu précédemment ce handle dans le membre DeviceHandle de la structure DXGKRNL_INTERFACE qui a été passée à DxgkDdiStartDevice.
[in] TranslatedAddress
Adresse physique traduite de base de la plage de mémoire à mapper. Le pilote miniport d’affichage a précédemment obtenu cette adresse en appelant DxgkCbGetDeviceInformation.
[in] Length
Taille, en octets, de la plage à mapper.
[in] InIoSpace
Valeur booléenne qui spécifie si la plage se trouve dans l’espace d’E/S (TRUE) ou l’espace mémoire (FALSE).
[in] MapToUserMode
Valeur booléenne qui spécifie si la plage est mappée dans l’espace en mode utilisateur ou dans l’espace système. Si TRUE, la plage est mappée dans l’espace d’adressage virtuel (mode utilisateur) du processus actuel. Si FALSE, la plage est mappée dans l’espace système. Si InIoSpace est TRUE, ce paramètre est ignoré.
[in] CacheType
Énumérateur MEMORY_CACHING_TYPE qui spécifie le comportement de mise en cache de la plage mappée.
[out] VirtualAddress
Pointeur vers une variable qui reçoit l’adresse du début de la plage mappée. La façon dont la plage mappée est accessible dépend des valeurs de InIoSpace et MapToUserMode. Le tableau suivant récapitule les différentes façons dont la plage mappée est accessible.
Valeur d’InIoSpace | MapToUserMode est FALSE | MapToUserMode a la valeur TRUE |
---|---|---|
FAUX | READ_REGISTER_X WRITE_REGISTER_X | Le code en mode utilisateur effectue un accès à la mémoire ordinaire. |
VRAI | READ_PORT_X WRITE_PORT_X | Pas possible. |
Valeur de retour
DxgkCbMapMemory retourne STATUS_SUCCESS si elle réussit. Sinon, elle retourne l’un des codes d’erreur définis dans Ntstatus.h.
Remarques
Le type de données PHYSICAL_ADDRESS est défini dans Ntdef.h .
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows Vista |
plateforme cible | Bureau |
d’en-tête | dispmprt.h (include Dispmprt.h) |
IRQL | PASSIVE_LEVEL |