Supported Drivers

For SDV to verify a driver, it must be able to interpret the driver code, specifically, the driver's entry points and the code in functions and routines that support required driver functionality.

The following sections describe the basic requirements for drivers and the specific syntax that SDV expects of the drivers that it verifies. SDV does not verify that drivers comply with these requirements, but if the driver does not comply, SDV may fail to run and, in rare situations, it reports false positive or false negative results because of misinterpretation.

Basic Driver Characteristics

SDV is able to verify only drivers with the following characteristics:

Basic Driver Requirements

For SDV to verify a WDM driver, the driver must:

For SDV to verify a KMDF driver, the driver must:

For SDV to verify an NDIS driver, the driver must:

In addition, SDV can verify drivers that support:

Reserved Function Names

The SDV verification engine does not operate properly when the driver or library code uses the same function name patterns that SDV uses internally.

Specifically, SDV does not correctly interpret code if:

  • The code includes function names that begin with __init and are followed by one or more integers, such as __init123.

  • The code includes function names that begin with sdv_, such as sdv_Func, or include the string _sdv_, such as Func_sdv_ or Func_sdv_foo.

  • The library uses a .def file to rename an exported function and the external name is the same as the name of another static function in the library.

If the driver code or library code includes these elements, SDV attempts to verify the driver or process the library, but the result is Not Supported Feature (NSF). For more information about SDV results, see Interpreting Static Driver Verifier Results.