Gestione delle sezioni di memoria
Un driver può creare un oggetto sezione chiamando ZwCreateSection, che restituisce un handle all'oggetto sezione. Usare il parametro FileHandle per specificare il file di backup o NULL se la sezione non è supportata da file. È possibile aprire altri handle all'oggetto sezione usando ZwOpenSection.
Per rendere accessibili i dati appartenenti a un oggetto sezione all'interno dello spazio indirizzi del processo corrente, è necessario eseguire il mapping di una visualizzazione della sezione. I driver possono eseguire il mapping di una visualizzazione di una sezione nello spazio degli indirizzi del processo corrente usando la routine ZwMapViewOfSection . Il parametro SectionOffset specifica l'offset di byte in cui inizia la visualizzazione all'interno della sezione e ViewSize specifica il numero di byte da eseguire il mapping.
Il parametro Protect specifica le operazioni consentite nella visualizzazione. Specificare PAGE_READONLY per una visualizzazione di sola lettura, PAGE_READWRITE per una visualizzazione di lettura/scrittura e PAGE_WRITECOPY per una visualizzazione di scrittura copiata.
Nessuna memoria fisica viene allocata per una visualizzazione finché non viene eseguito l'accesso all'intervallo di memoria virtuale. Il primo accesso dell'intervallo di memoria causa un errore di pagina; il sistema alloca quindi una pagina per contenere tale posizione di memoria. Se la sezione è supportata da file, il sistema legge il contenuto del file corrispondente a tale pagina e lo copia in memoria. Si noti che gli oggetti e le visualizzazioni di sezione inutilizzati usano alcuni pool di pagine e non a pagina per scopi di contabilità.
Dopo che un driver non usa più una visualizzazione, lo annulla eseguendo una chiamata a ZwUnmapViewOfSection. Dopo che il driver non usa più l'oggetto sezione, chiude l'handle della sezione con ZwClose. Si noti che dopo il mapping della visualizzazione e non verranno mappate altre visualizzazioni, è possibile chiamare immediatamente ZwClose nell'handle della sezione; la visualizzazione (e l'oggetto sezione) continuano a esistere fino a quando la visualizzazione non viene annullata. Questa è la procedura consigliata perché riduce il rischio che il driver non riesca a chiudere l'handle.