Bagikan melalui


Menentukan Arahan WDF dalam File INF

File INF yang menginstal driver WDF harus berisi dua bagian khusus WDF:

  • Bagian [DDInstall.wdf] untuk setiap bagian [DDInstall]
  • [wdf-service-install], dengan nama bagian yang ditentukan dalam direktif KmdfService atau UmdfService di [DDInstall.wdf]

Bagian ini berisi arahan khusus WDF. Arahan khusus UMDF dimulai dengan awalan UMDF, dan arahan khusus KMDF dimulai dengan awalan KMDF.

Contoh kode berikut menunjukkan arahan khusus UMDF:

[ECHO_Device.NT.Wdf]
UmdfService = Echo, Echo_service_wdfsect
UmdfServiceOrder = Echo

[Echo_service_wdfsect]
UmdfLibraryVersion = $UMDFVERSION$
ServiceBinary = %13%\echo.dll

Contoh kode berikut menunjukkan arahan khusus KMDF:

[ECHO_Device.NT.Wdf]
KmdfService = Echo, Echo_service_wdfsect

[Echo_service_wdfsect]
KmdfLibraryVersion = $KMDFVERSION$

[Arahan UMDF untuk bagian DDInstall.WDF]

Berikut ini adalah contoh kode. Setiap direktif khusus UMDF di bagian DDInstall.WDF dijelaskan di bawah ini.

[ECHO_Device.NT.Wdf]
UmdfService = Echo, Echo_service_wdfsect
UmdfServiceOrder = Echo

UmdfService

`UmdfService = <serviceName>, <sectionName>

Mengaitkan driver UMDF dengan bagian [wdf-service-install] yang berisi informasi yang diperlukan untuk menginstal driver UMDF. Parameter serviceName menentukan driver UMDF, dan dibatasi hingga maksimum 31 karakter. Parameter sectionName mereferensikan bagian [wdf-service-install]. File INF yang valid biasanya memerlukan setidaknya satu direktif UmdfService . Namun, jika driver UMDF adalah bagian dari sistem operasi, arahan UmdfService untuk driver UMDF tidak diperlukan. Oleh karena itu, file INF yang valid mungkin tidak memiliki arahan UmdfService , meskipun sebagian besar file INF memiliki satu arahan UmdfService untuk setiap driver UMDF.

UmdfHostProcessSharing

Arahan ini didukung di UMDF versi 1.11 dan yang lebih baru.

UmdfHostProcessSharing = <ProcessSharingDisabled | ProcessSharingEnabled>

Menentukan apakah tumpukan perangkat ditempatkan ke dalam kumpulan proses bersama (ProcessSharingEnabled) atau proses individualnya sendiri (ProcessSharingDisabled). Defaultnya adalah ProcessSharingEnabled. Arahan ini khusus untuk perangkat daripada khusus driver.

Untuk informasi selengkapnya tentang pengumpulan perangkat, lihat Menggunakan Kumpulan Perangkat di Driver UMDF.

UmdfDirectHardwareAccess

Arahan ini didukung di UMDF versi 1.11 dan yang lebih baru.

UmdfDirectHardwareAccess = <AllowDirectHardwareAccess | RejectDirectHardwareAccess>

Menunjukkan apakah kerangka kerja harus memungkinkan driver untuk menggunakan salah satu fitur akses perangkat keras langsung, seperti mengakses daftar perangkat dan port, memindai sumber daya perangkat keras yang ditetapkan ke perangkat, menangani gangguan perangkat keras, atau memperoleh sumber daya koneksi.

Jika UmdfDirectHardwareAccess diatur ke AllowDirectHardwareAccess, kerangka kerja memungkinkan driver untuk menggunakan antarmuka UMDF yang melakukan akses perangkat keras langsung.

Anda harus menentukan AllowDirectHardwareAccess jika driver UMDF Anda mengakses sumber daya perangkat keras seperti register atau port, interupsi, pin I/O tujuan umum (GPIO), atau koneksi bus serial seperti I2C, SPI, dan port serial. Driver Anda menerima semua sumber daya ini melalui parameter ResourcesRaw dan ResourcesTranslated dari fungsi panggilan balik EvtDevicePrepareHardware-nya .

Catatan

Dimulai dengan UMDF versi 2.15, driver UMDF tidak perlu menentukan AllowDirectHardwareAccess untuk menerima daftar sumber daya perangkat keras dalam rutinitas panggilan balik EvtDevicePrepareHardware . Jika Anda tidak menentukannya, driver tidak memiliki hak akses untuk menggunakan sumber daya ini, dengan satu pengecualian: Jika perangkat diberi satu atau beberapa sumber daya koneksi (CmResourceTypeConnection) dan satu atau beberapa sumber daya yang mengganggu (CmResourceTypeInterrupt), driver dapat memanggil WdfInterruptCreate dari rutinitas panggilan balik EvtDevicePrepareHardware (tetapi tidak dari EvtDriverDeviceAdd).

Untuk informasi tentang menyambungkan driver UMDF ke jenis sumber daya tertentu, lihat:

Jika UmdfDirectHardwareAccess diatur ke RejectDirectHardwareAccess, kerangka kerja tidak mengizinkan driver untuk menggunakan fitur akses perangkat keras langsung. Nilai defaultnya adalah RejectDirectHardwareAccess.

Untuk informasi tentang cara driver UMDF mengakses sumber daya perangkat keras, lihat Menemukan dan Memetakan Sumber Daya Perangkat Keras.

UmdfHostPriority

Arahan ini didukung di UMDF versi 2.15 dan yang lebih baru.

UmdfHostPriority = <PriorityHigh>

Driver klien UMDF HID DAPAT mengatur UmdfHostPriority ke PriorityHigh untuk meningkatkan prioritas utasnya. Arahan ini hanya boleh digunakan untuk driver sentuhan atau input yang sensitif terhadap waktu respons pengguna. Ketika driver menentukan PriorityHigh, sistem menempatkannya di kumpulan perangkat terpisah bersama dengan driver lain dengan prioritas serupa. Karena kumpulan perangkat tambahan menggunakan lebih banyak memori, Anda harus menggunakan pengaturan ini dengan hati-hati. Untuk informasi selengkapnya tentang pengumpulan perangkat, lihat Menggunakan Kumpulan Perangkat di Driver UMDF.

UmdfRegisterAccessMode

Arahan ini didukung di UMDF versi 1.11 dan yang lebih baru.

UmdfRegisterAccessMode = <RegisterAccessUsingSystemCall | RegisterAccessUsingUserModeMapping>

Menunjukkan apakah kerangka kerja harus memetakan register ke ruang alamat mode pengguna (sehingga panggilan sistem tidak terlibat dalam mengakses register), atau menggunakan panggilan sistem untuk mengakses register.

Jika UmdfRegisterAccessMode diatur ke RegisterAccessUsingSystemCall, kerangka kerja menggunakan panggilan sistem untuk mengakses register.

Jika UmdfRegisterAccessMode diatur ke RegisterAccessUsingUserModeMapping, kerangka kerja memetakan pendaftaran ke ruang alamat mode pengguna sehingga panggilan sistem tidak diperlukan untuk mengakses register. Nilai defaultnya adalah RegisterAccessUsingSystemCall.

UmdfServiceOrder

UmdfServiceOrder = <serviceName1> [, <serviceName2> ...]

Mencantumkan urutan penginstal bersama menginstal driver UMDF pada tumpukan perangkat. Bahkan jika penginstal bersama hanya menginstal satu driver UMDF pada tumpukan perangkat, file INF harus berisi arahan ini. Parameter serviceNameXx sesuai dengan parameter serviceName untuk setiap arahan UmdfService . Karena driver UMDF ditambahkan ke tumpukan perangkat dalam urutan yang tercantum, parameter pertama menentukan driver UMDF terendah dalam tumpukan perangkat.

Untuk memastikan bahwa penginstal bersama UMDF menginstal perangkat, hanya satu direktif UmdfServiceOrder yang harus ada di bagian DDInstall khusus WDF tertentu. Artinya, arahan UmdfServiceOrder tidak dapat diimpor dengan menggunakan arahan Sertakan dan Kebutuhan .

UmdfImpersonationLevel

UmdfImpersonationLevel = <level>

Menginformasikan kerangka kerja tentang tingkat peniruan maksimum yang dapat dimiliki driver UMDF. Direktif UmdfImpersonationLevel bersifat opsional; jika tingkat peniruan tidak ditentukan, defaultnya adalah Identifikasi. Ketika aplikasi membuka handel file, aplikasi dapat memberikan tingkat peniruan yang lebih besar kepada driver. Namun, driver tidak dapat memanggil metode IWDFIoRequest::Impersonate untuk meminta tingkat peniruan yang lebih besar dari tingkat yang ditentukan UmdfImpersonationLevel . Nilai yang mungkin untuk direktif ini adalah:

  • Anonim

  • Identifikasi

  • Penyamaran

  • Delegasi

Nilai-nilai ini sesuai dengan nilai yang ditentukan dalam enumerasi SECURITY_IMPERSONATION_LEVEL .

UmdfMethodNeitherAction

UmdfMethodNeitherAction = <Salin | Tolak>

Menunjukkan apakah kerangka kerja akan menerima (Salin) atau menolak (Menolak) permintaan I/O perangkat, jika objek permintaan berisi kode kontrol I/O yang menentukan metode akses buffer METHOD_NEITHER . Arahan UmdfMethodNeitherAction bersifat opsional. Jika direktif tidak ditentukan, nilai defaultnya adalah Tolak.

Untuk informasi selengkapnya tentang mendukung metode akses buffer METHOD_NEITHER di driver berbasis UMDF, lihat Menggunakan I/O Buffered maupun I/O Langsung di Driver UMDF.

UmdfDispatcher

UmdfDispatcher = <FileHandle | WinUsb | NativeUSB>

Menginformasikan kerangka kerja tempat mengirim I/O setelah I/O melewati bagian mode pengguna dari tumpukan perangkat. Secara default, I/O dikirim ke reflektor (WUDFRd.sys). Dengan mengatur UmdfDispatcher ke WinUsb, driver menginstruksikan UMDF untuk mengirim I/O ke arsitektur WinUsb. Mulai dari UMDF 2.15, menentukan NativeUSB menyebabkan reflektor menangani I/O USB.

  • Jika ada driver dalam tumpukan yang menggunakan target berbasis handel file, atur direktif ini ke FileHandle.
  • Jika driver menggunakan UMDF 2.15 atau yang lebih baru dan menggunakan target I/O USB, atur arahan ini ke NativeUSB.
  • Jika driver pra-UMDF 2.15 dan menggunakan target I/O USB, atur arahan ini ke WinUsb.

Direktif UmdfDispatcher bersifat opsional.

Contoh kode berikut menunjukkan direktif UmdfDispatcher di bagian DDInstall khusus WDF .

[Xxx_Install.Wdf]
UmdfDispatcher=NativeUSB

UmdfKernelModeClientPolicy

Arahan ini didukung dalam UMDF versi 1.9 dan yang lebih baru.

UmdfKernelModeClientPolicy = <AllowKernelModeClients | RejectKernelModeClients>

Untuk mengizinkan driver mode kernel memuat di atas driver mode pengguna di versi UMDF sebelumnya, lihat Dukungan Klien mode Kernel di Versi UMDF Sebelumnya.

Menunjukkan apakah kerangka kerja harus mengizinkan driver untuk menerima permintaan I/O dari driver mode kernel.

Jika UmdfKernelModeClientPolicy diatur ke AllowKernelModeClients, kerangka kerja memungkinkan driver mode kernel memuat di atas driver mode pengguna, dan mengirimkan permintaan I/O dari driver mode kernel ke driver mode pengguna.

Jika UmdfKernelModeClientPolicy diatur ke RejectKernelModeClients, kerangka kerja tidak mengizinkan driver mode kernel memuat di atas driver mode pengguna, dan tidak mengirimkan permintaan I/O dari driver mode kernel apa pun ke driver mode pengguna. Jika file INF driver tidak berisi arahan ini, nilai defaultnya adalah RejectKernelModeClients. Untuk informasi selengkapnya, lihat Mendukung Klien mode Kernel.

UmdfFileObjectPolicy

Arahan ini didukung dalam UMDF versi 1.11 dan yang lebih baru.

UmdfFileObjectPolicy = <RejectNullAndUnknownFileObjects | AllowNullAndUnknownFileObjects>

Menunjukkan apakah kerangka kerja harus mengizinkan pemrosesan permintaan I/O (IWDFIoRequest) yang tidak terkait dengan objek file (IWDFFile) atau dikaitkan dengan objek file yang tidak diketahui (objek file yang sebelumnya tidak melihat permintaan pembuatan driver).

Jika UmdfFileObjectPolicy diatur ke RejectNullAndUnknownFileObjects, kerangka kerja tidak mengizinkan pemrosesan permintaan yang terkait dengan NULL atau objek file yang tidak diketahui.

Jika UmdfFileObjectPolicy diatur ke AllowNullAndUnknownFileObjects, kerangka kerja memungkinkan pemrosesan permintaan yang terkait dengan NULL atau objek file yang tidak diketahui.

Nilai defaultnya adalah RejectNullAndUnknownFileObjects.

UmdfFsContextUsePolicy

Arahan ini didukung dalam UMDF versi 1.11 dan yang lebih baru.

UmdfFsContextUsePolicy = <CanUseFsContext | CanUseFsContext2 | CannotUseFsContexts>

Menunjukkan apakah kerangka kerja dapat menyimpan informasi internal dalam anggota konteks tertentu dari objek file WDM. Jika driver mode kernel di tumpukan yang sama menggunakan anggota objek file tertentu, Anda dapat menggunakan arahan ini untuk meminta agar kerangka kerja tidak menggunakan lokasi yang sama.

Jika UmdfFsContextUsePolicy diatur ke CanUseFsContext, kerangka kerja menyimpan informasi di anggota FsContext dari objek file WDM.

Jika UmdfFsContextUsePolicy diatur ke CanUseFsContext2, kerangka kerja menyimpan informasi di anggota FsContext2 dari objek file WDM.

Jika UmdfFsContextUsePolicy diatur ke CannotUseFsContexts, kerangka kerja tidak menggunakan FsContext atau FsContext2.

Nilai defaultnya adalah CanUseFsContext.

[Arahan UMDF untuk bagian wdf-service-install]

Berikut ini adalah contoh kode. Setiap arahan khusus UMDF di bagian [wdf-service-install] dijelaskan di bawah ini. Nama bagian ditentukan dalam direktif UmdfService di bagian [DDInstall.wdf].

[Echo_service_wdfsect]
UmdfLibraryVersion = $UMDFVERSION$
ServiceBinary = %13%\echo.dll

UmdfLibraryVersion

UmdfLibraryVersion = <versi>

Menginformasikan penginstal bersama tentang nomor versi kerangka kerja yang akan digunakan driver UMDF. Format string versi adalah <utama>.<anak di bawah umur>.<layanan>. Ketika driver pada tumpukan perangkat menggunakan lebih dari satu versi kerangka kerja, file INF menyalin beberapa penginstal bersama--satu untuk setiap versi kerangka kerja--ke lokasi yang sama pada hard disk drive. Namun, file INF hanya menambahkan penginstal bersama versi tertinggi ke nilai registri CoInstallers32 . Untuk informasi selengkapnya tentang menyalin penginstal bersama, lihat Menggunakan Penginstal Bersama UMDF.

Penginstal bersama memverifikasi string versi dan menggunakannya untuk menemukan penginstal bersama khusus versi untuk driver UMDF. Penginstal bersama kemudian mengekstrak kerangka kerja dari penginstal bersama khusus versi.

ServiceBinary

ServiceBinary = <binarypath>

Menginformasikan UMDF tentang di mana menempatkan biner driver UMDF pada hard disk drive.

Driver UMDF harus disalin ke, dan dijalankan dari, Windows\System32\Drivers\UMDF direktori .

DriverCLSID

Catatan Arahan ini hanya didukung di UMDF 1.x, yang tidak digunakan lagi. Untuk informasi selengkapnya, lihat Panduan Desain UMDF 1.x.

DriverCLSID = <{CLSID}>

Menginformasikan UMDF tentang pengidentifikasi kelas (CLSID) driver UMDF. Ketika UMDF memuat driver UMDF, host UMDF menggunakan CLSID driver UMDF untuk membuat instans antarmuka IDriverEntry driver UMDF.

UmdfExtensions

UmdfExtensions = <cxServiceName>

Diperlukan untuk driver yang berkomunikasi dengan driver ekstensi kelas yang disediakan oleh Microsoft. Parameter cxServiceName sesuai dengan layanan yang terkait dengan biner driver ekstensi kelas.

Nama layanan untuk driver ekstensi kelas dapat ditemukan sebagai subkuntang di bawah kunci registri berikut: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services

[Arahan KMDF untuk bagian DDInstall.WDF]

Berikut ini adalah contoh kode. Setiap arahan khusus KMDF di bagian DDInstall.WDF dijelaskan di bawah ini.

[ECHO_Device.NT.Wdf]
KmdfService = Echo, Echo_service_wdfsect

KmdfService

KmdfService = <serviceName>, <sectionName>

Mengaitkan driver KMDF dengan bagian [wdf-service-install] yang berisi informasi yang diperlukan untuk menginstal driver KMDF. Parameter serviceName menentukan driver KMDF, dan dibatasi hingga maksimum 31 karakter. Parameter sectionName mereferensikan bagian [wdf-service-install]. File INF yang valid biasanya memerlukan setidaknya satu arahan KmdfService . Namun, jika driver KMDF adalah bagian dari sistem operasi, arahan KmdfService untuk driver KMDF tidak diperlukan. Oleh karena itu, file INF yang valid mungkin tidak memiliki arahan KmdfService , meskipun sebagian besar file INF memiliki satu arahan KmdfService untuk setiap driver KMDF.

[Arahan KMDF untuk bagian wdf-service-install]

Berikut ini adalah contoh kode. Setiap arahan khusus KMDF di bagian [wdf-service-install] dijelaskan di bawah ini. Nama bagian berasal dari direktif KmdfService di bagian DDInstall.wdf.

[Echo_service_wdfsect]
KmdfLibraryVersion = $KMDFVERSION$

KmdfLibraryVersion

KmdfLibraryVersion = <version>

Format string versi adalah major.minor. Biasanya Anda harus menentukan $KMDFVERSION$ dan kemudian proses build WDK akan menggantinya dengan nomor versi yang benar.