A driver development kit (DDK) is a set of programs and related files that are used to develop a new software or hardware driver or to update an existing legacy application driver for an operating system. (A driver is a relatively small program that addresses the unique requirements of a kind of hardware or a special software application.) Typically, DDKs are used by device manufacturers and software application developers. Some DDKs can be downloaded from the maker of the operating system. Others can be purchased from a third party. A DDK typically includes sample drivers, source code, a debugging utility, a compiler, testing tools, other utilities, and documentation.
In addition to the kit, a driver developer needs to be familiar with the operating system or application the driver is for. Building a driver is typically a complicated process. Testing and debugging should be thorough so that the driver is released with as few errors as possible. There are several steps in building a driver:
- Writing the driver code. Common programming languages for writing drivers are C and C++.
- Testing and debugging the driver on a checked build. A checked build is an operating system and kernel-mode driver that has extra error checking and debugging information in the code to aid testing and debugging of the driver. Running with a checked build is slower and uses more memory. A checked build is done in a separate computer from the free build.
- Testing and debugging the driver on a free build. A free build or retail build is the end user version of the operating system built with full optimization and all debugging information removed. A free build is faster and uses less memory. It also shows driver problems that a user might encounter such as error messages or a computer freeze.
- Fine-tuning and performance checking of the driver on the free build.
- Additional testing and debugging as necessary, using both the checked and free builds of the driver.
- Final testing using the free build. A driver needs testing on a multiprocessor computer as well as on a single processor computer.