Freigeben über


ZwMapViewOfSectionEx-Funktion (wdm.h)

Die ZwMapViewOfSectionEx-Routine ordnet eine Ansicht eines Abschnitts dem virtuellen Adressraum eines Antragstellerprozesses zu.

Syntax

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
);

Parameter

[in] SectionHandle

Handle mit einem Abschnittsobjekt. Dieses Handle wird durch einen erfolgreichen Aufruf von ZwCreateSection oder ZwOpenSection erstellt.

[in] ProcessHandle

Handle mit dem -Objekt, das den Prozess darstellt, dem die Ansicht zugeordnet werden soll. Verwenden Sie das Makro ZwCurrentProcess , um den aktuellen Prozess anzugeben. Das Handle muss mit PROCESS_VM_OPERATION Zugriff geöffnet worden sein.

[in, out] BaseAddress

Zeiger auf eine Variable, die die Basisadresse der Ansicht empfängt. Wenn der Wert dieses Parameters nicht NULL ist, wird die Ansicht ab der angegebenen virtuellen Adresse zugeordnet, die auf die nächste Adressgrenze von 64 KB gerundet wird.

[in, out, optional] SectionOffset

Ein Zeiger auf eine Variable, die den Offset vom Anfang des Abschnitts bis zur Ansicht in Bytes empfängt. Wenn dieser Zeiger nicht NULL ist, wird der Offset auf die nächste Begrenzung der Zuordnungsgranularität gerundet.

[in, out] ViewSize

Ein Zeiger auf eine SIZE_T Variable. Wenn der Anfangswert dieser Variablen 0 ist, ordnet ZwMapViewOfSectionEx eine Ansicht des Abschnitts zu, die bei SectionOffset beginnt und bis zum Ende des Abschnitts fortfährt. Andernfalls gibt der Anfangswert die Größe der Ansicht in Bytes an. ZwMapViewOfSectionEx rundet diesen Wert immer auf das nächste Vielfache von PAGE_SIZE, bevor die Ansicht zugeordnet wird.

Bei der Rückgabe empfängt der Wert die tatsächliche Größe der Ansicht in Bytes.

[in] AllocationType

Gibt einen Satz von Flags an, der den Typ der Zuordnung beschreibt, die für den angegebenen Bereich der Seiten ausgeführt werden soll. Die gültigen Flags sind MEM_RESERVE, MEM_TOP_DOWN, MEM_LARGE_PAGES, MEM_DIFFERENT_IMAGE_BASE_OK und MEM_REPLACE_PLACEHOLDER. Obwohl MEM_COMMIT nicht zulässig ist, wird sie impliziert, es sei denn, MEM_RESERVE angegeben ist. Weitere Informationen zu den MEM_XXX-Flags finden Sie in der Beschreibung der VirtualAlloc - und MapViewOfFile3-Routinen .

[in] PageProtection

Gibt den Seitenschutz an, der auf die zugeordnete Ansicht angewendet werden soll.

Bei Abschnittsobjekten, die mit dem attribut SEC_IMAGE erstellt wurden, hat der PageProtection-Parameter keine Auswirkung und kann auf einen beliebigen gültigen Wert wie PAGE_READONLY festgelegt werden.

Bei Abschnittsobjekten, die mit dem attribut SEC_IMAGE_NO_EXECUTE erstellt wurden, muss der PageProtection-Wert auf PAGE_READONLY festgelegt werden.

Für Nicht-Bildabschnitte muss der Wert des PageProtection-Parameters mit dem Seitenschutz des Abschnitts kompatibel sein, der beim Aufruf von ZwCreateSection angegeben wurde.

ZwMapViewOfSectionEx legt immer den Cachetyp der zugeordneten Seiten so fest, dass er dem Cachetyp entspricht, der beim Erstellen des Abschnittsobjekts angegeben wurde. Wenn beispielsweise ZwCreateSection mit dem SEC_NOCACHE-Flag aufgerufen wurde, ordnet ZwMapViewOfSectionEx die seiten ohne Zwischenspeicherung zu, unabhängig davon, ob der PageProtection-Parameter das PAGE_NOCACHE Flag enthält oder nicht.

[in, out, optional] ExtendedParameters

Ein optionaler Zeiger auf einen oder mehrere erweiterte Parameter vom Typ MEM_EXTENDED_PARAMETER. Weitere Informationen zu erweiterten Parametern finden Sie in der Beschreibung der MapViewOfFile3-Routine .

[in] ExtendedParameterCount

Gibt die Anzahl der Elemente im Array ExtendedParameters an.

Rückgabewert

ZwMapViewOfSectionEx gibt einen NTSTATUS-Wert zurück. Folgende Rückgabewerte sind möglich:

Rückgabecode Beschreibung
STATUS_SUCCESS Die Routine hat den angeforderten Vorgang erfolgreich ausgeführt.
STATUS_CONFLICTING_ADDRESSES Der angegebene Adressbereich steht in Konflikt mit einem bereits reservierten Bereich.
STATUS_INVALID_PAGE_PROTECTION Der für den PageProtection-Parameter angegebene Wert ist ungültig.
STATUS_SECTION_PROTECTION Der für den PageProtection-Parameter angegebene Wert ist nicht mit dem Seitenschutz kompatibel, der beim Erstellen des Abschnitts angegeben wurde.

Hinweise

Mehrere verschiedene Ansichten eines Abschnitts können gleichzeitig dem virtuellen Adressraum eines oder mehrerer Prozesse zugeordnet werden.

Verwenden Sie ZwMapViewOfSectionEx nicht, um einen Speicherbereich von \Device\PhysicalMemory dem Benutzermodus zuzuordnen, es sei denn, Ihr Treiber hat den Speicherbereich direkt über MmAllocatePagesForMdlEx oder eine andere Methode zugeordnet, die garantiert, dass keine andere Systemkomponente demselben Speicherbereich einen anderen MEMORY_CACHING_TYPE Wert zugeordnet hat.

Benutzeranwendungen können ab Windows Server 2003 mit Service Pack 1 (SP1) nicht direkt auf \Device\PhysicalMemory zugreifen und können nur darauf zugreifen, wenn der Treiber ein Handle an die Anwendung übergibt.

Weitere Informationen zu Abschnittsobjekten finden Sie unter Abschnittsobjekte und -ansichten.

Wenn der Aufruf dieser Funktion im Benutzermodus erfolgt, sollten Sie den Namen "NtMapViewOfSectionEx" anstelle von "ZwMapViewOfSectionEx" verwenden.

Bei Aufrufen von Kernelmodustreibern können sich die NtXxx - und ZwXxx-Versionen einer Windows Native System Services-Routine anders verhalten, da sie Eingabeparameter verarbeiten und interpretieren. Weitere Informationen zur Beziehung zwischen den Nt Xxx- und ZwXxx-Versionen einer Routine finden Sie unter Verwenden von Nt- und Zw-Versionen der Systemdienstroutinen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 11, Version 24H2
Kopfzeile wdm.h

Weitere Informationen

Verwenden von Nt- und Zw-Versionen der Systemdienstroutinen

ZwCreateSection

ZwOpenSection

ZwMapViewOfSection

ZwUnmapViewOfSection

MapViewOfFile3