IRP_MN_WRITE_CONFIG

Driver bus untuk bus dengan ruang konfigurasi harus menangani permintaan ini untuk perangkat anak mereka (PDO anak). Fungsi dan driver filter tidak menangani permintaan ini.

Nilai

0x10

Kode Utama

IRP_MJ_PNP

Ketika Dikirim

Driver atau komponen sistem lainnya mengirimkan IRP ini untuk menulis data ke ruang konfigurasi bus induk perangkat.

Driver atau komponen sistem lainnya mengirimkan IRP ini di IRQL < DISPATCH_LEVEL dalam konteks utas arbitrer.

Parameter Input

Parameters.ReadWriteConfig adalah struktur yang berisi informasi berikut:

ULONG WhichSpace;
PVOID Buffer;
ULONG Offset;
ULONG Length

Anggota struktur dapat ditafsirkan secara berbeda oleh pengemudi bus yang berbeda, tetapi anggota biasanya didefinisikan sebagai berikut:

Ruang Mana
Menentukan ruang konfigurasi. Untuk informasi tentang nilai yang dapat ditentukan untuk WhichSpace, lihat IRP_MN_READ_CONFIG.

Buffer
Menunjuk ke buffer yang berisi data yang akan ditulis. Format buffer khusus bus.

Offset
Menentukan offset ke dalam ruang konfigurasi.

Panjang
Menentukan jumlah byte yang akan ditulis.

Parameter Output

Dikembalikan di blok status I/O.

Blok Status I/O

Driver bus mengatur Irp-IoStatus.Status> ke STATUS_SUCCESS atau ke status kesalahan yang sesuai seperti STATUS_INVALID_PARAMETER_n, STATUS_NO_SUCH_DEVICE, atau STATUS_DEVICE_NOT_READY.

Jika berhasil, pengemudi bus menetapkan Irp-IoStatus.Information> ke jumlah byte yang ditulis.

Jika pengemudi bus tidak dapat segera menyelesaikan permintaan ini, itu dapat menandai IRP tertunda, mengembalikan STATUS_PENDING, dan menyelesaikan IRP di lain waktu.

Operasi

Pengemudi bus menangani IRP ini untuk perangkat anaknya (PDO anak).

Fungsi dan driver filter tidak menangani IRP ini; mereka meneruskannya ke driver bawah berikutnya tanpa perubahan pada Irp-IoStatus.Status> dan tidak mengatur rutinitas IoCompletion.

Lihat Plug and Play aturan umum untuk menangani Plug and Play runtime integrasi kecil.

Mengirim IRP ini

Biasanya, driver fungsi mengirimkan IRP ini ke tumpukan perangkat yang terpasang dan IRP ditangani oleh driver bus induk.

Lihat Menangani IRP untuk informasi tentang pengiriman RUN. Langkah-langkah berikut berlaku khusus untuk IRP ini:

  • Alokasikan buffer dari kumpulan halaman dan inisialisasi dengan data yang akan ditulis.

  • Atur nilai di lokasi tumpukan I/O berikutnya dari IRP: atur MajorFunction ke IRP_MJ_PNP, atur MinorFunction ke IRP_MN_WRITE_CONFIG, dan atur nilai yang sesuai di Parameters.ReadWriteConfig.

  • Menginisialisasi IoStatus.Status ke STATUS_NOT_SUPPORTED.

  • Batalkan alokasi IRP dan buffer ketika tidak lagi diperlukan.

Driver harus mengirim IRP ini dari DISPATCH_LEVEL IRQL < .

Pengemudi dapat mengakses ruang konfigurasi bus di DISPATCH_LEVEL melalui rutinitas antarmuka bus, jika pengemudi bus induk mengekspor antarmuka tersebut. Untuk mendapatkan antarmuka bus, pengemudi mengirimkan permintaan IRP_MN_QUERY_INTERFACE ke sopir bus induknya. Driver kemudian memanggil rutinitas yang sesuai yang dikembalikan dalam antarmuka.

Misalnya, untuk menulis ruang konfigurasi dari DISPATCH_LEVEL driver dapat memanggil IRP_MN_QUERY_INTERFACE selama inisialisasi driver untuk mendapatkan antarmuka BUS_INTERFACE_STANDARD dari driver bus induk. Driver mengirim IRP kueri dari IRQL PASSIVE_LEVEL. Kemudian, dari kode di IRQL DISPATCH_LEVEL, driver memanggil rutinitas yang sesuai yang dikembalikan dalam antarmuka, seperti rutinitas Interface.SetBusData .

Persyaratan

Header

Wdm.h (termasuk Wdm.h, Ntddk.h, atau Ntifs.h)

Lihat juga

IRP_MN_QUERY_INTERFACE

IRP_MN_READ_CONFIG