INF AddService 指令

注意

此指令在 INF 文件中不使用,这些文件安装不需要任何驱动程序的设备,例如调制解调器或显示监视器。

AddService 指令在 INF DDInstall 中使用。服务部分INF DefaultInstall.Services 部分。 它指定与驱动程序关联的服务的特征,例如服务加载方式和时间,以及对其他基础旧驱动程序或服务的任何依赖项。 (可选)此指令还会为设备设置事件日志记录服务。

[DDInstall.Services] 
 
AddService=ServiceName,[flags],service-install-section
                     [,event-log-install-section[,[EventLogType][,EventName]]]
...

ServiceName
指定要安装的服务的名称。 名称应是唯一的,它不太可能与其他 INF 文件安装的服务冲突。 例如,服务名称可以包含公司名称的简短缩写作为前缀或后缀。 此名称不得本地化。 无论系统的本地语言如何,它都必须相同。

flag
指定在 Setupapi.h 中定义的以下系统定义的标志的一个或多个 (ORed) ,以十六进制值表示:

0x00000001 (SPSVCINST_TAGTOFRONT)
将命名服务的标记移到其组顺序列表的前面,从而确保先在该组中加载该标记 (,除非随后安装有此 INF 规范的设备将取代它) 。 使用 WDM 驱动程序专门安装 PnP 设备和设备的 INF 文件不应设置此标志。

0x00000002 (SPSVCINST_ASSOCSERVICE)
将此命名服务分配为 PnP 函数驱动程序 (或旧驱动程序) 由此 INF 文件安装的设备。

若要指示服务是设备的函数驱动程序,服务应在 AddService 指令中指定SPSVCINST_ASSOCSERVICE标志。 对于筛选器驱动程序或其他驱动程序组件等服务,不应使用标志。

每个设备驱动程序 INF 都应有一个关联的服务。 如果 INF 是扩展 INF,或者使用 Include/Needs 指令从另一个 INF 继承关联的服务, 则 INF 不需要关联服务。 对于不需要函数驱动程序的设备,可以将 NULL 驱动程序指定为关联的服务,如下所示:

AddService = ,2

0x00000008 (SPSVCINST_NOCLOBBER_DISPLAYNAME)
如果系统中已存在此服务,请不要覆盖给定服务的 (可选) 友好名称。

0x00000010 (SPSVCINST_NOCLOBBER_STARTTYPE)
如果系统中已存在此命名服务,请不要覆盖给定服务的启动类型。

0x00000020 (SPSVCINST_NOCLOBBER_ERRORCONTROL)
如果系统中已存在此命名服务,请不要覆盖给定服务的错误控制值。

0x00000040 (SPSVCINST_NOCLOBBER_LOADORDERGROUP)
如果系统中已存在此命名服务,请不要覆盖给定服务的 load-order-group 值。 使用 WDM 驱动程序专门安装 PnP 设备和设备的 INF 文件不应设置此标志。

0x00000080 (SPSVCINST_NOCLOBBER_DEPENDENCIES)
如果系统中已存在此命名服务,请不要覆盖给定服务的依赖项列表。 使用 WDM 驱动程序专门安装 PnP 设备和设备的 INF 文件不应设置此标志。

0x00000100 (SPSVCINST_NOCLOBBER_DESCRIPTION)
如果系统中已存在此服务,请不要覆盖给定服务的 (可选) 说明。

0x00000400 (SPSVCINST_CLOBBER_SECURITY) (Windows XP 和更高版本的 Windows)
如果系统中已存在此服务,则覆盖服务的安全设置。

0x00000800 (SPSVCSINST_STARTSERVICE) (Windows Vista 和更高版本的 Windows)
安装服务后启动服务。 此标志不能用于启动实现 即插即用 (PnP) 函数驱动程序或筛选设备的驱动程序的服务。 否则,此标志可用于启动由服务控制管理器 (SCM) 管理的用户模式或内核模式服务。

0x00001000 (SPSVCINST_NOCLOBBER_REQUIREDPRIVILEGES) (Windows 7 及更高版本的 Windows)
如果系统中已存在此服务,请不要覆盖给定服务的权限。

0x00002000 (SPSVCINST_NOCLOBBER_TRIGGERS) (Windows 10版本 2004 及更高版本的 Windows)
如果系统中已存在此服务并且具有现有触发器,请不要覆盖给定服务的触发器。 有关触发器的详细信息,请参阅下面的 AddTrigger 指令。

0x00004000 (SPSVCINST_NOCLOBBER_SERVICESIDTYPE) (Windows 10 版本 2004 及更高版本的 Windows)
如果系统中已存在此服务并且具有现有的 SID 信息,请不要覆盖给定服务的 SID 信息。 有关详细信息,请参阅下面的 ServiceSidType 指令。

0x00008000 (SPSVCINST_NOCLOBBER_DELAYEDAUTOSTART) (Windows 10 版本 2004 及更高版本的 Windows)
如果系统中已存在此服务并且具有现有值,请不要覆盖给定服务的延迟自动启动值。 有关详细信息,请参阅下面的 DelayedAutoStart 指令。

0x00020000 (SPSVCINST_NOCLOBBER_FAILUREACTIONS) (Windows 11 版本 22H2 及更高版本的 Windows)
如果系统中已存在此服务并且存在现有的故障操作,请不要覆盖给定服务的故障操作。 有关故障操作的详细信息,请参阅下面的 FailureActions 指令。

service-install-section
引用 INF 编写器定义的部分,其中包含用于安装此设备命名服务的信息 (或设备) 。 有关详细信息,请参阅以下 “备注” 部分。

event-log-install-section
(可选)引用一个 INF 编写器定义的部分,在该节中设置此设备的事件日志记录服务 (或设备) 。

EventLogType
(可选)指定 系统安全性应用程序之一。 如果省略,则默认为 System,这几乎始终是安装设备驱动程序的适当值。

例如,仅当要安装的驱动程序提供自己的安全支持时,INF 才会指定 安全性

EventName
(可选)指定要用于事件日志的名称。 如果省略,则默认为给定 的 ServiceName

注解

系统定义的扩展和不区分大小写的扩展可以插入到 DDInstall中。包含跨操作系统和/或跨平台 INF 文件中的 AddService 指令的服务部分,用于指定特定于平台的或特定于 OS 的安装。

每个 INF 编写器创建的节名称必须在 INF 文件中是唯一的,并且必须遵循定义节名称的一般规则。 有关这些规则的详细信息,请参阅 INF 文件的一般语法规则

AddService 指令必须引用 INF 文件中其他位置的命名 service-install-section。 每个此类部分都有以下格式:

[service-install-section]
 
[DisplayName=name]
[Description=description-string]
ServiceType=type-code
StartType=start-code
ErrorControl=error-control-level
ServiceBinary=path-to-service
[StartName=driver-object-name]
[AddReg=add-registry-section[, add-registry-section] ...]
[DelReg=del-registry-section[, del-registry-section] ...]
[BitReg=bit-registry-section[,bit-registry-section] ...]
[LoadOrderGroup=load-order-group-name]
[Dependencies=depend-on-item-name[,depend-on-item-name]
[Security="security-descriptor-string"]...]
[RequiredPrivileges=privilege-name[,privilege-name]...] (Windows 7 and later versions of Windows)
[ServiceSidType=value] (Windows 10 Version 2004 and later versions of Windows)
[DelayedAutoStart=value] (Windows 10 Version 2004 and later versions of Windows)
[AddTrigger=service-trigger-install-section[, service-trigger-install-section, ...]] (Windows 10 Version 2004 and later versions of Windows)
[FailureActions=service-failure-actions-install-section] (Windows 11 version 22H2 and later versions of Windows)

每个 service-install-section 必须至少有 ServiceTypeStartTypeErrorControlServiceBinary 条目,如下所示。 但是,其余条目是可选的。

Service-Install节条目和值

DisplayName=名字
指定服务/驱动程序的友好名称(通常为易于本地化)表示为 INF 文件的 Strings 节中定义的 %strkey% 标记。

描述=description-string
(可选)指定描述服务的字符串,通常表示为 INF 文件的 Strings 节中定义的 %strkey% 标记。

此字符串为用户提供有关服务的详细信息,而不是 DisplayName。 例如, DisplayName 可能类似于“DHCP 客户端”,说明可能类似于“通过注册和更新 IP 地址和 DNS 名称来管理网络配置”。

说明字符串应足够长,足以具有描述性,但不应如此尴尬。 如果 description-string 包含任何 %strkey% 标记,则每个标记最多可以表示 511 个字符。 任何字符串标记替换后的总字符串不应超过 1024 个字符。

ServiceType=type-code
内核模式设备驱动程序的类型代码必须设置为0x00000001 (SERVICE_KERNEL_DRIVER) 。

为设备安装的 Microsoft Win32 服务的 类型代码 应设置为 0x00000010 (SERVICE_WIN32_OWN_PROCESS) 0x00000020 (SERVICE_WIN32_SHARE_PROCESS) 。 如果 Win32 服务可以与桌面交互,则类型代码值应与 0x00000100 (SERVICE_INTERACTIVE_PROCESS) 结合使用。

最高级别的网络驱动程序(例如重定向程序或文件系统驱动程序) 的类型代码 应设置为 0x00000002 (SERVICE_FILE_SYSTEM_DRIVER)

SERVICE_xxxx常量在 Wdm.hNtddk.h 中定义。

StartType=start-code
指定何时将驱动程序启动为以下数值之一,以十进制表示形式表示,或按以下列表所示,以十六进制表示法表示。

0x0 (SERVICE_BOOT_START)
指示操作系统加载程序启动的驱动程序。

此值必须用于加载操作系统所需的设备的驱动程序。

0x1 (SERVICE_SYSTEM_START)
指示在操作系统初始化期间启动的驱动程序。

此值应由在初始化期间执行设备检测的 PnP 驱动程序使用,但不需要加载系统。

例如,还可以检测旧设备的 PnP 驱动程序应在 INF 中指定此值,以便调用其 DriverEntry 例程来查找旧设备,即使 PnP 管理器无法枚举该设备也是如此。

0x2 (SERVICE_AUTO_START)
指示服务控制管理器在系统启动时启动的服务。

此值不应在 WDM 或 PnP 设备驱动程序的 INF 文件中使用。

0x3 (SERVICE_DEMAND_START)
指示在枚举相应设备时由 PnP 管理器按需启动的服务,也可以由服务控制管理器来响应非 PnP 设备的显式用户需求。

此值应在 INF 文件中用于加载系统所需的设备的所有 WDM 驱动程序以及无需加载系统或参与设备检测的所有 PnP 设备驱动程序。

0x4 (SERVICE_DISABLED)
指示无法启动的服务。

此值可用于暂时禁用设备的驱动程序服务。 但是,如果此值在 INF 文件的 service-install 节中指定,则无法安装设备/驱动程序。

有关 StartType 的详细信息,请参阅 指定驱动程序加载顺序

ErrorControl=error-control-level
将错误控制级别指定为以下数值之一,以十进制表示形式表示,或按十六进制表示法在以下列表中所示。

0x0 (SERVICE_ERROR_IGNORE)
如果驱动程序无法加载或初始化,请继续执行系统启动,并且不会向用户显示警告。

0x1 (SERVICE_ERROR_NORMAL)
如果驱动程序无法加载或初始化其设备,系统启动应继续,但向用户显示警告。

0x2 (SERVICE_ERROR_SEVERE)
如果驱动程序无法加载,系统启动应切换到注册表的 LastKnownGood 控件集并继续系统启动,即使驱动程序再次指示加载或设备/驱动程序初始化错误。

0x3 (SERVICE_ERROR_CRITICAL)
如果驱动程序无法加载并且系统启动未使用注册表的 LastKnownGood 控件集,请切换到 LastKnownGood ,然后重试。

如果在使用 LastKnownGood 时启动仍然失败,请运行 bug 检查例程。 (只有 系统启动才能启动的设备/驱动程序在其 INF 文件中指定此值。)

ServiceBinary=path-to-service
指定服务二进制文件的路径,表示为 %dirid%\filename

dirid 数字是自定义目录标识符或使用 Dirids 中所述的系统定义目录标识符之一。 给定 文件名 指定已传输的文件 (看到 INF CopyFiles 指令) 从源分发媒体到目标计算机上的该目录。

StartName=driver-object-name
此可选条目指定表示此设备/驱动程序的驱动程序对象的名称。 如果 类型代码 指定 1 (SERVICE_KERNEL_DRIVER) 或 2 (SERVICE_FILE_SYSTEM_DRIVER) ,则此名称是 I/O 管理器用于加载驱动程序的驱动程序对象名称。

AddReg=add-registry-section[add-registry-section]...
引用一个或多个 INF 编写器定义的 加载项注册表部分 ,其中设置了与新安装服务相关的任何注册表信息。 有关详细信息,请参阅 INF AddReg 指令

DelReg=del-registry-section[del-registry-section]...
引用一个或多个 INF 编写器定义的 del-registry-节 ,其中已删除已安装服务的相关注册表信息。 有关详细信息,请参阅 INF DelReg 指令

此指令几乎从未在 service-install-section 中使用过,但它可能用于 INF 中“更新”以前安装相同设备/驱动程序服务的注册表。

BitReg=bit-registry-section[bit-registry-section]...
service-install-section 中有效,但几乎从未使用过。

LoadOrderGroup=load-order-group-name
此可选项标识此驱动程序所属的加载顺序组。 它可以是“标准”加载顺序组之一,例如 SCSI 类或 NDIS

通常,WDM 驱动程序的设备或独占 PnP 设备不需要此条目,除非此类组存在旧依赖项。 但是,如果按特定顺序加载一组驱动程序来支持设备检测,则此条目非常有用。

有关 LoadOrderGroup 的详细信息,请参阅 指定驱动程序加载顺序

依赖=depend-on-item-name[depend-on-item-name]...
依赖项列表中的每个 依赖项名称 项指定设备/驱动程序所依赖的服务或负载顺序组的名称。

如果 依赖项名称 指定服务,则启动此驱动程序之前必须运行的服务。 例如,系统提供的 Win32 TCP/IP 打印服务的 INF 取决于基础 (内核模式) TCP/IP 传输堆栈的支持。 因此,TCP/IP 打印服务的 INF 将此条目指定为 Dependencies=TCPIP

依赖项名称可以指定此设备/驱动程序所依赖的负载顺序组。 仅当至少启动指定组的一个成员时,才会启动此类驱动程序。 在组名称前面加上加号 (+) 。 例如,系统 RAS 服务 INF 可能有一个条目,如 Dependencies = +NetBIOSGroup,RpcSS 列出加载顺序组和服务。

Security=“security-descriptor-string
指定要应用于服务的安全描述符。 此安全描述符指定执行此类操作所需的权限,例如启动、停止和配置服务。 security-descriptor-string 值是一个包含标记的字符串,用于指示 DACL (D:) 安全组件。

有关安全描述符字符串的信息,请参阅 安全描述符定义语言 (Windows) 。 有关安全描述符字符串格式的信息,请参阅安全描述符定义语言 (Windows) 。

有关如何指定安全描述符的详细信息,请参阅 创建安全设备安装

RequiredPrivileges=privilege-name[privilege-name]...

注意

此值只能用于 Win32 服务 ,并且仅适用于 Windows 7 及更高版本。

列表中的每个 特权名称 都是服务所需的特权的名称。 有关特权名称列表,请参阅 Windows (Privilege Constants) 。 对于每个特权名称,只需要文本名称。 例如,特权名称应写为“SeAuditPrivilege”,但不应SE_AUDIT_NAME。

有关服务所需的权限的详细信息,请参阅 SERVICE_REQUIRED_PRIVILEGES_INFO (Windows)

ServiceSidType=价值

注意

此值只能用于 Win32 服务,并且仅适用于版本 2004 及更高版本Windows 10。

此条目可以使用 SERVICE_SID_INFO中所述的任何有效值。

DelayedAutoStart=价值

注意

此值只能用于 Win32 服务,并且仅适用于 Windows 10 2004 及更高版本。

包含自动启动服务的延迟自动启动设置。

如果此成员0x0,则服务在系统启动期间启动。 否则,在启动其他自动启动服务后启动该服务,加上短暂延迟。

除非服务是自动启动服务,否则将忽略此设置。

有关详细信息,请参阅 本页

AddTrigger=service-trigger-install-section [, service-trigger-install-section, ...]
指定要为 Win32 服务 注册的触发器事件,以便在发生触发器事件时启动或停止该服务。 有关服务触发器事件的详细信息,请参阅 服务触发器事件

AddTrigger 指令引用的每个命名 service-trigger-install-section 具有以下格式:

[service-trigger-install-section]

TriggerType=trigger-type
Action=action-type
SubType=trigger-subtype
[DataItem=data-type,data]
...

Service-Trigger-Install-Section 条目和值

TriggerType=trigger-type
在以下数值之一中指定服务触发器事件类型,以十进制表示,或如以下列表所示,十六进制表示法所示:

0x1 (SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL)
指示当指定设备接口类的设备到达或系统启动时存在时触发该事件。

有关详细信息,请参阅 SERVICE_TRIGGER结构

行动=action-type
指定在发生指定触发器事件时要执行的操作。

0x1 (SERVICE_TRIGGER_ACTION_SERVICE_START)
在发生指定的触发器事件时启动服务。

0x2 (SERVICE_TRIGGER_ACTION_SERVICE_STOP)
在发生指定的触发器事件时停止服务。

有关详细信息,请参阅 SERVICE_TRIGGER结构

=trigger-subtype
指定标识触发器事件子类型的 GUID。 该值取决于 TriggerType 的值。

TriggerType0x1 (SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL) 时, SubType 指定标识设备接口类的 GUID。

有关详细信息,请参阅 SERVICE_TRIGGER结构

DataItem=数据类型、数据
(可选)为服务触发器事件指定特定于触发器的数据。

TriggerType0x1 (SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL) 时,可以使用数据类型0x2 (SERVICE_TRIGGER_DATA_TYPE_STRING) 指定可选的 DataItem,以将设备接口类限定为特定的硬件 ID 或兼容 ID。

有关详细信息,请参阅 SERVICE_TRIGGER_SPECIFIC_DATA_ITEM结构

使用 AddTrigger 指令的最佳做法是在设备接口到达时触发启动服务。 有关详细信息,请参阅 Win32 服务与设备交互

注意

AddTrigger 语法仅在 Windows 10 版本 2004 和转发中可用。

FailureActions=service-failure-actions-install-section
(可选)指定服务控制器在服务失败时应采取的操作。

服务控制管理器计算自系统启动以来每个服务失败的次数。 如果服务在重置期间秒内未失败,则计数将重置为 0。 当服务第 N 次失败时,服务控制器将执行操作列表的元素 N 中指定的操作。 如果 N 大于操作数,则服务控制器将重复列表中的最后一个操作。

FailureActions 指令引用 的 service-failure-actions-install-section 具有以下格式:

[service-failure-actions-install-section]

[ResetPeriod=reset-period]
[NonCrashFailures=value]
Action=failure-action-type,delay
[Action=failure-action-type,delay]
...

Service-Failure-Actions-Install-Section 条目和值

ResetPeriod=reset-period
指定在无故障(以秒为单位)的情况下将失败计数重置为零的时间。 如果未指定重置周期,则默认情况下不会重置失败计数。

有关详细信息,请参阅 SERVICE_FAILURE_ACTIONSW结构

NonCrashFailures=价值
包含服务的失败操作标志设置。 此设置确定何时执行失败操作。 0x0的值指示 False,0x1值表示 True。

有关详细信息,请参阅 winsvc.h) SERVICE_FAILURE_ACTIONS_FLAG 结构 (。

行动=failure-action-typedelay
指定服务控制管理器可执行的操作。 多个操作条目构成失败操作的有序列表。 有关详细信息,请参阅 SC_ACTION结构

注意

FailureActions 语法只能用于 Win32 服务,可从 Windows 11 版本 22H2 开始使用。

指定驱动程序加载顺序

操作系统根据 service-install-sectionStartType 值加载驱动程序,如下所示:

  • 在启动阶段,操作系统将加载所有 0x0 (SERVICE_BOOT_START) 驱动程序。

  • 在系统启动阶段,操作系统首先加载 PnP 管理器查找设备节点 (开发节点 的所有 WDM 和 PnP 驱动程序,) (其 INF 文件为 SERVICE_SYSTEM_START指定0x01 还是 为SERVICE_DEMAND_START) 0x03 。 然后,操作系统将加载所有剩余的SERVICE_SYSTEM_START驱动程序。

  • 在自动启动阶段,操作系统将加载所有剩余的SERVICE_AUTO_START驱动程序。

有关 依赖项的详细信息,请参阅 指定驱动程序加载顺序

根据启动方案在启动时提升驱动程序的 StartType

根据启动方案,可以使用 BootFlags 注册表值来控制操作系统何时应将驱动程序的 StartType 值提升为0x0 (SERVICE_BOOT_START) 。 可以指定以下数值的一个或多个 (ORed) ,以十六进制值表示:

  • 0x1 (CM_SERVICE_NETWORK_BOOT_LOAD) 指示从网络启动时应提升驱动程序。

  • 0x2 (CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD) 指示从 VHD 启动时应提升驱动程序。

  • 0x4 (CM_SERVICE_USB_DISK_BOOT_LOAD) 指示从 USB 磁盘启动时,应将驱动程序提升为。

  • 0x8 (CM_SERVICE_SD_DISK_BOOT_LOAD) 指示从 SD 存储启动时应提升驱动程序。

  • 0x10 (CM_SERVICE_USB3_DISK_BOOT_LOAD) 指示从 USB 3.0 控制器上的磁盘启动时,应升级驱动程序。

  • 0x20 (CM_SERVICE_MEASURED_BOOT_LOAD) 指示在启用测量启动时启动时应提升驱动程序。

  • 0x40 (CM_SERVICE_VERIFIER_BOOT_LOAD) 指示在启用验证程序启动的情况下启动时,应提升驱动程序。

  • 0x80 (CM_SERVICE_WINPE_BOOT_LOAD) 指示启动到 WinPE 时应提升驱动程序。

service-install-section 具有以下常规形式:

[service-install-section]
AddReg=add-registry-section
...

[add-registry-section]
HKR,,BootFlags,0x00010003,0x14 ; CM_SERVICE_USB3_DISK_BOOT_LOAD|CM_SERVICE_USB_DISK_BOOT_LOAD

注册事件日志记录

AddService 指令还可以引用 INF 文件中其他地方的事件日志-install-section。 每个此类部分都有以下格式:

[event-log-install-section]
 
AddReg=add-registry-section[, add-registry-section]... 
[DelReg=del-registry-section[, del-registry-section]...] 
[BitReg=bit-registry-section[,bit-registry-section]...]
 ...

对于典型的设备/驱动程序 INF 文件, 事件日志-install-section 仅使用 AddReg 指令为驱动程序设置事件日志记录消息文件。 此事件日志记录 add-registry-section 具有以下常规形式:

[drivername_EventLog_AddReg]
HKR,,EventMessageFile,0x00020000,"path\IoLogMsg.dll;path\driver.sys"
HKR,,TypesSupported,0x00010001,7 

具体而言,该部分在为设备/驱动程序创建的注册表子项中添加两个值条目,如下所示:

  • 名为 EventMessageFile 的值项的类型 为 REG_EXPAND_SZ,由FLG_ADDREG_TYPE_EXPAND_SZ值 0x00020000指定。 其值括在双引号 (“) 中,将系统提供的 IoLogMsg.dll( 关联,但它可以将另一个日志记录 DLL) 与驱动程序二进制文件相关联。 通常,其中每个文件的路径都指定如下:

    %%SystemRoot%%\System32\IoLogMsg.dll

    %%SystemRoot%%\System32\drivers\driver.sys

  • 名为 TypesSupported 的值项的类型 为 REG_DWORD,由FLG_ADDREG_TYPE_DWORD值 0x00010001指定。

    对于驱动程序,此值应为 7。 此值等效于EVENTLOG_SUCCESS、EVENTLOG_ERROR_TYPE、EVENTLOG_WARNING_TYPE和EVENTLOG_INFORMATION_TYPE的按位 OR,而不设置EVENTLOG_AUDIT__XXX_位。

事件日志-install-section 还可以使用 DelReg 指令通过显式删除现有 EventMessageFileTypesSupported 值条目来删除以前安装的事件日志消息文件(如果驱动程序二进制文件被新安装的驱动程序取代)。 (另请参阅 INF DelService 指令.)

虽然 BitReg 指令在 INF 编写器定义的 事件日志安装-部分中也有效,但它几乎永远不会使用,因为设备驱动程序事件日志的标准值条目不是位掩码。

示例

此示例显示了 AddService 指令引用的服务安装和事件日志安装部分,如 DDInstall 示例前面所示。服务

[Example_DDInstall.Services]
AddService=ExampleFunctionDriver,0x00000002,function_ServiceInstallSection
AddService=ExampleUpperFilter,,filter_ServiceInstallSection

[function_ServiceInstallSection]
DisplayName    = %function_ServiceDesc%
ServiceType    = 1
StartType      = 3
ErrorControl   = 1
ServiceBinary  = %13%\ExampleFunctionDriver.sys

[function_EventLogInstallSection]
AddReg = function_EventLog_AddReg

[function_EventLog_AddReg]
;
; Following entry on single line in INF file. Enclosing quotation marks 
; prevent the semicolon from being interpreted as a comment.
;
HKR,,EventMessageFile,0x00020000,"%%SystemRoot%%\System32\IoLogMsg.dll;
       %13%\ExampleFunctionDriver.sys"
HKR,,TypesSupported,0x00010001,7

[filter_ServiceInstallSection]
DisplayName    = %filter_ServiceDesc%
ServiceType    = 1
StartType      = 3
ErrorControl   = 1
ServiceBinary  = %13%\ExampleUpperFilter.sys

[Strings] ; only immediately preceding %strkey% tokens shown here
%function_ServiceDesc%="Example function driver service"
%filter_ServiceDesc%="Example filter driver service"

另请参阅

AddReg

BitReg

CopyFiles

DDInstall。硬件

DDInstall。服务

DelReg

DelService

DestinationDirs

字符串