Bagikan melalui


Objek File Driver-Created Versus Application-Created

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.

Saat aplikasi membuka handel ke perangkat, kerangka kerja memanggil metode IQueueCallbackCreate::OnCreateFile driver Anda dan menyediakan pointer ke antarmuka IWDFFile untuk objek file yang terkait dengan perangkat. Setiap permintaan I/O yang dikirim aplikasi ke handel yang dibuka dikaitkan dengan objek file yang dibuat. Ketika permintaan tersebut tiba, kerangka kerja memanggil metode yang sesuai dari salah satu Antarmuka Objek Antrean UMDF yang disediakan driver. Driver kemudian dapat memanggil IWDFIoRequest::GetFileObject untuk menentukan objek file yang terkait dengan permintaan. Driver dapat memanggil AssignContext pada objek file untuk mengaitkan konteks yang khusus untuk sesi I/O.

Tabel berikut menunjukkan panggilan yang dilakukan aplikasi dan pemberitahuan yang dihasilkan yang diterima driver.

Aplikasi dimulai Penerimaan driver

Panggilan ke fungsi Microsoft Win32 CreateFile .

Panggilan ke metode IQueueCallbackCreate::OnCreateFile .

Panggilan ke fungsi Win32 ReadFileEx, WriteFileEx, atau DeviceIoControl .

Panggilan ke metode IQueueCallbackRead::OnRead, IQueueCallbackWrite::OnWrite, atau IQueueCallbackDeviceIoControl::OnDeviceIoControl .

Panggilan ke fungsi Win32 CloseHandle untuk handel terbuka terakhir ke objek file.

Panggilan ke metode IFileCallbackCleanup::OnCleanupFile-nya .

Driver membatalkan atau menyelesaikan semua permintaan I/O yang terkait dengan objek file.

Setelah driver kembali dari pemberitahuan pembersihan, UMDF membatalkan permintaan I/O yang tertunda.

Setelah pembersihan selesai dan UMDF membatalkan permintaan I/O yang tertunda, driver menerima panggilan ke metode IFileCallbackClose::OnCloseFile-nya .

Komponen sistem dapat mengeluarkan permintaan pembuatan atas nama aplikasi Universal Windows. Jika driver perlu menentukan ID proses aplikasi yang mengeluarkan permintaan buat, driver dapat memanggil metode IWDFFile3::GetInitiatorProcessId .

Objek file yang dibuat driver

Jika driver Anda perlu membuat dan mengirim permintaan I/O independen dari aplikasi ke driver berikutnya di tumpukan (target I/O default), driver harus memanggil IWDFDevice::CreateWdfFile untuk mengambil pointer ke antarmuka IWDFDriverCreatedFile . Dalam hal ini, driver berikutnya menerima pemberitahuan yang sama dengan yang diterima driver Anda ketika aplikasi menghasilkan permintaan.

Tabel berikut menunjukkan panggilan yang dilakukan driver Anda dan pemberitahuan yang dihasilkan ke driver berikutnya di tumpukan.

Driver dimulai Driver berikutnya dalam tumpukan menerima

Panggilan ke metode IWDFDevice::CreateWdfFile .

Objek file yang dibuat UMDF mewakili sesi I/O antara perangkat dan perangkat berikutnya dalam tumpukan.

Panggilan ke metode IQueueCallbackCreate::OnCreateFile .

Panggilan ke metode IWDFDevice::CreateRequest .

Panggilan untuk memformat permintaan (misalnya, panggilan ke metode IWDFIoTarget::FormatRequestForIoctl ).

Panggilan ke metode IWDFIoRequest::Send .

Panggilan ke metode IQueueCallbackRead::OnRead, IQueueCallbackWrite::OnWrite, atau IQueueCallbackDeviceIoControl::OnDeviceIoControl .

Panggilan ke metode IWDFDriverCreatedFile::Close .

Panggilan ke metode IFileCallbackCleanup::OnCleanupFile-nya .

Driver membatalkan atau menyelesaikan semua permintaan I/O yang terkait dengan objek file.

Setelah driver kembali dari pemberitahuan pembersihan, UMDF membatalkan permintaan I/O yang tertunda.

Setelah pembersihan selesai dan UMDF membatalkan permintaan I/O yang tertunda, driver menerima panggilan ke metode IFileCallbackClose::OnCloseFile-nya .

Untuk perangkat berikutnya dalam tumpukan, tidak ada perbedaan antara objek file yang dibuat oleh aplikasi dan objek file yang dibuat oleh perangkat lapisan yang lebih tinggi.