README.TXT NOTES ON VAFC driver ==================== tri_afc.drv is a Windows installable driver. It can be installed or uninstalled by using Windows Control Panel. After VAFC driver is installed, the vesa.afc= line is added into the [drivers] section of SYSTEM.INI as follows: . . . [drivers] vesa.afc=tri_vafc.drv . . . and the line tri_vafc.drv=. . . is added in the [drivers.desc] of CONTROL.INI as follows: . . . [drivers.desc] tri_vafc.drv=Trident VAFC Driver . . . The VAFC distribute disk contains the following files: tri_vafc.drv vesa_afc.h tri_afc.h readme.txt To access VAFC driver functions, open VAFC driver first, then use VAFC functions, and close the driver after the application completely finishes the access to VAFC functions. To open VAFC driver, call OpenDriver function. The syntex of OpenDriver is as follows: HDRVR OpenDriver(lpDriverName, lpSectionName, lParam) LPCSTR lpDriverName; /* address of driver name */ LPCSTR lpSectionName; /* address of .INI file section name */ LPARAM lParam; /* address of driver-specific information */ An example is: HDRVR far hDriver = NULL; /* the handle of the driver */ hDriver = OpenDriver((LPSTR)"vesa.afc", NULL, 0L) To close VAFC driver, call CloseDriver. The syntex of CloseDriver is as follows: LRESULT CloseDriver(hdrvr, lParam1, lParam2) HDRVR hdrvr; /* handle of installable driver */ LPARAM lParam1; /* driver-specific data */ LPARAM lParam2; /* driver-specific data */ An example is: CloseDriver(hriver, 0L, 0L); The VAFC functions (and their corresponding messages) provided by Trident VAFC driver are listed below: // Gets the vendor and device information for the VAFC graphics subsystem. BOOL STD_GET_DEVCAPS(LPVESA_DEVICECAPS); // DRV_VAFC_GET_DEVCAPS // Gets the current color space format of the connector BOOL STD_GET_COLOR_SPACE(DWORD far *); // DRV_VAFC_GET_COLOR_SPACE // Sets the color space format of the connector BOOL STD_SET_COLOR_SPACE(DWORD); // DRV_VAFC_SET_COLOR_SPACE // Gets the current bus transfer width of the connctor BOOL STD_GET_BUS_WIDTH(DWORD far *); // DRV_VAFC_GET_BUS_WIDTH // sets the bus transfer width of the connector BOOL STD_SET_BUS_WIDTH(DWORD); // DRV_VAFC_SET_BUS_WIDTH // Gets the current data mode of the connctor BOOL STD_GET_DATA_MODE(DWORD far *); // DRV_VAFC_GET_DATA_MODE // Sets the data mode of the connector BOOL STD_SET_DATA_MODE(DWORD); // DRV_VAFC_SET_DATA_MODE // Gets the current clock mode of the connector BOOL STD_GET_CLOCK_MODE(DWORD far *); // DRV_VAFC_GET_CLOCK_MODE // Sets the clock mode of the connector BOOL STD_SET_CLOCK_MODE(DWORD); // DRV_VAFC_SET_CLOCK_MODE //Gets the overlay color information currently used by the graphics subsystem BOOL STD_GET_OVERLAY_COLOR_INFO(LPVAFCOVERLAY_CONTROLS, DWORD); // DRV_VAFC_GET_OVERLAY_COLOR_INFO // Sets the overlay color information used by the graphics subsystem BOOL STD_SET_OVERLAY_COLOR_INFO(LPVAFCOVERLAY_CONTROLS, DWORD); // DRV_VAFC_SET_OVERLAY_COLOR_INFO // Gets the window coordinates for the display window, currently not supported BOOL STD_GET_WINDOW_RECT(LPRECT); // DRV_VAFC_GET_WINDOW_RECT // Sets the window coordinates for the displat window, currently not supported BOOL STD_SET_WINDOW_RECT(LPRECT); // DRV_VAFC_SET_WINDOW_RECT // Gets some miscellaneous graphics information from the graphics subsystem // based on the current mode of graphics operation, currently not supported BOOL STD_GET_GRAPHICS_INFO(LPVAFCGRAPHICS_INFO); // DRV_VAFC_GET_GRAPHICS_INFO // Gets all available video color spaces from the VAFC driver BOOL STD_QUERY_COLOR_SPACES(DWORD far *, DWORD); // DRV_VAFC_QUERY_COLOR_SPACES // Gets the current extended mode parameters, currently not supported BOOL STD_GET_EXTENDED_SETUP(LPVAFCEXTENDED_INFO); // DRV_VAFC_GET_EXTENDED_SETUP // Sets the extended mode parameters, currently not supported BOOL STD_SET_EXTENDED_SETUP(LPVAFCEXTENDED_INFO); // DRV_VAFC_SET_EXTENDED_SETUP // Gets the preferred setup of the VAFC subsystem for the graphics subsystem, // currently not supported BOOL STD_GET_PREFERRED_SETUP(LPVAFCPREFERRED_PARAMETERS); // DRV_VAFC_GET_PREFERRED_SETUP // Gets the last error code and clears it BOOL STD_GET_ERROR_CODE(DWORD far *); // DRV_VAFC_GET_ERROR The Trident AFC functions (and their corresponding messages) provided by Trident VAFC driver are listed below: // Gets Video overlay key type BOOL TRI_GET_KEY_TYPE(DWORD far *); // DRV_VAFC_GET_KEY_TYPE // Sets Video overlay key type BOOL TRI_SET_KEY_TYPE(DWORD); // DRV_VAFC_SET_KEY_TYPE // Gets Pixel data signal delay adjustment BOOL TRI_GET_PCLK_DELAY(DWORD far *);// DRV_VAFC_GET_PCLK_DELAY // Sets Pixel data signal delay adjustment BOOL TRI_SET_PCLK_DELAY(DWORD); // DRV_VAFC_SET_PCLK_DELAY // Gets AFC control status BOOL TRI_GET_CLK(LPVAFCCLK_CONTROLS, DWORD); // DRV_VAFC_GET_CLK // Sets AFC control status BOOL TRI_SET_CLK(LPVAFCCLK_CONTROLS, DWORD); // DRV_VAFC_SET_CLK // Gets HSYNC Delay BOOL TRI_GET_SYNC_AFCPROS(DWORD far *); // DRV_VAFC_GET_SYNC_AFCPROS // Sets HSYNC Delay BOOL TRI_SET_SYNC_AFCPROS(DWORD); // DRV_VAFC_SET_SYNC_AFCPROS All these VAFC and Trident AFC can be invoked by send some message to VAFC driver. The syntex of SendDriverMessage is as follows: LRESULT SendDriverMessage(hdrvr, msg, lParam1, lParam2) HDRVR hdrvr; /* handle of installable driver */ UINT msg; /* message */ LPARAM lParam1; /* first message parameter */ LPARAM lParam2; /* second message parameter */ Here are some examples: SendDriverMessage(hDriver, DRV_VAFC_GET_DEVCAPS, (LPARAM)(LPVESA_DEVICECAPS)&device_caps, 0L); SendDriverMessage(hDriver, DRV_VAFC_SET_COLOR_SPACE, (LPARAM)color_space, 0L); SendDriverMessage(hDriver, DRV_VAFC_GET_COLOR_SPACE, (LPARAM)(DWORD far *)&color_space, 0L); SendDriverMessage(hDriver, DRV_VAFC_GET_ERROR, (LPARAM)&dWError, 0L);