CardVDD

Just as you can let the Main VDD do most of the work and only implement functions in the mini-VDD that add unique functionality, you can let one of the standard chipset mini-VDDs do most of the work and only implement unique functionality in a CardVDD. Suppose that you are a video card maker who uses a standard chipset for which there is already mini-VDD support provided by a chipset manufacturer (such as S3, Cirrus, Western Digital etc.). Suppose you have implemented your particular card in a unique way that the chipset designer did not anticipate when writing their mini-VDD. You can implement an additional VDD module called a CardVDD which is loaded after the mini-VDD, and can hook out mini-VDD functions that your card needs to implement after the mini-VDD has already hooked out its functions. Therefore, you can implement unique added functionality without having to reimplement all of the functions already in the mini-VDD.

For example, suppose your new card is based on the S3 chipset, and that the card's functionality is identical to the standard S3 functionality, except that your card sets monitor refresh rates in a different way. The S3.VXD, the mini-VDD for all S3 chipsets, implements PRE_CRTC_MODE_CHANGE in order to set monitor refresh rates using the standard S3 interface. You can create a CardVDD which hooks out PRE_CRTC_MODE_CHANGE so that your function is called instead of the one in S3.VXD. However, all other functions are called in S3.VXD and you do not have to reimplement all of the functionality in S3.VXD just because your card is unique in this one way.

CardVDDs are loaded in the same way as mini-VDDs. To distinguish your CardVDD from a mini-VDD, change the registry key in your .INF file to be "cardvdd=xxxx.vxd" instead of "minivdd=xxxx.vxd.