IOCTL_VIDEO_SHARE_VIDEO_MEMORY control code
This IOCTL is called by a process that will share user-mode video memory as a linear frame buffer. Miniport drivers handle this IOCTL by mapping the frame buffer into the caller's address space with VideoPortMapBankedMemory. Otherwise this IOCTL is the same as IOCTL_VIDEO_MAP_VIDEO_MEMORY.
This request is both modal and nonmodal: the miniport driver must return the location size of the frame buffer within video memory, and the frame buffer size and location can vary from mode to mode (modal characteristic), but a subsequent set-mode operation (to the same mode) must not cause the video memory to change location (nonmodal characteristic).
This IOCTL is DCI only.
The VRP InputBuffer contains a VIDEO_SHARE_MEMORY structure specifying a handle to the process mapping the frame buffer, and the requested view size and offset into the shared memory. The view size plus the offset must not exceed the memory size of the adapter.
The miniport driver returns the VIDEO_SHARE_MEMORY_INFORMATION structure in the VRP OutputBuffer. This output contains the virtual address where the video memory is mapped, the view size in bytes of the mapped memory and the offset into the view.
If the miniport driver successfully maps the memory, it sets the Information member of the STATUS_BLOCK structure to sizeof(VIDEO_SHARE_MEMORY_INFORMATION); otherwise, the miniport driver sets this member to zero.