Creazione di una pagina dei driver

Per impostazione predefinita, il linker assegna nomi come ".text" e ".data" alle sezioni di codice e dati di un file di immagine del driver. Quando il driver viene caricato, il gestore di I/O rende queste sezioni non in pagina. Una sezione non a pagina è sempre residente in memoria.

Uno sviluppatore di driver ha la possibilità di rendere le parti designata di un driver impaginabile in modo che Windows possa spostare queste parti nel file di paging quando non sono in uso. Per rendere pagina un codice o una sezione dati, lo sviluppatore di driver assegna un nome che inizia con "PAGE" alla sezione. Il gestore di I/O controlla i nomi delle sezioni quando carica un driver. Se un nome di sezione inizia con "PAGE", il gestore di I/O rende la sezione paginabile.

Il codice eseguito in IRQL >= DISPATCH_LEVEL deve essere residente in memoria. Vale a dire, questo codice deve essere in un segmento non modificabile o in un segmento paginabile bloccato in memoria. Se il codice in esecuzione in IRQL >= DISPATCH_LEVEL causa un errore di pagina, si verifica un controllo di bug. I driver possono usare la macro PAGED_CODE per verificare che le funzioni paginabili vengano chiamate solo a irQLs appropriati.

Se una sezione codici o dati è paginabile, il driver può bloccare la sezione in memoria chiamando la routine MmLockPagableCodeSection o MmLockPagableDataSection . La sezione rimane bloccata finché il driver chiama la routine MmUnlockPagableImageSection per sbloccarla. Mentre la sezione paginabile è bloccata, si comporta come una sezione non paginata.

Per informazioni su come assegnare nomi a sezioni di codice e dati, vedere MmLockPagableCodeSection e MmLockPagableDataSection.

Questa sezione include gli argomenti seguenti:

Quando deve essere possibile paginare codice e dati?

Creazione di codice driver o pagina dati