INF DDInstall.Interfaces Section

Each per-Models DDInstall.Interfaces section can have one or more AddInterface directives, depending on how many device interfaces a particular device/driver supports.

[install-section-name.Interfaces] |
[install-section-name.nt.Interfaces] | 
[install-section-name.ntx86.Interfaces] |
[install-section-name.ntia64.Interfaces] |  (Windows XP and later versions of Windows)
[install-section-name.ntamd64.Interfaces]  (Windows XP and later versions of Windows)

AddInterface={InterfaceClassGUID} [, [reference string] [,[add-interface-section] [,flags]]] ...

To support existing device interfaces, such as any of the system's predefined kernel-streaming interfaces, specify the appropriate InterfaceClassGUID values in this section.

To install a component, such as a class driver, that exports a new class of device interfaces, an INF must also have an INF InterfaceInstall32 section.

For more information about device interfaces, see Device Interface Classes.


AddInterface={InterfaceClassGUID} [, [reference string] [,[add-interface-section] [,flags]]] ...
This directive installs support for a device interface class, designated by the specified InterfaceClassGUID value that the driver exports to higher level components. Usually, it also references an INF-writer-defined add-interface-section elsewhere in the INF file. For detailed information about how to specify this directive, see INF AddInterface Directive.

This optional entry specifies one or more additional system-supplied INF files that contain sections needed to register the interface classes supported by this device/driver. If this entry is specified, usually so is a Needs entry.

For more information about the Include entry and restrictions on its use, see Specifying the Source and Target Locations for Device Files.

This optional entry specifies the particular sections that must be processed during the installation of this device. Typically, such a named section is a DDInstall.Interfaces section within a system-supplied INF file that is listed in an Include entry. However, it can be any section that is referenced within such a DDInstall.Interfaces section of the included INF.

Needs entries cannot be nested. For more information about the Needs entry and restrictions on its use, see Specifying the Source and Target Locations for Device Files.


The DDInstall section name must be referenced by a device/models-specific entry under the per-manufacturer Models section of the INF file. For information about how to use the system-defined .nt, .ntx86, .ntia64, and .ntamd64 extensions in cross-platform INF files, see Creating INF Files for Multiple Platforms and Operating Systems.

If a specified {InterfaceClassGUID} is not installed already, the operating system's setup code installs that device interface class in the system. If an INF file installs one or more new device interface classes, it also has an [InterfaceInstall32] section identifying the GUID for the new class..

For more information about how to create a GUID, see Using GUIDs in Drivers. For the system-defined interface class GUIDs, see the appropriate system-supplied header, such as Ks.h for the kernel-streaming interface class GUIDS.

When a driver is loaded, it must call IoSetDeviceInterfaceState once for each {InterfaceClassGUID} value specified in the INF's DDInstall.Interfaces section that the driver supports on the underlying device, to enable the interface for run-time use by higher level components. Instead of registering support for a device interface in an INF, a device driver can call IoRegisterDeviceInterface before making its initial call to IoSetDeviceInterfaceState. Usually, a PnP function or filter driver makes this call from its AddDevice routine.


This example shows the DDInstall.nt.Interfaces section in the INF file for the system-supplied WDM audio device/driver shown as examples for the INF DDInstall section and the INF DDInstall.Services section .

; following AddInterface= are all single lines (without 
; backslash line continuators) in the system-supplied INF file
; ...

[Strings] ; only immediately preceding %strkey% tokens shown here
%KSCATEGORY_AUDIO% = "{6994ad04-93ef-11d0-a3cc-00a0c9223196}"
KSNAME_Wave = "Wave"
KSNAME_FMSynth = "FMSynth" 
KSNAME_Topology = "Topology"
; ...

See also