Advanced VIO (AVIO) functions are used to display characters. These functions must be supported for Display DCs. Hardcopy drivers do not support AVIO functions. When writing to an AVIO presentation space, an application must ensure that windows containing alphanumeric data are device-cell-aligned, where appropriate. The presentation driver can determine whether any characters that are not cell-aligned are visible. Most column, row, length, width, and height values correspond to cells within the presentation space Logical Video Buffer (LVB), whose origin is assumed to be at the bottom-left corner of the buffer (0,0).

The presentation driver is expected to clip alphanumeric data to the DC region. This is performed in the same way as it is for normal graphics, by enumerating the rectangles using GreGetClipRects and clipping each line to a single rectangle. Although the presentation driver is neither expected to test for correlation hits nor to accumulate GPI_BOUNDS, it should accumulate USER_BOUNDS for AVIO functions if the COM_ALT_BOUNDS command flag is set.

The VIO presentation space is passed to the display driver as a pointer to a VioPresentationSpace structure. The display driver uses this structure to extract the current state data to allow it to update the display. The VioPresentationSpace structure is defined as:

PresentationSpaceLock

pLVB pBVSCB rgfAVio CellByteSize BufferRowCount BufferColumnCount WindowOriginRow WindowOriginColumn TextCursorRow TextCursorColumn TextCursorStartLine TextCursorEndLine TextCursorWidth TextCursorVisible CellImageHeight CellImageWidth CodePageID WindowHeight WindowWidth hConsoleDisplayContext hVioWindow RowOrgLatch ColOrgLatch CursorRow CursorCol CursorStartLine CursorEndLine CursorWidth PartialCellAdjust XLatch YLatch WidthLatch HeightLatch CellHeightLatch rgfShieldStates