Bagikan melalui


Membuat Objek Perangkat

Driver monolitik harus membuat objek perangkat untuk setiap perangkat fisik, logis, atau virtual yang menangani permintaan I/O. Driver yang tidak membuat objek perangkat untuk perangkat tidak menerima runtime integrasi untuk perangkat.

Di beberapa area teknologi, minidriver yang terkait dengan driver kelas atau driver port tidak harus membuat objek perangkatnya sendiri. Sebaliknya, driver kelas atau port membuat objek perangkat, dan menerima semua RUN untuk perangkat. Driver kelas atau port kemudian menggunakan metode khusus driver untuk meneruskan permintaan I/O ke minidriver. Lihat dokumentasi untuk area teknologi tertentu Anda untuk menentukan apakah Microsoft menyediakan driver kelas atau port yang membuat objek perangkat atas nama driver Anda.

Driver memanggil IoCreateDevice atau IoCreateDeviceSecure untuk membuat objek perangkat mereka. Untuk informasi selengkapnya tentang rutinitas mana yang akan digunakan, lihat bagian berikut ini.

Membuat Objek Perangkat untuk Fungsi WDM dan Driver Filter

Membuat Objek Perangkat untuk Driver Bus WDM

Membuat Objek Perangkat untuk Driver Non-WDM

Saat driver membuat objek perangkat, driver menyediakan informasi berikut ke IoCreateDevice atau IoCreateDeviceSecure:

  • Ukuran ekstensi perangkat perangkat. Ekstensi perangkat adalah area penyimpanan yang dialokasikan sistem yang dapat digunakan driver untuk penyimpanan khusus perangkat. Untuk informasi selengkapnya, lihat Ekstensi Perangkat.

  • Konstanta yang ditentukan sistem, menunjukkan DeviceType yang diwakili oleh objek perangkat. Untuk informasi selengkapnya, lihat Menentukan Jenis Perangkat.

  • Satu atau beberapa ORed, konstanta yang ditentukan sistem yang menunjukkan karakteristik perangkat untuk perangkat. Untuk informasi selengkapnya, lihat Menentukan Karakteristik Perangkat.

  • Nilai Boolean, bernama Eksklusif, yang menentukan apakah sedikit di Bendera objek perangkat harus diatur dengan DO_EXCLUSIVE, menunjukkan layanan driver perangkat eksklusif, seperti video, serial, paralel, atau perangkat suara. Driver WDM harus mengatur Eksklusif ke FALSE. Untuk informasi selengkapnya, lihat Menentukan Akses Eksklusif ke Objek Perangkat.

  • Penunjuk ke objek driver untuk driver. Fungsi WDM atau driver filter menerima penunjuk ke objek drivernya sebagai parameter untuk rutinitas AddDevice-nya . Semua driver menerima pointer ke objek driver mereka dalam rutinitas DriverEntry mereka. Sistem menggunakan penunjuk ini untuk mengaitkan pengandar dengan objek perangkatnya.

  • Penunjuk opsional ke string Unicode (DeviceName) yang dihentikan null yang menamai perangkat. Driver WDM, selain sopir bus, tidak menyediakan nama perangkat; melakukannya melewati fitur keamanan manajer PnP. Untuk informasi selengkapnya, lihat Objek Perangkat Bernama.

Jika panggilan ke IoCreateDevice atau IoCreateDeviceSecure berhasil, manajer I/O menyediakan penyimpanan untuk objek perangkat itu sendiri dan untuk semua struktur data lain yang terkait dengan objek perangkat, termasuk ekstensi perangkat, yang diinisialisasi dengan nol.

Membuat Objek Perangkat untuk Fungsi WDM dan Driver Filter

Driver WDM, selain pengemudi bus, panggil IoCreateDevice untuk membuat objek perangkat mereka. Sebagian besar driver WDM membuat objek perangkat mereka dari dalam rutinitas AddDevice mereka. Beberapa driver, seperti driver disk yang harus merespons IOCTL tata letak drive, memanggil IoCreateDevice dari rutinitas pengiriman.

Kecuali bagian khusus jenis perangkat dari status dokumentasi Windows Driver Kit (WDK) sebaliknya, driver Anda harus membuat objek perangkatnya dalam rutinitas AddDevice-nya . Untuk informasi selengkapnya, lihat Menulis Rutinitas AddDevice.

Membuat Objek Perangkat untuk Driver Bus WDM

Driver bus WDM membuat PDO saat menghitung perangkat baru sebagai respons terhadap permintaan IRP_MN_QUERY_DEVICE_RELATIONS , jika jenis relasinya adalah BusRelations.

Aturan berikut menentukan apakah driver bus memanggil IoCreateDevice atau IoCreateDeviceSecure untuk membuat objek perangkat:

  • Jika perangkat dapat digunakan dalam mode mentah, maka perangkat harus memanggil IoCreateDeviceSecure.

  • Jika perangkat tidak mampu mode mentah, maka driver bus dapat menggunakan IoCreateDevice atau IoCreateDeviceSecure. IoCreateDevice dapat digunakan ketika keamanan sistem default untuk perangkat di bus memadai; IoCreateDeviceSecure dapat digunakan untuk menentukan deskriptor keamanan yang lebih ketat. Untuk informasi selengkapnya, lihat Mengontrol Akses Perangkat.

Membuat Objek Perangkat untuk Driver Non-WDM

Driver non-WDM menggunakan IoCreateDevice untuk membuat objek perangkat yang tidak disebutkan namanya, dan IoCreateDeviceSecure untuk membuat objek perangkat bernama. Perhatikan objek perangkat yang tidak disebutkan namanya dari driver non-WDM tidak dapat diakses dari mode pengguna, sehingga driver biasanya harus membuat setidaknya satu objek bernama.