Partager via


ZwMapViewOfSectionEx, fonction (wdm.h)

La routine ZwMapViewOfSectionEx mappe une vue d’une section dans l’espace d’adressage virtuel d’un processus d’objet.

Syntaxe

NTSYSAPI NTSTATUS ZwMapViewOfSectionEx(
  [in]                HANDLE                  SectionHandle,
  [in]                HANDLE                  ProcessHandle,
  [in, out]           PVOID                   *BaseAddress,
  [in, out, optional] PLARGE_INTEGER          SectionOffset,
  [in, out]           PSIZE_T                 ViewSize,
  [in]                ULONG                   AllocationType,
  [in]                ULONG                   PageProtection,
  [in, out, optional] PMEM_EXTENDED_PARAMETER ExtendedParameters,
  [in]                ULONG                   ExtendedParameterCount
);

Paramètres

[in] SectionHandle

Handle vers un objet de section. Ce handle est créé par un appel réussi à ZwCreateSection ou ZwOpenSection.

[in] ProcessHandle

Handle vers l’objet qui représente le processus dans lequel la vue doit être mappée. Utilisez la macro ZwCurrentProcess pour spécifier le processus actuel. Le handle doit avoir été ouvert avec PROCESS_VM_OPERATION accès.

[in, out] BaseAddress

Pointeur vers une variable qui reçoit l’adresse de base de la vue. Si la valeur de ce paramètre n’est pas NULL, la vue est allouée à partir de l’adresse virtuelle spécifiée, arrondie à la limite d’adresse de 64 kilo-octets suivante.

[in, out, optional] SectionOffset

Pointeur vers une variable qui reçoit le décalage, en octets, entre le début de la section et la vue. Si ce pointeur n’est pas NULL, le décalage est arrondi à la limite suivante de taille d’allocation-granularité.

[in, out] ViewSize

Pointeur vers une variable SIZE_T. Si la valeur initiale de cette variable est zéro, ZwMapViewOfSectionEx mappe une vue de la section qui commence à SectionOffset et se poursuit jusqu’à la fin de la section. Sinon, la valeur initiale spécifie la taille de la vue, en octets. ZwMapViewOfSectionEx arrondit toujours cette valeur au multiple de PAGE_SIZE le plus proche avant de mapper la vue.

Lors du retour, la valeur reçoit la taille réelle, en octets, de la vue.

[in] AllocationType

Spécifie un ensemble d’indicateurs qui décrit le type d’allocation à effectuer pour la région de pages spécifiée. Les indicateurs valides sont MEM_RESERVE, MEM_TOP_DOWN, MEM_LARGE_PAGES, MEM_DIFFERENT_IMAGE_BASE_OK et MEM_REPLACE_PLACEHOLDER. Bien que MEM_COMMIT ne soit pas autorisé, elle est implicite, sauf si MEM_RESERVE est spécifié. Pour plus d’informations sur les indicateurs MEM_XXX , consultez la description des routines VirtualAlloc et MapViewOfFile3 .

[in] PageProtection

Spécifie la protection de page à appliquer à l’affichage mappé.

Pour les objets de section créés avec l’attribut SEC_IMAGE, le paramètre PageProtection n’a aucun effet et peut être défini sur n’importe quelle valeur valide telle que PAGE_READONLY.

Pour les objets de section créés avec l’attribut SEC_IMAGE_NO_EXECUTE, la valeur PageProtection doit être définie sur PAGE_READONLY.

Pour les sections sans image, la valeur du paramètre PageProtection doit être compatible avec la protection de page de la section qui a été spécifiée lors de l’appel de ZwCreateSection.

ZwMapViewOfSectionEx définit toujours le type de cache des pages mappées pour qu’il corresponde au type de cache fourni lors de la création de l’objet section. Par exemple, si ZwCreateSection a été appelé avec l’indicateur SEC_NOCACHE, ZwMapViewOfSectionEx mappe les pages sans mise en cache, que le paramètre PageProtection inclue ou non l’indicateur PAGE_NOCACHE.

[in, out, optional] ExtendedParameters

Pointeur facultatif vers un ou plusieurs paramètres étendus de type MEM_EXTENDED_PARAMETER. Pour plus d’informations sur les paramètres étendus, consultez la description de la routine MapViewOfFile3 .

[in] ExtendedParameterCount

Spécifie le nombre d’éléments dans le tableau ExtendedParameters.

Valeur retournée

ZwMapViewOfSectionEx retourne une valeur NTSTATUS. Les valeurs de retour possibles sont les suivantes :

Code de retour Description
STATUS_SUCCESS La routine a correctement effectué l’opération demandée.
STATUS_CONFLICTING_ADDRESSES La plage d’adresses spécifiée est en conflit avec une plage déjà réservée.
STATUS_INVALID_PAGE_PROTECTION La valeur spécifiée pour le paramètre PageProtection n’est pas valide.
STATUS_SECTION_PROTECTION La valeur spécifiée pour le paramètre PageProtection n’est pas compatible avec la protection de page spécifiée lors de la création de la section.

Remarques

Plusieurs vues différentes d’une section peuvent être mappées simultanément dans l’espace d’adressage virtuel d’un ou plusieurs processus.

N’utilisez pas ZwMapViewOfSectionEx pour mapper une plage de mémoire de \Device\PhysicalMemory en mode utilisateur, sauf si votre pilote a directement alloué la plage de mémoire via MmAllocatePagesForMdlEx ou une autre méthode garantissant qu’aucun autre composant système n’a mappé la même plage de mémoire avec une valeur de MEMORY_CACHING_TYPE différente.

Les applications utilisateur ne peuvent pas accéder directement à \Device\PhysicalMemory à partir de Windows Server 2003 avec Service Pack 1 (SP1) et peuvent y accéder uniquement si le pilote transmet un handle à l’application.

Pour plus d’informations sur les objets de section, consultez Objets et vues de section.

Si l’appel à cette fonction se produit en mode utilisateur, vous devez utiliser le nom « NtMapViewOfSectionEx » au lieu de « ZwMapViewOfSectionEx ».

Pour les appels provenant de pilotes en mode noyau, les versions NtXxx et ZwXxx d’une routine Windows Native System Services peuvent se comporter différemment dans la façon dont elles gèrent et interprètent les paramètres d’entrée. Pour plus d’informations sur la relation entre les versions NtXxx et ZwXxx d’une routine, consultez Using Nt and Zw Versions of the Native System Services Routines.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 11, version 24H2
En-tête wdm.h

Voir aussi

Utilisation des versions Nt et Zw des routines des services système natifs

ZwCreateSection

ZwOpenSection

ZwMapViewOfSection

ZwUnmapViewOfSection

MapViewOfFile3