The following video IOCtls are defined and supported by the SCREENDD$ device driver, by way of the DosDevIOCtl call. The IOCtl category code is 80h (defined as SCREENDD_CATEGORY).
The function codes within the SCREENDD_CATEGORY are:
┌──────────┬──────────────────────────────────────────────────┐ │Function │Description │ ├──────────┼──────────────────────────────────────────────────┤ │00h │Get Current Video Memory Bank │ ├──────────┼──────────────────────────────────────────────────┤ │01h │Set Current Video Memory Bank │ ├──────────┼──────────────────────────────────────────────────┤ │02h-07h │Reserved │ ├──────────┼──────────────────────────────────────────────────┤ │08h │Return Adapter Video Configuration │ ├──────────┼──────────────────────────────────────────────────┤ │09h │Return Manufacturer-Specific Adapter Data │ ├──────────┼──────────────────────────────────────────────────┤ │0Ah │Update Adapter Video Memory Information │ ├──────────┼──────────────────────────────────────────────────┤ │0Bh │Return Linear Address Mapped to Physical Address │ ├──────────┼──────────────────────────────────────────────────┤ │0Ch-7Fh │Reserved │ └──────────┴──────────────────────────────────────────────────┘
An example of the DosDevIOCtl calling convention for the Screen IOCtls follows:
──────────────────────────────────────────────────────────────
int PASCAL near videoIoctl(VOID *data,VOID *parm,USHORT function)
{
unsigned hScreenDD; /* handle of SCREENDD$ dev driver */
unsigned OpenAction; /* action taken to open device */
unsigned rc; /* function return code */
if (!(rc = DosOpen(SCREENDD_NAME, (PHFILE)&hScreenDD, (PUSHORT)&OpenAction,
NO_SIZE, NO_ATTRIBUTES, OPEN_IF_EXISTS, NO_INHERIT+DENY_NONE+READ_WRITE,
RESERVED_LONG)))
{
rc = DosDevIOCtl(data,
parm,
function,
SCREENDD_CATEGORY,
(HFILE)hScreenDD);
DosClose(hScreenDD);
}
return (rc);
──────────────────────────────────────────────────────────────