IRP_MN_WRITE_CONFIG
I conducenti degli autobus con spazio di configurazione devono gestire questa richiesta per i dispositivi figlio (PDO figlio). I driver di funzione e filtro non gestiscono questa richiesta.
Valore
0x10
Codice principale
Data di invio
Un driver o un altro componente di sistema invia questo IRP per scrivere dati nello spazio di configurazione del bus padre di un dispositivo.
Un driver o un altro componente di sistema invia questo IRP al DISPATCH_LEVEL IRQL < in un contesto di thread arbitrario.
Parametri di input
Parameters.ReadWriteConfig è una struttura contenente le informazioni seguenti:
ULONG WhichSpace;
PVOID Buffer;
ULONG Offset;
ULONG Length
I membri della struttura possono essere interpretati in modo diverso da driver di bus diversi, ma i membri vengono in genere definiti come segue:
WhichSpace
Specifica lo spazio di configurazione. Per informazioni sui valori che è possibile specificare per WhichSpace, vedere IRP_MN_READ_CONFIG.
Buffer
Punta a un buffer contenente i dati da scrivere. Il formato del buffer è specifico del bus.
Compensare
Specifica un offset nello spazio di configurazione.
Lunghezza
Specifica il numero di byte da scrivere.
Parametri di output
Restituito nel blocco di stato di I/O.
Blocco dello stato I/O
Un driver del bus imposta Irp-IoStatus.Status> su STATUS_SUCCESS o su uno stato di errore appropriato, ad esempio STATUS_INVALID_PARAMETER_n, STATUS_NO_SUCH_DEVICE o STATUS_DEVICE_NOT_READY.
In caso di esito positivo, un driver del bus imposta Irp-IoStatus.Information> sul numero di byte scritti.
Se un driver del bus non è in grado di completare immediatamente questa richiesta, può contrassegnare l'IRP in sospeso, restituire STATUS_PENDING e completare l'IRP in un secondo momento.
Operazione
Un driver del bus gestisce questo IRP per i dispositivi figlio (PDO figlio).
I driver di funzione e filtro non gestiscono questo IRP; passano al driver inferiore successivo senza modifiche a Irp-IoStatus.Status> e non impostano una routine IoCompletion.
Vedere Plug and Play per le regole generali per la gestione dei runtime di integrazione secondaria di Plug and Play.
Invio di questo IRP
In genere, un driver di funzione invia questo IRP allo stack di dispositivi a cui è collegato e l'IRP viene gestito dal driver del bus padre.
Per informazioni sull'invio di provider di integrazione, vedere Gestione dei runtime di integrazione. I passaggi seguenti si applicano in modo specifico a questo IRP:
Allocare un buffer dal pool di paging e inizializzarlo con i dati da scrivere.
Impostare i valori nella successiva posizione dello stack di I/O di IRP: impostare MajorFunction su IRP_MJ_PNP, impostare MinorFunction su IRP_MN_WRITE_CONFIG e impostare i valori appropriati in Parameters.ReadWriteConfig.
Inizializzare IoStatus.Status per STATUS_NOT_SUPPORTED.
Deallocare l'IRP e il buffer quando non sono più necessari.
I driver devono inviare questo IRP dal DISPATCH_LEVEL IRQL < .
Un driver può accedere allo spazio di configurazione di un bus in DISPATCH_LEVEL tramite una routine dell'interfaccia del bus, se il driver del bus padre esporta tale interfaccia. Per ottenere un'interfaccia del bus, un driver invia una richiesta di IRP_MN_QUERY_INTERFACE al driver del bus padre. Il driver chiama quindi la routine appropriata restituita nell'interfaccia .
Ad esempio, per scrivere spazio di configurazione da DISPATCH_LEVEL un driver può chiamare IRP_MN_QUERY_INTERFACE durante l'inizializzazione del driver per ottenere l'interfaccia BUS_INTERFACE_STANDARD dal driver del bus padre. Il driver invia la query IRP dal PASSIVE_LEVEL IRQL. Successivamente, dal codice in IRQL DISPATCH_LEVEL, il driver chiama la routine appropriata restituita nell'interfaccia, ad esempio la routine Interface.SetBusData .
Requisiti
Intestazione |
Wdm.h (include Wdm.h, Ntddk.h o Ntifs.h) |