Partager via


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

Voir aussi

MEMORY_CACHING_TYPE