ZwMapViewOfSection

NTSTATUS
    ZwMapViewOfSection(

        IN HANDLE  SectionHandle,
        IN HANDLE  ProcessHandle,
        IN OUT PVOID  *BaseAddress,
        IN ULONG  ZeroBits,
        IN ULONG  CommitSize,
        IN OUT PLARGE_INTEGER  SectionOffset,    /* optional */
        IN OUT PULONG  ViewSize,
        IN SECTION_INHERIT  InheritDisposition,
        IN ULONG  AllocationType,
        IN ULONG  Protect
        );

ZwMapViewOfSection maps a view of a section into the virtual address space of a subject process.

Parameters

SectionHandle
Is the handle returned by a successful call to ZwOpenSection.
ProcessHandle
Is the handle of an opened process object, representing the process for which the view should be mapped.
BaseAddress
Points to a variable that will receive the base address of the view. If the initial value of this argument is nonNULL, the view is allocated starting at the specified virtual address rounded down to the next 64-kilobyte address boundary.
ZeroBits
Specifies the number of high-order address bits that must be zero in the base address of the section view. The value of this argument must be less than 21 and is used only when the operating system determines where to allocate the view, as when BaseAddress is NULL.
CommitSize
Specifies the size, in bytes, of the initially committed region of the view. CommitSize is only meaningful for page-file backed sections. For mapped sections, both data and image are always committed at section creation time. This parameter is ignored for mapped files. This value is rounded up to the next host-page-size boundary.
SectionOffset
Points to the offset, in bytes, from the beginning of the section to the view. If this pointer is nonNULL, the given value is rounded down to the next allocation granularity size boundary.
ViewSize
Points to a variable that will receive the actual size, in bytes, of the view. If the value of this parameter is zero, a view of the section will be mapped starting at the specified section offset and continuing to the end of the section. Otherwise, the initial value of this argument specifies the size of the view, in bytes, and is rounded up to the next host page-size boundary.
InheritDispostion
Specifies how the view is to be shared by a child process created with a create process operation. Device and intermediate drivers should set this parameter to zero.
AllocationType
A set of flags that describes the type of allocation to be performed for the specified region of pages.
Protect
Specifies the protection for the region of initially committed pages. Device and intermediate drivers should set this value to PAGE_READWRITE.

Return Value

ZwMapViewOfSection can return one of the following values:

STATUS_SUCCESS
STATUS_ACCESS_DENIED
STATUS_INVALID_HANDLE

Comments

Several different views of a section can be concurrently mapped into the virtual address space of a process. Likewise, several different views of a section can be concurrently mapped into the virtual address space of several processes.

If the specified section does not exist or the access requested is not allowed, ZwMapViewOfSection returns an error.

Callers of ZwMapViewOfSection must be running at IRQL PASSIVE_LEVEL.

See Also

ZwOpenSection, ZwUnmapViewOfSection