Bagikan melalui


Menentukan Mode Sinkronisasi Panggilan Balik

Peringatan

UMDF 2 adalah versi terbaru UMDF dan supersedes UMDF 1. Semua driver UMDF baru harus ditulis menggunakan UMDF 2. Tidak ada fitur baru yang ditambahkan ke UMDF 1 dan ada dukungan terbatas untuk UMDF 1 pada versi Windows 10 yang lebih baru. Driver Universal Windows harus menggunakan UMDF 2.

Sampel UMDF 1 yang diarsipkan dapat ditemukan di Windows 11, versi 22H2 - Pembaruan Sampel Driver Mei 2022.

Untuk informasi selengkapnya, lihat Mulai menggunakan UMDF.

Driver dapat menentukan bagaimana fungsi panggilan baliknya dipanggil oleh kerangka kerja. Driver menentukan mode sinkronisasi (atau penguncian) untuk perangkat sebelum memanggil metode IWDFDriver::CreateDevice untuk membuat objek perangkat untuk perangkat. Untuk menentukan mode sinkronisasi, driver harus memanggil metode IWDFDeviceInitialize::SetLockingConstraint . Driver menerima pointer ke antarmuka IWDFDeviceInitialize ketika metode IDriverEntry::OnDeviceAdd dipanggil untuk menambahkan perangkat ke sistem.

Driver dapat menentukan salah satu nilai berikut dari jenis enumerasi WDF_CALLBACK_CONSTRAINT dalam parameter LockTypeIWDFDeviceInitialize::SetLockingConstraint untuk mengidentifikasi mode penguncian. Jenis batasan (atau penguncian) yang ditentukan tergantung pada berapa banyak paralelisme yang dapat dieksploitasi perangkat keras dan berapa banyak yang dapat ditangani driver.

Nilai Makna

Tidak ada (0)

Menunjukkan bahwa tidak ada fungsi panggilan balik ke dalam driver yang disinkronkan.

WdfDeviceLevel (1)

Menunjukkan bahwa semua fungsi panggilan balik antrean ke dalam driver disinkronkan.

Catatan Jika driver tidak memanggil IWDFDeviceInitialize::SetLockingConstraint untuk menentukan nilai, kerangka kerja menetapkan nilai default properti ini ke WdfDeviceLevel.

Batasan hanya berlaku untuk fungsi panggilan balik antrean dan tidak Plug and Play (PnP) dan fungsi panggilan balik manajemen daya. Fungsi panggilan balik antrean meliputi yang berikut ini:

Fungsi panggilan balik penyelesaian permintaan (IRequestCallbackRequestCompletion::OnCompletion) bukan fungsi panggilan balik antrean. Oleh karena itu, mereka tidak disinkronkan.