Bagikan melalui


Arahan INF AddService

Catatan

Arahan ini tidak digunakan dalam file INF yang menginstal perangkat yang tidak memerlukan driver apa pun, seperti modem atau monitor tampilan.

Direktif AddService digunakan dalam INF DDInstall. Bagian layanan atau bagian INF DefaultInstall.Services. Ini menentukan karakteristik layanan yang terkait dengan driver, seperti bagaimana dan kapan layanan dimuat, dan dependensi apa pun pada driver atau layanan warisan lain yang mendasar. Secara opsional, arahan ini juga menyiapkan layanan pengelogan peristiwa untuk perangkat.

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

Entri

ServiceName
Menentukan nama layanan yang akan diinstal. Nama harus cukup unik sehingga tidak mungkin bertentangan dengan layanan yang diinstal oleh file INF yang berbeda. Misalnya, nama layanan dapat menyertakan singkatan dari nama perusahaan Anda sebagai awalan atau akhiran. Nama ini tidak boleh dilokalkan. Ini harus sama terlepas dari bahasa lokal sistem.

Bendera
Menentukan satu atau beberapa (ORed) dari bendera yang ditentukan sistem berikut, yang didefinisikan dalam Setupapi.h, yang dinyatakan sebagai nilai heksadesimal:

0x00000001 (SPSVCINST_TAGTOFRONT)
Pindahkan tag layanan bernama ke bagian depan daftar pesanan grupnya, sehingga memastikan bahwa tag tersebut dimuat terlebih dahulu dalam grup tersebut (kecuali perangkat yang kemudian diinstal dengan spesifikasi INF ini menggantikannya). File INF yang menginstal perangkat dan perangkat PnP secara eksklusif dengan driver WDM tidak boleh mengatur bendera ini.

0x00000002 (SPSVCINST_ASSOCSERVICE)
Tetapkan layanan bernama sebagai driver fungsi PnP (atau driver warisan) untuk perangkat yang diinstal oleh file INF ini.

Untuk menunjukkan bahwa layanan adalah driver fungsi untuk perangkat, layanan harus menentukan bendera SPSVCINST_ASSOCSERVICE di arahan AddService . Untuk layanan seperti driver filter atau komponen driver lainnya, bendera tidak boleh digunakan.

Setiap INF driver perangkat harus memiliki tepat satu layanan terkait. INF tidak memerlukan layanan terkait jika merupakan Extension INF atau menggunakan arahan Include/Needs untuk mewarisi layanan terkait dari INF lain. Untuk perangkat yang tidak memerlukan driver fungsi, driver NULL dapat ditentukan sebagai layanan terkait sebagai berikut:

AddService = ,2

0x00000008 (SPSVCINST_NOCLOBBER_DISPLAYNAME)
Jangan timpa nama ramah layanan yang diberikan (opsional) jika layanan ini sudah ada di sistem.

0x00000010 (SPSVCINST_NOCLOBBER_STARTTYPE)
Jangan timpa jenis mulai layanan yang diberikan jika layanan bernama ini sudah ada dalam sistem.

0x00000020 (SPSVCINST_NOCLOBBER_ERRORCONTROL)
Jangan timpa nilai kontrol kesalahan layanan yang diberikan jika layanan bernama ini sudah ada dalam sistem.

0x00000040 (SPSVCINST_NOCLOBBER_LOADORDERGROUP)
Jangan timpa nilai load-order-group layanan yang diberikan jika layanan bernama ini sudah ada dalam sistem. File INF yang menginstal perangkat dan perangkat PnP secara eksklusif dengan driver WDM tidak boleh mengatur bendera ini.

0x00000080 (SPSVCINST_NOCLOBBER_DEPENDENCIES)
Jangan timpa daftar dependensi layanan yang diberikan jika layanan bernama ini sudah ada dalam sistem. File INF yang menginstal perangkat dan perangkat PnP secara eksklusif dengan driver WDM tidak boleh mengatur bendera ini.

0x00000100 (SPSVCINST_NOCLOBBER_DESCRIPTION)
Jangan timpa deskripsi layanan yang diberikan (opsional) jika layanan ini sudah ada dalam sistem.

0x00000400 (SPSVCINST_CLOBBER_SECURITY) (Windows XP dan versi Windows yang lebih baru)
Timpa pengaturan keamanan untuk layanan jika layanan ini sudah ada di sistem.

0x00000800 (SPSVCSINST_STARTSERVICE) (Windows Vista dan versi Windows yang lebih baru)
Mulai layanan setelah layanan diinstal. Bendera ini tidak dapat digunakan untuk memulai layanan yang mengimplementasikan driver fungsi Plug and Play (PnP) atau driver filter untuk perangkat. Jika tidak, bendera ini dapat digunakan untuk memulai layanan mode pengguna atau mode kernel yang dikelola oleh Service Control Manager (SCM).

0x00001000 (SPSVCINST_NOCLOBBER_REQUIREDPRIVILEGES) (Windows 7 dan versi Windows yang lebih baru)
Jangan timpa hak istimewa untuk layanan yang diberikan jika layanan ini sudah ada dalam sistem.

0x00002000 (SPSVCINST_NOCLOBBER_TRIGGERS) (versi Windows Windows 10 2004 dan yang lebih baru)
Jangan timpa pemicu untuk layanan yang diberikan jika layanan ini sudah ada di sistem dan memiliki pemicu yang ada. Lihat direktif AddTrigger di bawah ini untuk informasi selengkapnya tentang pemicu.

0x00004000 (SPSVCINST_NOCLOBBER_SERVICESIDTYPE) (Windows 10 Versi 2004 dan versi Windows yang lebih baru)
Jangan timpa info SID untuk layanan yang diberikan jika layanan ini sudah ada di sistem dan memiliki info SID yang ada. Lihat arahan ServiceSidType di bawah ini untuk informasi selengkapnya.

0x00008000 (SPSVCINST_NOCLOBBER_DELAYEDAUTOSTART) (versi Windows Windows 10 2004 dan yang lebih baru)
Jangan timpa nilai mulai otomatis yang tertunda untuk layanan yang diberikan jika layanan ini sudah ada di sistem dan memiliki nilai yang ada. Lihat direktif DelayedAutoStart di bawah ini untuk informasi selengkapnya.

0x00020000 (SPSVCINST_NOCLOBBER_FAILUREACTIONS) (Windows 11 versi 22H2 dan versi Windows yang lebih baru)
Jangan timpa tindakan kegagalan untuk layanan yang diberikan jika layanan ini sudah ada di sistem dan memiliki tindakan kegagalan yang ada. Lihat direktif FailureActions di bawah ini untuk informasi selengkapnya tentang tindakan kegagalan.

0x00040000 (SPSVCINST_NOCLOBBER_BOOTFLAGS) (Windows 11 build 25381 dan versi Windows yang lebih baru) Jangan timpa nilai bendera boot untuk layanan yang diberikan jika layanan ini sudah ada di sistem dan memiliki nilai yang ada. Lihat direktif BootFlags di bawah ini untuk informasi lebih lanjut.

service-install-section
Mereferensikan bagian yang ditentukan penulis INF yang berisi informasi untuk menginstal layanan bernama untuk perangkat ini (atau perangkat). Untuk informasi selengkapnya, lihat bagian Keterangan berikut ini.

event-log-install-section
Secara opsional mereferensikan bagian yang ditentukan inf-writer di mana layanan pengelogan peristiwa untuk perangkat ini (atau perangkat) disiapkan.

EventLogType
Secara opsional menentukan salah satu Sistem, Keamanan, atau Aplikasi. Jika dihilangkan, ini default ke Sistem, yang hampir selalu merupakan nilai yang sesuai untuk penginstalan driver perangkat.

Misalnya, INF akan menentukan Keamanan hanya jika driver yang akan diinstal memberikan dukungan keamanannya sendiri.

EventName
Secara opsional menentukan nama yang akan digunakan untuk log peristiwa. Jika dihilangkan, ini default ke ServiceName yang diberikan.

Keterangan

Ekstensi yang ditentukan sistem dan tidak peka huruf besar/kecil dapat dimasukkan ke dalam DDInstall. Bagian layanan yang berisi arahan AddService dalam sistem operasi silang dan/atau file INF lintas platform untuk menentukan penginstalan khusus platform atau khusus OS.

Setiap nama bagian yang dibuat penulis INF harus unik dalam file INF dan harus mengikuti aturan umum untuk menentukan nama bagian. Untuk informasi selengkapnya tentang aturan ini, lihat Aturan Sintaks Umum untuk File INF.

Direktif AddService harus mereferensikan bagian-instal-layanan bernama di tempat lain dalam file INF. Setiap bagian tersebut memiliki formulir berikut:

[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)

Setiap service-install-section harus memiliki setidaknya entri ServiceType, StartType, ErrorControl, dan ServiceBinary seperti yang ditunjukkan di sini. Namun, entri yang tersisa bersifat opsional.

Service-Install Entri dan Nilai Bagian

Displayname=Nama
Menentukan nama yang mudah diingat untuk layanan/driver, biasanya, untuk kemudahan pelokalan, yang dinyatakan sebagai token %strkey% yang ditentukan dalam bagian String dari file INF.

Deskripsi=description-string
Secara opsional menentukan string yang menjelaskan layanan, biasanya dinyatakan sebagai token %strkey% yang ditentukan dalam bagian String dari file INF.

String ini memberi pengguna informasi lebih lanjut tentang layanan daripada DisplayName. Misalnya, DisplayName mungkin sesuatu seperti "Klien DHCP" dan Deskripsi mungkin sesuatu seperti "Mengelola konfigurasi jaringan dengan mendaftarkan dan memperbarui alamat IP dan nama DNS".

Deskripsi-string harus cukup lama untuk menjadi deskriptif tetapi tidak selama menjadi canggung. Jika string deskripsi berisi token %strkey%, setiap token dapat mewakili maksimal 511 karakter. String total, setelah substitusi token string apa pun, tidak boleh melebihi 1024 karakter.

ServiceType=jenis kode
Kode jenis untuk driver perangkat mode kernel harus diatur ke 0x00000001 (SERVICE_KERNEL_DRIVER).

Kode jenis untuk layanan Microsoft Win32 yang diinstal untuk perangkat harus diatur ke 0x00000010 (SERVICE_WIN32_OWN_PROCESS) atau 0x00000020 (SERVICE_WIN32_SHARE_PROCESS). Jika layanan Win32 dapat berinteraksi dengan desktop, nilai jenis kode harus dikombinasikan dengan 0x00000100 (SERVICE_INTERACTIVE_PROCESS).

Kode jenis untuk driver jaringan tingkat tertinggi, seperti pengalih, atau driver sistem file, harus diatur ke 0x00000002 (SERVICE_FILE_SYSTEM_DRIVER).

Konstanta SERVICE_xxxx didefinisikan dalam Wdm.h dan Ntddk.h.

StartType=kode awal
Menentukan kapan harus memulai driver sebagai salah satu nilai numerik berikut, dinyatakan baik dalam desimal atau, seperti yang ditunjukkan dalam daftar berikut, dalam notasi heksadesimal.

0x0 (SERVICE_BOOT_START)
Menunjukkan driver yang dimulai oleh pemuat sistem operasi.

Nilai ini harus digunakan untuk driver perangkat yang diperlukan untuk memuat sistem operasi.

0x1 (SERVICE_SYSTEM_START)
Menunjukkan driver dimulai selama inisialisasi sistem operasi.

Nilai ini harus digunakan oleh driver PnP yang melakukan deteksi perangkat selama inisialisasi tetapi tidak diperlukan untuk memuat sistem.

Misalnya, driver PnP yang juga dapat mendeteksi perangkat warisan harus menentukan nilai ini dalam INF-nya sehingga rutinitas DriverEntry-nya dipanggil untuk menemukan perangkat warisan, bahkan jika perangkat tersebut tidak dapat dijumlahkan oleh manajer PnP.

0x2 (SERVICE_AUTO_START)
Menunjukkan layanan yang dimulai oleh manajer kontrol layanan selama startup sistem.

Nilai ini tidak boleh digunakan dalam file INF untuk driver perangkat WDM atau PnP.

0x3 (SERVICE_DEMAND_START)
Menunjukkan layanan dimulai sesuai permintaan, baik oleh manajer PnP ketika perangkat yang sesuai dijumlahkan atau mungkin oleh manajer kontrol layanan sebagai respons terhadap permintaan pengguna eksplisit untuk perangkat non-PnP.

Nilai ini harus digunakan dalam file INF untuk semua driver WDM perangkat yang tidak diperlukan untuk memuat sistem dan untuk semua driver perangkat PnP yang tidak diperlukan untuk memuat sistem atau terlibat dalam deteksi perangkat.

0x4 (SERVICE_DISABLED)
Menunjukkan layanan yang tidak dapat dimulai.

Nilai ini dapat digunakan untuk menonaktifkan sementara layanan driver untuk perangkat. Namun, perangkat/driver tidak dapat diinstal jika nilai ini ditentukan di bagian penginstalan layanan dari file INF-nya.

Untuk informasi selengkapnya tentang StartType, lihat Menentukan Urutan Beban Driver.

ErrorControl=tingkat kontrol kesalahan
Menentukan tingkat kontrol kesalahan sebagai salah satu nilai numerik berikut, yang dinyatakan baik dalam desimal atau, seperti yang diperlihatkan dalam daftar berikut, dalam notasi heksadesimal.

0x0 (SERVICE_ERROR_IGNORE)
Jika driver gagal memuat atau menginisialisasi, lanjutkan dengan startup sistem dan jangan tampilkan peringatan kepada pengguna.

0x1 (SERVICE_ERROR_NORMAL)
Jika driver gagal memuat atau menginisialisasi perangkatnya, startup sistem harus dilanjutkan tetapi menampilkan peringatan kepada pengguna.

0x2 (SERVICE_ERROR_SEVERE)
Jika driver gagal dimuat, startup sistem harus beralih ke set kontrol LastKnownGood registri dan melanjutkan startup sistem, bahkan jika driver lagi menunjukkan kesalahan pemuatan atau inisialisasi perangkat/driver.

0x3 (SERVICE_ERROR_CRITICAL)
Jika driver gagal memuat dan startup sistem tidak menggunakan set kontrol LastKnownGood registri, beralihlah ke LastKnownGood dan coba lagi.

Jika startup masih gagal saat menggunakan LastKnownGood, jalankan rutinitas pemeriksaan bug. (Hanya perangkat/driver yang diperlukan sistem untuk boot menentukan nilai ini dalam file INF mereka.)

ServiceBinary=jalur ke layanan
Menentukan jalur biner untuk layanan, yang dinyatakan sebagai %dirid%\filename.

Nomor dirid adalah pengidentifikasi direktori kustom atau salah satu pengidentifikasi direktori yang ditentukan sistem yang dijelaskan dalam Menggunakan Dirids. Nama file yang diberikan menentukan file yang sudah ditransfer (lihat Petunjuk CopyFiles INF) dari media distribusi sumber ke direktori tersebut di komputer target.

StartName=service-start-name Entri opsional ini menentukan nama awal yang harus dikaitkan dengan layanan. Jika type-code menentukan 1 (SERVICE_KERNEL_DRIVER) atau 2 (SERVICE_FILE_SYSTEM_DRIVER), nama ini adalah nama objek driver yang digunakan manajer I/O untuk memuat driver. Jika type-code berisi bit 0x00000010 (SERVICE_WIN32_OWN_PROCESS) atau 0x00000020 (SERVICE_WIN32_SHARE_PROCESS), nama ini dapat menjadi salah satu nilai yang valid untuk parameter lpServiceStartName dari API CreateService .

AddReg=add-registry-section[,add-registry-section]...
Mereferensikan satu atau beberapa inf-writer-defined add-registry-sections di mana setiap informasi registri yang berkaitan dengan layanan yang baru diinstal disiapkan. Untuk informasi selengkapnya, lihat Direktif AddReg INF.

DelReg=del-registry-section[,del-registry-section]...
Mereferensikan satu atau beberapa inf-writer-defined del-registry-sections di mana informasi registri terkait untuk layanan yang sudah diinstal dihapus. Untuk informasi selengkapnya, lihat Direktif INF DelReg.

Arahan ini hampir tidak pernah digunakan dalam bagian penginstalan layanan, tetapi mungkin digunakan dalam INF yang "memperbarui" registri untuk penginstalan sebelumnya dari layanan perangkat/driver yang sama.

BitReg=bit-registry-section[,bit-registry-section]...
Valid di bagian penginstalan layanan tetapi hampir tidak pernah digunakan.

LoadOrderGroup=load-order-group-name
Entri opsional ini mengidentifikasi grup urutan beban di mana driver ini adalah anggota. Ini bisa menjadi salah satu grup urutan beban "standar", seperti kelas SCSI atau NDIS.

Secara umum, entri ini tidak perlu untuk perangkat dengan driver WDM atau untuk perangkat PnP khusus, kecuali ada dependensi warisan pada grup tersebut. Namun, entri ini dapat berguna jika deteksi perangkat didukung dengan memuat sekelompok driver dalam urutan tertentu.

Untuk informasi selengkapnya tentang LoadOrderGroup, lihat Menentukan Urutan Beban Driver.

Dependensi=depend-on-item-name[,depend-on-item-name]... Setiap item depend-on-item-name dalam daftar dependensi menentukan nama layanan atau grup urutan beban tempat perangkat/driver bergantung.

Jika depend-on-item-name menentukan layanan, layanan yang harus berjalan sebelum driver ini dimulai. Misalnya, INF untuk layanan cetak TCP/IP Win32 yang disediakan sistem tergantung pada dukungan tumpukan transportasi TCP/IP yang mendasar (mode kernel). Akibatnya, INF untuk layanan cetak TCP/IP menentukan entri ini sebagai Dependensi=TCPIP.

Depend-on-item-name dapat menentukan grup pesanan beban tempat perangkat/driver ini bergantung. Driver seperti itu dimulai hanya jika setidaknya satu anggota grup yang ditentukan dimulai. Mendahului nama grup dengan tanda plus (+). Misalnya, SISTEM RAS services INF mungkin memiliki entri seperti Dependensi = +NetBIOSGroup,RpcSS yang mencantumkan grup pesanan beban dan layanan.

Security="security-descriptor-string"
Menentukan deskriptor keamanan, untuk diterapkan ke layanan. Deskriptor keamanan ini menentukan izin yang diperlukan untuk melakukan operasi seperti memulai, menghentikan, dan mengonfigurasi layanan. Nilai string deskriptor keamanan adalah string dengan token untuk menunjukkan komponen keamanan DACL (D:).

Untuk informasi tentang string deskriptor keamanan, lihat Bahasa Definisi Deskriptor Keamanan (Windows). Untuk informasi tentang format string deskriptor keamanan, lihat Bahasa Definisi Deskriptor Keamanan (Windows).

Untuk informasi selengkapnya tentang cara menentukan deskriptor keamanan, lihat Membuat Penginstalan Perangkat Aman.

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

Catatan

Nilai ini hanya dapat digunakan untuk Layanan Win32 dan hanya tersedia di Windows 7 ke atas.

Setiap nama hak istimewa dalam daftar adalah nama hak istimewa yang diperlukan layanan. Lihat Privilege Constants (Windows) untuk daftar nama hak istimewa. Untuk setiap nama hak istimewa, hanya nama teks yang diperlukan. Misalnya, nama hak istimewa harus ditulis sebagai "SeAuditPrivilege" tetapi tidak SE_AUDIT_NAME.

Untuk informasi selengkapnya tentang hak istimewa yang diperlukan layanan, lihat SERVICE_REQUIRED_PRIVILEGES_INFO (Windows).

ServiceSidType=Nilai

Catatan

Nilai ini hanya dapat digunakan untuk Layanan Win32 dan hanya tersedia dengan Windows 10 Versi 2004 ke atas.

Entri ini dapat menggunakan nilai yang valid seperti yang dijelaskan dalam SERVICE_SID_INFO.

DelayedAutoStart=Nilai

Catatan

Nilai ini hanya dapat digunakan untuk Layanan Win32 dan hanya tersedia dengan Windows 10 2004 ke atas.

Berisi pengaturan mulai otomatis layanan mulai otomatis yang tertunda.

Jika anggota ini 0x0, layanan dimulai selama boot sistem. Jika tidak, layanan dimulai setelah layanan mulai otomatis lainnya dimulai ditambah penundaan singkat.

Pengaturan ini diabaikan kecuali layanan adalah layanan mulai otomatis.

Untuk informasi selengkapnya, lihat halaman ini.

TambahkanTrigger=service-trigger-install-section [, service-trigger-install-section, ...]
Menentukan peristiwa pemicu yang akan didaftarkan untuk layanan Win32 sehingga layanan dapat dimulai atau dihentikan saat peristiwa pemicu terjadi. Untuk informasi selengkapnya tentang peristiwa pemicu layanan, lihat Peristiwa Pemicu Layanan.

Setiap bagian service-trigger-install-yang direferensikan oleh direktif AddTrigger memiliki format berikut:

[service-trigger-install-section]

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

BootFlags=Nilai

Catatan

Nilai ini hanya dapat digunakan dengan layanan driver mode kernel dan hanya tersedia dengan Windows 11 build 25381 ke atas.

Secara opsional menentukan kapan sistem operasi harus mempromosikan nilai StartType driver ke 0x0 (SERVICE_BOOT_START). Anda dapat menentukan satu atau beberapa (ORed) dari nilai numerik berikut, yang dinyatakan sebagai nilai heksadesimal.

  • 0x1 (CM_SERVICE_NETWORK_BOOT_LOAD) Menunjukkan driver harus dipromosikan jika booting dari jaringan.

  • 0x2 (CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD) Menunjukkan driver harus dipromosikan jika booting dari VHD.

  • 0x4 (CM_SERVICE_USB_DISK_BOOT_LOAD)
    Menunjukkan driver harus dipromosikan jika booting dari disk USB.

  • 0x8 (CM_SERVICE_SD_DISK_BOOT_LOAD)
    Menunjukkan driver harus dipromosikan jika booting dari penyimpanan SD.

  • 0x10 (CM_SERVICE_USB3_DISK_BOOT_LOAD)
    Menunjukkan driver harus dipromosikan jika booting dari disk pada pengontrol USB 3.0.

  • 0x20 (CM_SERVICE_MEASURED_BOOT_LOAD) Menunjukkan driver harus dipromosikan jika booting saat boot terukur diaktifkan.

  • 0x40 (CM_SERVICE_VERIFIER_BOOT_LOAD)
    Menunjukkan driver harus dipromosikan jika booting dengan boot pemverifikasi diaktifkan.

  • 0x80 (CM_SERVICE_WINPE_BOOT_LOAD)
    Menunjukkan driver harus dipromosikan jika booting ke WinPE.

Entri dan Nilai Service-Trigger-Install-Section

TriggerType=jenis pemicu
Menentukan jenis peristiwa pemicu layanan dalam salah satu nilai numerik berikut, yang dinyatakan baik dalam desimal atau, seperti yang ditunjukkan dalam daftar berikut, notasi heksadesimal:

0x1 (SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL)
Menunjukkan bahwa peristiwa dipicu ketika perangkat dari kelas antarmuka perangkat yang ditentukan tiba atau ada saat sistem dimulai.

Untuk informasi selengkapnya, lihat struktur SERVICE_TRIGGER.

Tindakan=jenis tindakan
Menentukan tindakan yang akan diambil ketika peristiwa pemicu yang ditentukan terjadi.

0x1 (SERVICE_TRIGGER_ACTION_SERVICE_START)
Mulai layanan saat peristiwa pemicu yang ditentukan terjadi.

0x2 (SERVICE_TRIGGER_ACTION_SERVICE_STOP)
Hentikan layanan saat peristiwa pemicu yang ditentukan terjadi.

Untuk informasi selengkapnya, lihat struktur SERVICE_TRIGGER.

Subtipe=trigger-subtype
Menentukan GUID yang mengidentifikasi subjenis peristiwa pemicu. Nilai tergantung pada nilai TriggerType.

Saat TriggerType0x1 (SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL), SubType menentukan GUID yang mengidentifikasi kelas antarmuka perangkat.

Untuk informasi selengkapnya, lihat struktur SERVICE_TRIGGER.

DataItem=jenis data, data
Secara opsional menentukan data khusus pemicu untuk peristiwa pemicu layanan.

Saat TriggerType0x1 (SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL), DataItem opsional dapat ditentukan dengan jenis data 0x2 (SERVICE_TRIGGER_DATA_TYPE_STRING) untuk mencakup kelas antarmuka perangkat ke ID perangkat keras tertentu atau ID yang kompatibel.

Untuk informasi selengkapnya, lihat struktur SERVICE_TRIGGER_SPECIFIC_DATA_ITEM

Praktik terbaik untuk menggunakan direktif AddTrigger adalah memicu memulai layanan pada kedatangan antarmuka perangkat. Untuk informasi selengkapnya, lihat Layanan Win32 Berinteraksi dengan Perangkat.

Catatan

Sintaks AddTrigger hanya tersedia di Windows 10 Versi 2004 dan teruskan.

FailureActions=service-failure-actions-install-section
Secara opsional menentukan tindakan yang harus diambil pengontrol layanan ketika layanan gagal.

Manajer kontrol layanan menghitung berapa kali setiap layanan gagal sejak sistem di-boot. Jumlah diatur ulang ke 0 jika layanan belum gagal untuk detik periode reset. Ketika layanan gagal untuk ke-N kalinya, pengontrol layanan melakukan tindakan yang ditentukan dalam elemen N dari daftar Tindakan. Jika N lebih besar dari jumlah Tindakan, pengontrol layanan mengulangi tindakan terakhir dalam daftar.

Bagian service-failure-actions-install-section yang direferensikan oleh direktif FailureActions memiliki format berikut:

[service-failure-actions-install-section]

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

Entri dan Nilai Service-Failure-Actions-Install-Section

ResetPeriod=periode reset
Menentukan waktu setelah itu untuk mengatur ulang jumlah kegagalan ke nol jika tidak ada kegagalan, dalam hitungan detik. Jumlah kegagalan tidak diatur ulang secara default saat periode reset tidak ditentukan.

Untuk informasi selengkapnya, lihat struktur SERVICE_FAILURE_ACTIONSW.

NonCrashFailures=Nilai
Berisi pengaturan bendera tindakan kegagalan layanan. Pengaturan menentukan kapan tindakan kegagalan akan dijalankan. Nilai 0x0 menunjukkan False dan nilai 0x1 menunjukkan True.

Untuk informasi selengkapnya, lihat struktur SERVICE_FAILURE_ACTIONS_FLAG (winsvc.h).

Tindakan=failure-action-type,delay
Menentukan tindakan yang dapat dilakukan manajer kontrol layanan. Beberapa entri Tindakan membentuk daftar tindakan kegagalan yang diurutkan. Untuk informasi selengkapnya, lihat struktur SC_ACTION.

Catatan

Sintaks failureActions hanya dapat digunakan untuk Layanan Win32 dan tersedia mulai dari Windows 11, versi 22H2.

Menentukan Urutan Beban Pengandar

Sistem operasi memuat driver sesuai dengan nilai StartTypebagian-instal-layanan, sebagai berikut:

  • Selama fase mulai boot, sistem operasi memuat semua driver 0x0 (SERVICE_BOOT_START).

  • Selama fase mulai sistem, sistem operasi terlebih dahulu memuat semua driver WDM dan PnP tempat manajer PnP menemukan simpul perangkat (devnodes) (apakah file INF mereka menentukan 0x01 untuk SERVICE_SYSTEM_START atau 0x03 untuk SERVICE_DEMAND_START). Kemudian sistem operasi memuat semua driver SERVICE_SYSTEM_START yang tersisa.

  • Selama fase mulai otomatis, sistem operasi memuat semua driver SERVICE_AUTO_START yang tersisa.

Untuk informasi selengkapnya tentang Dependensi, lihat Menentukan Urutan Beban Driver.

Mempromosikan StartType Driver di Boot Tergantung pada Skenario Boot

Tergantung pada skenario boot, Anda dapat menggunakan nilai registri BootFlags untuk mengontrol kapan sistem operasi harus mempromosikan nilai StartType driver ke 0x0 (SERVICE_BOOT_START). Anda dapat menentukan satu atau beberapa (ORed) dari nilai numerik berikut, yang dinyatakan sebagai nilai heksadesimal:

  • 0x1 (CM_SERVICE_NETWORK_BOOT_LOAD) menunjukkan driver harus dipromosikan jika booting dari jaringan.

  • 0x2 (CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD) menunjukkan driver harus dipromosikan jika booting dari VHD.

  • 0x4 (CM_SERVICE_USB_DISK_BOOT_LOAD) menunjukkan driver harus dipromosikan jika booting dari disk USB.

  • 0x8 (CM_SERVICE_SD_DISK_BOOT_LOAD) menunjukkan driver harus dipromosikan jika booting dari penyimpanan SD.

  • 0x10 (CM_SERVICE_USB3_DISK_BOOT_LOAD) menunjukkan driver harus dipromosikan jika booting dari disk pada pengontrol USB 3.0.

  • 0x20 (CM_SERVICE_MEASURED_BOOT_LOAD) menunjukkan driver harus dipromosikan jika booting saat boot terukur diaktifkan.

  • 0x40 (CM_SERVICE_VERIFIER_BOOT_LOAD) menunjukkan driver harus dipromosikan jika booting dengan boot verifier diaktifkan.

  • 0x80 (CM_SERVICE_WINPE_BOOT_LOAD) menunjukkan driver harus dipromosikan jika booting ke WinPE.

Bagian penginstalan layanan memiliki formulir umum berikut:

[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

Catatan

Sintaks ini harus digunakan hanya dalam versi Windows dan membangun yang lebih lama dari Windows 11 build 25381; untuk Windows 11 build 25381 dan yang lebih baru, gunakan arahan BootFlags.

Mendaftar untuk Pengelogan Peristiwa

Arahan AddService juga dapat mereferensikan bagian event-log-install-di tempat lain dalam file INF. Setiap bagian tersebut memiliki formulir berikut:

[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]...]
 ...

Untuk file INF perangkat/driver umum, bagian event-log-install-section hanya menggunakan direktif AddReg untuk menyiapkan file pesan pengelogan peristiwa untuk driver. Bagian add-registry pengelogan kejadian ini memiliki formulir umum berikut:

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

Secara khusus, bagian menambahkan dua entri nilai dalam subkunci registri yang dibuat untuk perangkat/driver, sebagai berikut:

  • Entri nilai bernama EventMessageFile berjenis REG_EXPAND_SZ, seperti yang ditentukan oleh nilai FLG_ADDREG_TYPE_EXPAND_SZ 0x00020000. Nilainya, diapit dalam tanda kutip ganda ("), mengaitkan IoLogMsg.dll yang disediakan sistem (tetapi dapat mengaitkan DLL pengelogan lain) dengan file biner driver. Biasanya, jalur ke masing-masing file ini ditentukan sebagai berikut:

    %%SystemRoot%%\System32\IoLogMsg.dll

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

  • Entri nilai bernama TypeSupported berjenis REG_DWORD, seperti yang ditentukan oleh nilai FLG_ADDREG_TYPE_DWORD 0x00010001.

    Untuk driver, nilai ini harus 7. Nilai ini setara dengan bitwise OR dari EVENTLOG_SUCCESS, EVENTLOG_ERROR_TYPE, EVENTLOG_WARNING_TYPE, dan EVENTLOG_INFORMATION_TYPE, tanpa mengatur bit EVENTLOG_AUDIT__XXX_.

Bagian event-log-install-section juga dapat menggunakan direktif DelReg untuk menghapus file pesan log peristiwa yang diinstal sebelumnya, dengan secara eksplisit menghapus entri nilai EventMessageFile dan TypeSupported yang ada, jika biner driver digantikan oleh driver yang baru diinstal. (Lihat juga Inf DelService Directive.)

Meskipun direktif BitReg juga valid dalambagian inf-writer-defined event-log-install-, itu hampir tidak pernah digunakan, karena entri nilai standar untuk pengelogan peristiwa driver perangkat bukan bitmask.

Contoh

Contoh ini menunjukkan bagian penginstalan layanan dan penginstalan log peristiwa yang direferensikan oleh direktif AddService seperti yang sudah ditunjukkan sebelumnya dalam contoh untuk DDInstall. Layanan.

[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"

Lihat juga