共用方式為


INF AddService 指示詞

注意

此指示詞不會用於安裝不需要任何驅動程式的 INF 檔案中,例如數據機或顯示器監視器。

AddService 指示詞會在 INF DDInstall 中使用。Services 區段INF DefaultInstall.Services 區段。 它會指定與驅動程式相關聯的服務特性,例如載入服務的方式和時機,以及其他基礎舊版驅動程式或服務的任何相依性。 選擇性地,這個指示詞也會設定裝置的事件記錄服務。

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

項目

ServiceName
指定要安裝的服務名稱。 名稱應該是唯一的,不太可能與不同 INF 檔案所安裝的服務發生衝突。 例如,服務名稱可能包含您公司名稱的簡短縮寫作為前置詞或後綴。 此名稱不得當地語系化。 不論系統的本機語言為何,它都必須相同。

flags
指定下列系統定義旗標的一或多個 (ORed) ,其定義於 Setupapi.h 中,以十六進位值表示:

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)
如果這個具名服務已存在於系統中,請勿覆寫給定服務的載入順序群組值。 使用 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 指示詞。

0x00040000 (SPSVCINST_NOCLOBBER_BOOTFLAGS) (Windows 11 組建 25381 和更新版本的 Windows) 如果此服務已存在於系統中且具有現有值,請勿覆寫指定服務的開機旗標值。 如需詳細資訊,請參閱下面的 BootFlags 指示詞。

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=service-start-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)
[BootFlags=value] (Windows 11 build 25381 and later versions of Windows)

每個 service-install-section 至少必須有 ServiceType、StartTypeErrorControlServiceBinary 專案,如下所示。 不過,其餘專案是選擇性專案。

Service-Install 區段專案和值

DisplayName=名字
指定服務/驅動程式的易記名稱,通常為了方便當地語系化,以 INF 檔案的 Strings 區段中定義的 %strkey% 令牌表示。

描述=description-string
選擇性地指定描述服務的字串,通常以 INF 檔案之 Strings 區段中定義的 %strkey% 令牌表示。

此字串會提供使用者有關服務的詳細資訊,而不是 DisplayName。 例如, DisplayName 可能是類似 「DHCP Client」 的內容,而描述可能是「藉由註冊和更新 IP 位址和 DNS 名稱來管理網路設定」。

description-string 應該夠長,足以描述性,但不能太久。 如果 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 裝置的明確使用者需求而啟動。

此值應該用於不需要載入系統的所有裝置 WDM 驅動程式的 INF 檔案中,以及不需要載入系統或參與裝置偵測的所有 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 時啟動仍然失敗,請執行錯誤檢查例程。 (只有 系統開機所需的裝置/驅動程式,才能在其 INF 檔案中指定此值。)

ServiceBinary=path-to-service
指定服務二進位檔的路徑,以 %dirid%\filename 表示。

dirid 編號是自定義目錄標識符,或是使用 Dirids 中所述的其中一個系統定義目錄識別碼。 指定的 檔名 指定已傳輸的檔案 (查看從來源發佈媒體到目標計算機上的 INF CopyFiles 指示 詞) 。

StartName=service-start-name 這個選擇性專案會指定應該與服務相關聯的啟動名稱。 如果 type-code 指定 1 (SERVICE_KERNEL_DRIVER) 或 2 (SERVICE_FILE_SYSTEM_DRIVER) ,則此名稱是 I/O 管理員用來載入驅動程式的驅動程式物件名稱。 如果 type-code 包含位0x00000010 (SERVICE_WIN32_OWN_PROCESS) 或0x00000020 (SERVICE_WIN32_SHARE_PROCESS) ,這個名稱可以是 CreateService API 之 lpServiceStartName 參數的有效值之一。

AddReg=add-registry-section[add-registry-section]...
參考一或多個 INF-writer-defined add-registry-sections, 其中已設定與新安裝服務相關的任何登錄資訊。 如需詳細資訊,請參閱 INF AddReg 指示詞

DelReg=del-registry-section[del-registry-section]...
參考一或多個 INF-writer-defined del-registry-sections, 其中已安裝之服務的相關登錄資訊會被移除。 如需詳細資訊,請參閱 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]...相依性清單中的每個 相依專案名稱 專案都會指定裝置/驅動程式相依的服務或載入順序群組名稱。

如果 depend-on-item-name 指定服務,則必須在啟動此驅動程式之前執行的服務。 例如,系統提供的 Win32 TCP/IP 列印服務的 INF 取決於基礎 (核心模式的支援,) TCP/IP 傳輸堆疊。 因此,TCP/IP 列印服務的 INF 會將這個專案指定為 Dependencies=TCPIP

depend-on-item-name 可以指定此裝置/驅動程式相依的載入順序群組。 只有在至少啟動一個指定群組的成員時,才會啟動這類驅動程式。 在組名前面加上加號 (+) 。 例如,系統 RAS 服務 INF 可能有一個專案,例如 相依性 = +NetBIOSGroup,RpcSS ,其中同時列出載入順序群組和服務。

Security=“security-descriptor-string
指定要套用至服務的安全性描述項。 此安全性描述項會指定執行這類作業所需的許可權,例如啟動、停止及設定服務。 security-descriptor-string 值是具有標記的字串,用來指出 DACL (D:) 安全性元件。

如需安全性描述項字串的相關信息,請參閱 安全性描述項定義語言 (Windows) 。 如需安全性描述元字串格式的詳細資訊,請參閱安全性描述元定義語言 (Windows) 。

如需如何指定安全描述元的詳細資訊,請參閱 建立安全裝置安裝

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

注意

這個值只能用於 Win32 服務 ,而且僅適用於 Windows 7 和更新版本。

清單中的每個 許可權名稱 都是服務所需的許可權名稱。 如需許可權名稱的清單,請參閱 Privilege Constants (Windows) 。 針對每個許可權名稱,只需要文字名稱。 例如,許可權名稱應寫入為 “SeAuditPrivilege”,但不應SE_AUDIT_NAME。

如需服務所需權限的詳細資訊,請參閱 SERVICE_REQUIRED_PRIVILEGES_INFO (Windows)

ServiceSidType=價值

注意

這個值只能用於 Win32 Services,而且僅適用於 Windows 10 版本 2004 和更新版本。

此專案可以使用任何有效的值 ,如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]
...

BootFlags=價值

注意

這個值只能與內核模式驅動程式服務搭配使用,而且僅適用於 Windows 11 組建 25381 和更新版本。

選擇性地指定操作系統何時應將驅動程式的 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-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) 時,可以使用資料類型指定選擇性的 DataItem 0x2 (SERVICE_TRIGGER_DATA_TYPE_STRING) ,將裝置介面類別限定為特定硬體識別碼或相容標識碼。

如需詳細資訊,請參閱 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。

如需詳細資訊,請參閱 SERVICE_FAILURE_ACTIONS_FLAG 結構 (winsvc.h)

行動=failure-action-type,delay
指定服務控制管理員可執行的動作。 多個動作專案會形成已排序的失敗動作清單。 如需詳細資訊,請參閱 SC_ACTION 結構

注意

FailureActions 語法只能用於 Win32 Services,而且可從 22H2 版 Windows 11 開始使用。

指定驅動程式載入順序

操作系統會根據 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

注意

此語法應該只用於 Windows 版本,且組建早於 Windows 11 組建 25381;針對 Windows 11 組建 25381 和更新版本,請使用 BootFlags 指示詞。

註冊事件記錄

AddService 指示詞也可以參考 INF 檔案中其他地方的 event-log-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 檔案, event-log-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_位。

event-log-install-section 也可以使用 DelReg 指示詞來移除先前安裝的事件記錄檔訊息檔,方法是明確刪除現有 EventMessageFileTypesSupported 值專案,如果驅動程式二進位檔被新安裝的驅動程式取代。 (另請參閱 INF DelService 指示詞.)

雖然 BitReg 指示詞在 INF-writer-defined event-log-install-區段中也有效,但幾乎永遠不會使用,因為設備驅動器事件記錄的標準值專案不是位掩碼。

範例

這個範例會顯示 AddService 指示詞所參考的 service-install 和 event-log-install 區段,如 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"

另請參閱