VideoPortMapMemory
VP_STATUS VideoPortMapMemory(
PVOID HwDeviceExtension,
|
|
PHYSICAL_ADDRESS PhysicalAddress,
|
|
PULONG Length,
|
|
PULONG InIoSpace,
|
|
PVOID *VirtualAddress
|
|
);
|
|
VideoPortMapMemory remaps a bus-relative physical range of video memory
into the corresponding display driver’s virtual address space in response to a
VRP with the IoControlCode member set to IOCTL_VIDEO_MAP_VIDEO_MEMORY.
Parameters
-
HwDeviceExtension
-
Points to the miniport driver’s device extension.
-
PhysicalAddress
-
Specifies the bus-relative base address of the range to be mapped.
-
Length
-
Points to a variable specifying the number of bytes of device memory to be
mapped. VideoPortMapMemory returns the actual size of the memory
mapped, which can be rounded to a system-determined alignment boundary, in
this parameter. However, the miniport and display drivers cannot access memory
outside the range delimited by the input value at Length.
-
InIoSpace
-
Points to a variable indicating whether the range is in I/O space or memory
space. TRUE indicates I/O space.
-
VirtualAddress
-
Points to a variable that specifies a process handle, which usually should be
set to zero. Such a handle can also be a value passed in a VRP by the
corresponding display driver. Zero specifies that the port driver should map
the logical memory range at any location in the address space of the current
process. On return from a successful call, VideoPortMapMemory resets
the variable to the base virtual address to which it has mapped the given PhysicalAddress.
Return Value
VideoPortMapMemory returns NO_ERROR if the given logical range was
successfully mapped to a user-space virtual range. Otherwise, it can return
ERROR_INVALID_PARAMETER.
Comments
VideoPortMapMemory runs in kernel mode within the same context as the
user-mode thread that initiated the call.
VideoPortMapMemory should be used by miniport drivers to manage video
adapters that allow the video frame buffer to be completely mapped at all
times. That is, miniport drivers for adapters that are not restricted
to using Banks to map a slice at a time can use the more efficient VideoPortMapMemory.
Callers of VideoPortMapMemory are running at IRQL = PASSIVE_LEVEL.
See Also
IOCTL_VIDEO_MAP_VIDEO_MEMORY,
VIDEO_REQUEST_PACKET, VideoPortUnmapMemory