IRP_MN_START_DEVICE

Semua driver PnP harus menangani IRP ini.

Nilai

0x00

Kode Utama

IRP_MJ_PNP

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)

Lihat juga

IRP_MN_STOP_DEVICE