Ordine di caricamento del filtro del file system
Il sistema operativo Windows carica i driver di filtro del file system in base a:
- Tipo di avvio del driver, in cui ogni tipo di avvio rappresenta le fasi di avvio di un sistema.
- Gruppi di ordini di carico per i driver di filtro del file system caricati all'avvio del sistema. I driver minifiltro necessitano del concetto di gruppi di ordini di carico per l'interoperabilità con i driver di filtro del file system legacy. Un driver ninifilter può essere caricato in qualsiasi momento.
È necessario comprendere i tipi di avvio del driver e i gruppi di ordini di carico prima di esplorare quando e come vengono caricati i driver di filtro del file system durante la sequenza di avvio del sistema.
Tipi di avvio driver
Il tipo di avvio di un driver in modalità kernel specifica se il driver deve essere caricato durante o dopo l'avvio del sistema. Esistono cinque possibili tipi di avvio:
Tipo start | Descrizione |
---|---|
SERVICE_BOOT_START (0x00000000) | Indica un driver avviato dal caricatore del sistema operativo. I driver di filtro del file system usano in genere questo tipo di avvio o SERVICE_DEMAND_START. I filtri del file system legacy devono usare questo tipo di avvio. Per altre informazioni, vedere Gruppi di ordini di carico del filtro del file system. |
SERVICE_SYSTEM_START (0x00000001) | Indica un driver avviato durante l'inizializzazione del sistema operativo. Questo tipo di avvio viene usato dal sistema di riconoscimento del file system. Ad eccezione dei file system elencati in "SERVICE_DISABLED", i file system (inclusi i componenti del file system di rete) usano in genere questo tipo di avvio o SERVICE_DEMAND_START. Questo tipo di avvio viene usato anche dai driver di dispositivo per i dispositivi PnP enumerati durante l'inizializzazione del sistema, ma non necessari per caricare il sistema. |
SERVICE_AUTO_START (0x00000002) | Indica un driver avviato da Service Control Manager durante l'avvio del sistema. Raramente usato. |
SERVICE_DEMAND_START (0x00000003) | Indica un driver avviato su richiesta, da PnP Manager (per i driver di dispositivo) o da Service Control Manager (per file system e driver di filtro del file system). |
SERVICE_DISABLED (0x00000004) | Indica un driver non avviato dal caricatore del sistema operativo, da Service Control Manager o da PnP Manager. Usato dai file system caricati da un sistema di riconoscimento del file system (tranne quando sono il file system di avvio) o da un altro file system per EFS. Tali file system includono CDFS, EFS, FastFat, NTFS e UDFS. Usato anche per disabilitare temporaneamente un driver durante il debug. |
Tutti i driver che specificano un tipo di inizio di SERVICE_BOOT_START vengono caricati prima che i driver con un tipo iniziale di SERVICE_SYSTEM_START o SERVICE_AUTO_START. All'interno di ogni categoria di tipo iniziale, il gruppo di ordini di carico determina quando verranno caricati i driver di filtro del file system (e i driver di filtro legacy).
Specifica del tipo di avvio
Un writer di driver può specificare il tipo di avvio per un driver in fase di installazione in uno dei modi seguenti:
Specificando il tipo di avvio desiderato per la voce StartType nella sezione service-install-section a cui fa riferimento una direttiva AddService nel file INF del driver. Questo metodo è descritto nella sezione ServiceInstall di Creazione di un file INF per un driver di filtro.
Passando il tipo di avvio desiderato per il parametro dwStartType quando si chiama CreateService o ChangeServiceConfig da un programma di installazione in modalità utente. Questo metodo è descritto nelle voci di riferimento per CreateService e ChangeServiceConfig nella documentazione di Microsoft Windows SDK.
Gruppi di ordini di carico driver
All'interno del SERVICE_BOOT_START e SERVICE_SYSTEM_START tipi di avvio, il gruppo di ordini di carico di ogni driver specifica l'ordine relativo in cui i driver.
I driver il cui tipo di avvio è SERVICE_BOOT_START vengono chiamati driver boot (o boot-start). I filtri che sono driver di avvio appartengono in genere a uno dei gruppi di ordini di carico FSFilter. Questi gruppi di ordini di carico sono descritti in dettaglio in Gruppi di ordini di carico per i driver di filtro del file system.
Anche il driver il cui tipo di avvio è SERVICE_SYSTEM_START vengono caricati nell'ordine dei gruppi di ordini di carico a cui appartengono. Tuttavia, non viene caricato alcun driver di avvio del sistema finché non vengono caricati tutti i driver di avvio.
I gruppi di ordini di carico vengono ignorati per i driver il cui tipo di avvio è SERVICE_AUTO_START, SERVICE_DEMAND_START o SERVICE_DISABLED.
Un elenco ordinato completo dei gruppi di ordini di carico è disponibile nella sottochiave ServiceGroupOrder della chiave del Registro di sistema HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control .
Lo stesso ordinamento del gruppo di carico viene usato per i driver SERVICE_BOOT_START e SERVICE_SYSTEM_START. Tuttavia, tutti i driver SERVICE_BOOT_START vengono caricati e avviati prima del caricamento di qualsiasi driver SERVICE_SYSTEM_START.
Specifica del gruppo di ordini di carico
Un writer di driver può specificare il gruppo di ordini di carico per un driver in fase di installazione in uno dei modi seguenti:
Specificando il gruppo di ordini di carico desiderato per la voce LoadOrderGroup nella sezione service-install-section a cui fa riferimento una direttiva AddService nel file INF del driver. Questo metodo è descritto nella sezione ServiceInstall di Creazione di un file INF per un driver di filtro.
Passando il tipo di avvio desiderato per il parametro lpLoadOrderGroup quando si chiama CreateService o ChangeServiceConfig da un programma di installazione in modalità utente. Questo metodo è descritto nelle voci di riferimento per CreateService e ChangeServiceConfig nella documentazione di Microsoft Windows SDK.
Per informazioni più generali sull'ordine di carico dei driver e sui gruppi di ordini di carico, vedere Specifica dell'ordine di carico del driver.
Regole per il caricamento di un driver di filtro
Le regole seguenti relative al tipo di avvio e ai gruppi di ordini di carico determinano quando verrà caricato un driver di filtro:
Un driver di filtro che specifica un particolare tipo di avvio e un gruppo di ordini di carico viene caricato contemporaneamente a tutti gli altri driver di filtro nel tipo di avvio e nel gruppo di ordini di carico.
All'interno di ogni gruppo di ordini di carico, i driver di filtro minifiltro e legacy vengono in genere caricati in ordine casuale. Questo caso in genere comporta il caricamento dei driver in base all'ordine in cui è stato installato il driver.
Se un driver di filtro minifiltro o legacy non specifica un gruppo di ordini di carico, viene caricato dopo tutti gli altri driver dello stesso tipo di avvio che specificano un gruppo di ordini di carico.