DXGKCB_MAP_MEMORY fonction de rappel (dispmprt.h)
La fonction DxgkCbMapMemory mappe une plage d’adresses physiques traduites (associées à une ressource de mémoire affectée à une carte 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 une carte d’affichage. Le pilote miniport d’affichage a précédemment obtenu cette poignée 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 la valeur est TRUE, la plage est mappée dans l’espace d’adressage virtuel (mode utilisateur) du processus actuel. Si la valeur est FALSE, la plage est mappée dans l’espace système. Si InIoSpace a la valeur 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 InIoSpace et MapToUserMode. Le tableau suivant récapitule les différentes façons d’accéder à la plage mappée.
Valeur d’InIoSpace | MapToUserMode a la valeur FALSE | MapToUserMode a la valeur TRUE |
---|---|---|
FALSE | READ_REGISTER_X WRITE_REGISTER_X | Le code en mode utilisateur effectue un accès à la mémoire ordinaire. |
TRUE | READ_PORT_X WRITE_PORT_X | Impossible. |
Valeur retournée
DxgkCbMapMemory retourne STATUS_SUCCESS si elle réussit. Sinon, il 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.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows Vista |
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | dispmprt.h (inclure Dispmprt.h) |
IRQL | PASSIVE_LEVEL |