IRP_MN_START_DEVICE
Semua driver PnP harus menangani IRP ini.
Nilai
0x00
Kode Utama
Ketika Dikirim
Manajer PnP mengirimkan IRP ini setelah menetapkan sumber daya perangkat keras, jika ada, ke perangkat. Perangkat mungkin baru saja dijumlahkan dan sedang dimulai untuk pertama kalinya, atau perangkat mungkin dimulai ulang setelah dihentikan untuk penyeimbangan ulang sumber daya.
Terkadang manajer PnP mengirim IRP_MN_START_DEVICE ke perangkat yang sudah dimulai, menyediakan sekumpulan sumber daya yang berbeda dari yang saat ini digunakan perangkat. Driver memulai tindakan ini dengan memanggil IoInvalidateDeviceState dan menanggapi permintaan IRP_MN_QUERY_PNP_DEVICE_STATE berikutnya dengan set bendera PNP_RESOURCE_REQUIREMENTS_CHANGED. Pengemudi bus mungkin menggunakan mekanisme ini, misalnya, untuk membuka bukaan baru di jembatan PCI-ke-PCI.
Manajer PnP mengirimkan IRP ini di IRQL PASSIVE_LEVEL dalam konteks utas sistem.
Parameter Input
Anggota Parameters.StartDevice.AllocatedResources dari struktur IO_STACK_LOCATION menunjuk ke CM_RESOURCE_LIST yang menjelaskan sumber daya perangkat keras yang ditetapkan manajer PnP ke perangkat. Daftar ini berisi sumber daya dalam bentuk mentah. Gunakan sumber daya mentah untuk memprogram perangkat.
Parameters.StartDevice.AllocatedResourcesTranslated menunjuk ke CM_RESOURCE_LIST yang menjelaskan sumber daya perangkat keras yang ditetapkan manajer PnP ke perangkat. Daftar ini berisi sumber daya dalam formulir yang diterjemahkan. Gunakan sumber daya yang diterjemahkan untuk menyambungkan vektor interupsi, memetakan ruang I/O, dan memetakan memori.
Parameter Output
Tidak ada
Blok Status I/O
Driver mengatur Irp-IoStatus.Status> ke STATUS_SUCCESS atau ke status kesalahan yang sesuai seperti STATUS_UNSUCCESSFUL atau STATUS_INSUFFICIENT_RESOURCES.
Jika driver memerlukan beberapa waktu untuk menjalankan operasi mulainya untuk perangkat, driver dapat menandai IRP yang tertunda dan mengembalikan STATUS_PENDING.
Operasi
IRP ini harus ditangani terlebih dahulu oleh driver bus induk untuk perangkat dan kemudian oleh setiap driver yang lebih tinggi di tumpukan perangkat.
Menanggapi IRP ini, driver memulai perangkat untuk pertama kalinya atau memulai ulang perangkat yang dihentikan. Operasi yang tepat yang diperlukan untuk memulai perangkat bervariasi dari perangkat ke perangkat, tetapi dapat mencakup daya pada perangkat, melakukan inisialisasi khusus perangkat, dan menghubungkan gangguan.
Driver biasanya dapat menangani IRP ini dengan cara yang sama apakah itu memulai perangkat untuk pertama kalinya atau memulai ulang perangkat setelah IRP_MN_STOP_DEVICE, kecuali jika driver perlu memulihkan status perangkat pada hidupkan ulang setelah berhenti.
Pada Windows Vista dan sistem operasi yang lebih baru, kami menyarankan agar driver selalu menunggu IRP_MN_START_DEVICE IRP dan menyelesaikan pemrosesannya nanti. Urutan ini memungkinkan sistem untuk memproses mulai ulang perangkat secara asinkron. (Pada sistem operasi sebelum Windows Vista, driver dapat mengembalikan STATUS_PENDING dari rutinitas pengiriman mereka, tetapi manajer PnP tidak tumpang tindih dengan mulai ulang perangkat dengan operasi lain.)
Untuk informasi selengkapnya tentang menangani IRP mulai, lihat Memulai Perangkat.
Mengirim IRP ini
Dicadangkan untuk penggunaan sistem. Driver tidak boleh mengirim IRP ini.
Persyaratan
Header |
Wdm.h (termasuk Wdm.h, Ntddk.h, atau Ntifs.h) |