Fungsi IoRequestDeviceEject (wdm.h)

Rutinitas IoRequestDeviceEject memberi tahu manajer PnP bahwa tombol keluarkan perangkat ditekan.

Sintaks

void IoRequestDeviceEject(
  [in] PDEVICE_OBJECT PhysicalDeviceObject
);

Parameter

[in] PhysicalDeviceObject

Arahkan ke PDO untuk perangkat.

Nilai kembali

Tidak ada

Keterangan

Perhatikan bahwa rutinitas ini melaporkan permintaan untuk dikeluarkannya perangkat, bukan dikeluarkan media.

Biasanya, driver bus PnP memanggil IoRequestDeviceEject untuk memberi tahu manajer PnP bahwa pengguna menekan tombol keluarkan perangkat di salah satu perangkat anaknya.

Driver memanggil rutinitas ini, daripada mengirim permintaan IRP_MN_EJECT , karena rutinitas ini memungkinkan manajer PnP untuk mengoordinasikan tindakan tambahan untuk dikeluarkan selain mengirim IRP. Misalnya, manajer PnP memberi tahu komponen mode pengguna dan mode kernel yang terdaftar untuk pemberitahuan perubahan pada perangkat.

Manajer PnP mengarahkan penonaktifan perangkat secara teratur. Manajer PnP:

  1. Membuat daftar perangkat lain yang terpengaruh oleh perangkat ini yang dikeluarkan.

    Manajer PnP meminta hubungan penghapusan perangkat, hubungan ejeksi, dan relasi bus (perangkat turunan).

  2. Menentukan apakah perangkat dan perangkat terkaitnya dapat dihapus perangkat lunak.

    Manajer PnP mengirimkan IRP_MN_QUERY_REMOVE_DEVICE IRP ke driver untuk perangkat dan perangkat terkait. Manajer PnP juga mengirim pemberitahuan ke komponen mode pengguna dan mode kernel apa pun yang terdaftar untuk pemberitahuan perubahan perangkat pada perangkat atau perangkat terkait. Jika salah satu driver atau komponen mode pengguna gagal menghapus kueri, manajer PnP akan memunculkan kotak dialog untuk memberi tahu pengguna bahwa keluarnya gagal.

  3. Perangkat lunak menghapus perangkat dan perangkat terkaitnya.

    Jika langkah-langkah sebelumnya berhasil, manajer PnP memberi tahu driver dan aplikasi terdaftar bahwa perangkat dan perangkat terkait sedang dihapus perangkat lunak. Kemudian manajer PnP mengirim IRP_MN_REMOVE_DEVICE IRP ke driver untuk perangkat dan perangkat terkait. Fungsi dan filter driver terlepas dari tumpukan perangkat dan hapus objek perangkat mereka untuk perangkat. Pengemudi bus mempertahankan PDO untuk perangkat, kecuali perangkat hilang secara fisik dan pengemudi bus menghilangkan perangkat dalam respons terbarunya terhadap IRP_MN_QUERY_DEVICE_RELATIONS/BusRelations untuk bus induk perangkat.

  4. Mengarahkan pengemudi bus untuk mengeluarkan perangkat (jika memungkinkan).

    Manajer PnP mengambil langkah-langkah yang berbeda, tergantung pada kemampuan mengeluarkan perangkat:

    • Hot eject didukung.

      Jika kemampuan EjectSupported diatur untuk perangkat, perangkat dapat dikeluarkan saat sistem berjalan (dalam status PowerSystemWorking ). Manajer PnP mengirimkan permintaan IRP_MN_EJECT ke driver bus untuk perangkat. Setiap fungsi dan driver filter yang dilepas sebelumnya dari tumpukan sebagai respons terhadap penghapusan IRP, sehingga pengemudi bus menangani IRP keluaran. Ketika driver bus menyelesaikan IRP, manajer PnP mengharapkan perangkat untuk absen secara fisik dari sistem.

    • Keluaran panas tidak didukung.

      Dalam hal ini, perangkat dapat dilepas tetapi tidak mendukung keluarnya. Manajer PnP menandai perangkat sebagai tidak ada/tidak berfungsi dengan benar. Manajer PnP tidak akan menghidupkan ulang perangkat sampai pengguna menghapusnya secara fisik dan memasangnya kembali. Dalam hal ini, manajer PnP tidak mengirim IRP_MN_EJECT.

    Driver bus induk perangkat mengatur kemampuan untuk perangkat, termasuk kemampuan mengeluarkannya, sebagai respons terhadap permintaan IRP_MN_QUERY_CAPABILITIES . Fungsi atau driver filter dapat secara opsional menentukan kapabilitas.
Ketika perangkat dikeluarkan, perangkat anaknya dihapus secara fisik dari sistem bersama dengannya.

Aplikasi mode pengguna dapat memulai keluarnya perangkat. Dalam hal ini, tidak ada driver yang memanggil rutinitas ini tetapi sistem operasi memanggil manajer PnP untuk memulai langkah-langkah yang tercantum di atas.

Pemanggil IoRequestDeviceEject harus berjalan di IRQL <= DISPATCH_LEVEL. Manajer PnP melakukan sebagian besar tugas yang dikeluarkan perangkat yang tercantum di atas pada IRQL = PASSIVE_LEVEL.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia dimulai dengan Windows 2000.
Target Platform Universal
Header wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (lihat bagian Keterangan)

Lihat juga

IRP_MN_EJECT

IRP_MN_QUERY_DEVICE_RELATIONS

IRP_MN_QUERY_REMOVE_DEVICE

IRP_MN_REMOVE_DEVICE