Compartir a través de


Función ZwMapViewOfSectionEx (wdm.h)

La rutina ZwMapViewOfSectionEx asigna una vista de una sección al espacio de direcciones virtuales de un proceso de asunto.

Sintaxis

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

Parámetros

[in] SectionHandle

Identificador de un objeto de sección. Este identificador se crea mediante una llamada correcta a ZwCreateSection o ZwOpenSection.

[in] ProcessHandle

Identificador del objeto que representa el proceso en el que se debe asignar la vista. Use la macro ZwCurrentProcess para especificar el proceso actual. El identificador debe haberse abierto con PROCESS_VM_OPERATION acceso.

[in, out] BaseAddress

Puntero a una variable que recibe la dirección base de la vista. Si el valor de este parámetro no es NULL, la vista se asigna a partir de la dirección virtual especificada redondeada hacia abajo hasta el siguiente límite de dirección de 64 kilobytes.

[in, out, optional] SectionOffset

Puntero a una variable que recibe el desplazamiento, en bytes, desde el principio de la sección hasta la vista. Si este puntero no es NULL, el desplazamiento se redondea hacia abajo hasta el siguiente límite de tamaño de granularidad de asignación.

[in, out] ViewSize

Puntero a una variable SIZE_T. Si el valor inicial de esta variable es cero, ZwMapViewOfSectionEx asigna una vista de la sección que comienza en SectionOffset y continúa hasta el final de la sección. De lo contrario, el valor inicial especifica el tamaño de la vista, en bytes. ZwMapViewOfSectionEx siempre redondea este valor hasta el múltiplo más cercano de PAGE_SIZE antes de asignar la vista.

Al devolver, el valor recibe el tamaño real, en bytes, de la vista.

[in] AllocationType

Especifica un conjunto de marcas que describe el tipo de asignación que se va a realizar para la región de páginas especificada. Las marcas válidas son MEM_RESERVE, MEM_TOP_DOWN, MEM_LARGE_PAGES, MEM_DIFFERENT_IMAGE_BASE_OK y MEM_REPLACE_PLACEHOLDER. Aunque no se permite MEM_COMMIT, se implica a menos que se especifique MEM_RESERVE. Para obtener más información sobre las marcas MEM_XXX , vea la descripción de las rutinas VirtualAlloc y MapViewOfFile3 .

[in] PageProtection

Especifica la protección de página que se va a aplicar a la vista asignada.

Para los objetos de sección creados con el atributo SEC_IMAGE, el parámetro PageProtection no tiene ningún efecto y se puede establecer en cualquier valor válido, como PAGE_READONLY.

Para los objetos de sección creados con el atributo SEC_IMAGE_NO_EXECUTE, el valor PageProtection debe establecerse en PAGE_READONLY.

Para las secciones que no son de imagen, el valor del parámetro PageProtection debe ser compatible con la protección de páginas de la sección que se especificó cuando se llamó a ZwCreateSection.

ZwMapViewOfSectionEx siempre establece el tipo de caché de las páginas asignadas para que coincidan con el tipo de caché proporcionado cuando se creó el objeto de sección. Por ejemplo, si se llamó a ZwCreateSection con la marca SEC_NOCACHE, ZwMapViewOfSectionEx asignará las páginas sin almacenar en caché, independientemente de si el parámetro PageProtection incluye o no la marca PAGE_NOCACHE.

[in, out, optional] ExtendedParameters

Puntero opcional a uno o varios parámetros extendidos de tipo MEM_EXTENDED_PARAMETER. Para obtener más información sobre los parámetros extendidos, vea la descripción de la rutina MapViewOfFile3 .

[in] ExtendedParameterCount

Especifica el número de elementos de la matriz ExtendedParameters.

Valor devuelto

ZwMapViewOfSectionEx devuelve un valor NTSTATUS. Entre los valores devueltos posibles se incluyen los siguientes:

Código devuelto Descripción
STATUS_SUCCESS La rutina realizó correctamente la operación solicitada.
STATUS_CONFLICTING_ADDRESSES El intervalo de direcciones especificado entra en conflicto con un intervalo que ya está reservado.
STATUS_INVALID_PAGE_PROTECTION El valor especificado para el parámetro PageProtection no es válido.
STATUS_SECTION_PROTECTION El valor especificado para el parámetro PageProtection no es compatible con la protección de página especificada cuando se creó la sección.

Comentarios

Varias vistas diferentes de una sección se pueden asignar simultáneamente al espacio de direcciones virtuales de uno o varios procesos.

No use ZwMapViewOfSectionEx para asignar un intervalo de memoria de \Device\PhysicalMemory al modo de usuario, a menos que el controlador haya asignado directamente el intervalo de memoria a través de MmAllocatePagesForMdlEx u otro método que garantice que ningún otro componente del sistema haya asignado el mismo intervalo de memoria con un valor de MEMORY_CACHING_TYPE diferente.

Las aplicaciones de usuario no pueden acceder directamente a \Device\PhysicalMemory a partir de Windows Server 2003 con Service Pack 1 (SP1) y solo pueden acceder a él si el controlador pasa un identificador a la aplicación.

Para obtener más información sobre los objetos de sección, vea Objetos y vistas de sección.

Si la llamada a esta función se produce en modo de usuario, debe usar el nombre "NtMapViewOfSectionEx" en lugar de "ZwMapViewOfSectionEx".

En el caso de las llamadas desde controladores en modo kernel, las versiones NtXxx y ZwXxx de una rutina de Servicios del sistema nativo de Windows se pueden comportar de forma diferente en la forma en que controlan e interpretan los parámetros de entrada. Para obtener más información sobre la relación entre las versiones NtXxx y ZwXxx de una rutina, vea Using Nt and Zw Versions of the Native System Services Routines.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 11, versión 24H2
Encabezado wdm.h

Consulte también

Uso de las versiones Nt y Zw de las rutinas nativas de Servicios del sistema

ZwCreateSection

ZwOpenSection

ZwMapViewOfSection

ZwUnmapViewOfSection

MapViewOfFile3