Раздел INF DDInstall.Interfaces
Каждый из моделей , DDInstall_. Раздел Interfaces может содержать одну или несколько директив AddInterface в зависимости от того, сколько интерфейсов устройств поддерживает конкретное устройство или драйвер.
[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)
[install-section-name.ntarm.Interfaces] | (Windows 8 and later versions of Windows)
[install-section-name.ntarm64.Interfaces] (Windows 10 version 1709 and later versions of Windows)
AddInterface={InterfaceClassGUID} [, [reference string] [,[add-interface-section] [,flags]]] ...
[Include=filename.inf[,filename2.inf]...]
[Needs=inf-section-name[,inf-section-name]...]
Для поддержки существующих интерфейсов устройств, таких как любой из предопределенных системных интерфейсов потоковой передачи ядра, укажите соответствующие значения InterfaceClassGUID в этом разделе.
Чтобы установить компонент, например драйвер класса, который экспортирует новый класс интерфейсов устройств, inf также должен иметь раздел INF InterfaceInstall32.
Дополнительные сведения об интерфейсах устройств см. в разделе Классы интерфейса устройства.
Записи
AddInterface={InterfaceClassGUID} [,[строка ссылки] [,[add-interface-section] [,,flags_]]]...
Эта директива устанавливает поддержку класса интерфейса устройства, обозначенного указанным значением InterfaceClassGUID , которое драйвер экспортирует в компоненты более высокого уровня. Как правило, он также ссылается на раздел add-interface,определяемый INF-writer в другом месте INF-файла. Подробные сведения о том, как указать эту директиву, см. в разделе INF AddInterface Directive.
Include=,filename. inf[,filename2.inf]...
Эта необязательная запись указывает один или несколько дополнительных системных INF-файлов, содержащих разделы, необходимые для регистрации классов интерфейса, поддерживаемых этим устройством или драйвером. Если указана эта запись, обычно это запись Needs .
Needs=,inf-section-name[,inf-section-name]...
Эта необязательная запись указывает конкретные разделы, которые должны быть обработаны во время установки этого устройства. Как правило, таким именованным разделом является , DDInstall_. Раздел interfaces в предоставленном системой INF-файле, который указан в записи Include . Однако это может быть любой раздел, на который ссылается такой DDInstall_. Раздел интерфейсов в включенной inf-версии.
Комментарии
На имя раздела DDInstall должна ссылаться запись устройства или модели в разделе Модели производителя INF-файла. Сведения об использовании системных расширений .nt, .ntx86, .ntia64, .ntamd64, .ntarm и .ntarm64 в кроссплатформенных INF-файлах см. в статье Создание INF-файлов для нескольких платформ и операционных систем.
Если указанный {,InterfaceClassGUID_} еще не установлен, код установки операционной системы устанавливает этот класс интерфейса устройства в системе. Если INF-файл устанавливает один или несколько новых классов интерфейса устройства, в нем также может быть раздел [InterfaceInstall32] , определяющий GUID для нового класса.
Дополнительные сведения о создании GUID см. в разделе Использование идентификаторов GUID в драйверах. Идентификаторы GUID класса интерфейса, определяемого системой, см. в соответствующем заголовке, предоставленном системой, например Ks.h , для класса GUIDS интерфейса потоковой передачи ядра.
При загрузке драйвера он должен вызвать IoRegisterDeviceInterface с той же {,InterfaceClassGUID_} и ссылочной строкой , используемой в директиве AddInterface , чтобы получить полное значение SymbolicLinkName для интерфейса устройства. Это необходимо сделать для каждого интерфейса устройства в DDInstall_ INF. Раздел интерфейсов , поддерживаемый драйвером на базовом устройстве. Для каждого элемента SymbolicLinkName драйвер должен вызывать IoSetDeviceInterfaceState , чтобы включить интерфейс устройства. Как правило, функция или драйвер фильтра PnP выполняет эти вызовы из своей процедуры AddDevice .
Примеры
В этом примере показан параметр DDInstall. Nt. Раздел интерфейсов в INF-файле для предоставленного системой звукового устройства или драйвера WDM.
;
; following AddInterface= are all single lines (without
; backslash line continuators) in the system-supplied INF file
;
[WDMPNPB003_Device.NT.Interfaces]
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_Wave%,\
WDM_SB16.Interface.Wave
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_Topology%,\
WDM_SB16.Interface.Topology
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_UART%,\
WDM_SB16.Interface.UART
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_FMSynth%,\
WDM_SB16.Interface.FMSynth
; ...
[Strings] ; only immediately preceding %strkey% tokens shown here
%KSCATEGORY_AUDIO% = "{6994ad04-93ef-11d0-a3cc-00a0c9223196}"
KSNAME_Wave = "Wave"
KSNAME_UART = "UART"
KSNAME_FMSynth = "FMSynth"
KSNAME_Topology = "Topology"
; ...