Codici di funzione principali IRP
Ogni percorso dello stack I/O specifico del driver (IO_STACK_LOCATION) per ogni IRP contiene un codice di funzione principale (IRP_MJ_XXX), che indica al driver l'operazione o il driver del dispositivo sottostante deve eseguire per soddisfare la richiesta di I/O. Ogni driver in modalità kernel deve fornire routine di invio per i codici di funzione principali che deve supportare.
Le operazioni specifiche eseguite da un driver per un determinato codice IRP_MJ_XXX dipendono in qualche modo dal dispositivo sottostante, in particolare per le richieste di IRP_MJ_DEVICE_CONTROL e IRP_MJ_INTERNAL_DEVICE_CONTROL . Ad esempio, le richieste inviate a un driver da tastiera sono necessariamente diverse da quelle inviate a un driver su disco. Tuttavia, il gestore di I/O definisce i parametri e il contenuto della posizione dello stack I/O per ogni codice di funzione principale definito dal sistema.
Ogni driver di livello superiore deve configurare la posizione dello stack di I/O appropriata in IRPs per il driver di livello inferiore successivo e chiamare IoCallDriver, con ogni IRP di input o con un'IRP creata dal driver (se il driver di livello superiore è incluso nell'IRP di input). Di conseguenza, ogni driver intermedio deve fornire una routine di invio per ogni codice di funzione principale gestito dal driver del dispositivo sottostante. In caso contrario, un nuovo driver intermedio interromperà la catena ogni volta che un'applicazione o un driver di livello più alto tenta di inviare una richiesta di I/O al driver di dispositivo sottostante.
I driver del file system e i driver di filtro del file system legacy gestiscono anche un subset obbligatorio di codici di funzione definiti dal sistema IRP_MJ_XXX, alcuni con codici di funzione subordinati IRP_MN_XXX. Per altre informazioni su come gestire questi ip di integrazione, vedere Codici di funzione principali IRP per i driver del file system e i driver di filtro FS legacy.
I driver gestiscono i provider di accesso impostati con alcuni o tutti i codici di funzione principali seguenti:
IRP_MJ_INTERNAL_DEVICE_CONTROL
I parametri di input e output descritti in questa sezione sono i parametri specifici della funzione nell'IRP.
Per altre informazioni sui provider di servizi di integrazione, vedere Gestione dei provider di servizi di integrazione.