Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O sistema operacional Windows carrega drivers de filtro do sistema de arquivos com base em:
- O tipo de início do driver, onde cada tipo de início representa as fases de inicialização de um sistema.
- Os grupos de ordem de carregamento para drivers de filtro do sistema de arquivos que são carregados durante a inicialização do sistema. Os drivers de minifiltro precisam do conceito de grupos de ordem de carga para interoperabilidade com drivers de filtro de sistema de arquivos herdados. Um driver ninifilter pode ser carregado a qualquer momento.
É necessário entender os tipos de início de drivers e os grupos de ordem de carregamento antes de explorar quando e como os drivers de filtro do sistema de arquivos são carregados durante a sequência de inicialização do sistema.
Tipos de partida do driver
O tipo de início de um driver de modo kernel especifica se o driver deve ser carregado durante ou após a inicialização do sistema. Existem cinco tipos de arranque possíveis:
| Tipo de início | Descrição |
|---|---|
| SERVICE_BOOT_START (0x00000000) | Indica um driver iniciado pelo carregador do sistema operacional (SO). Os drivers de filtro do sistema de arquivos geralmente usam esse tipo de inicialização ou SERVICE_DEMAND_START. Os filtros de sistema de ficheiros herdados devem usar este tipo de arranque. Para obter mais informações, consulte Grupos de ordem de carregamento do filtro do sistema de arquivos. |
| SERVICE_SYSTEM_START (0x00000001) | Indica um driver iniciado durante a inicialização do sistema operacional. Esse tipo de início é usado pelo reconhecedor do sistema de arquivos. Exceto para os sistemas de arquivos listados em "SERVICE_DISABLED", os sistemas de arquivos (incluindo componentes do sistema de arquivos de rede) geralmente usam este tipo de arranque ou SERVICE_DEMAND_START. Esse tipo de início também é usado por drivers de dispositivo para dispositivos PnP que são enumerados durante a inicialização do sistema, mas não são necessários para carregar o sistema. |
| SERVICE_AUTO_START (0x00000002) | Indica um driver iniciado pelo Service Control Manager durante a inicialização do sistema. Raramente usado. |
| SERVICE_DEMAND_START (0x00000003) | Indica um driver iniciado sob demanda, pelo PnP Manager (para drivers de dispositivo) ou pelo Service Control Manager (para sistemas de arquivos e drivers de filtro de sistema de arquivos). |
| SERVICE_DISABLED (0x00000004) | Indica um driver que não é iniciado pelo carregador do sistema operacional, Service Control Manager ou PnP Manager. Usado por sistemas de ficheiros que são carregados por um reconhecedor de sistemas de ficheiros (exceto quando são o sistema de ficheiros de arranque) ou por outro sistema de ficheiros para EFS. Esses sistemas de arquivos incluem CDFS, EFS, FastFat, NTFS e UDFS. Também usado para desativar temporariamente um driver durante a depuração. |
Todos os drivers que especificam um tipo inicial de SERVICE_BOOT_START são carregados antes dos drivers com um tipo inicial de SERVICE_SYSTEM_START ou SERVICE_AUTO_START. Dentro de cada categoria de tipo inicial, o grupo de ordem de carga determina quando os drivers de filtro do sistema de arquivos (e os drivers de filtro herdados) serão carregados.
Especificando o tipo de início
Um autor de driver pode especificar o tipo de início para um driver no momento da instalação de uma das seguintes formas:
Especificando o tipo de arranque desejado para a entrada StartType na secção de instalação de serviço mencionada por uma diretiva AddService no ficheiro INF do driver. Esse método é descrito na seção ServiceInstall de Criando um arquivo INF para um driver de filtro.
Passando o tipo de início desejado para o parâmetro dwStartType ao chamar CreateService ou ChangeServiceConfig de um programa de instalação de modo de usuário. Esse método é descrito nas entradas de referência para CreateService e ChangeServiceConfig na documentação do SDK do Microsoft Windows.
Grupos de ordem de carregamento do driver
Dentro dos tipos de início SERVICE_BOOT_START e SERVICE_SYSTEM_START, o grupo que define a ordem de carregamento de cada driver especifica a sequência relativa na qual os drivers são carregados.
Os drivers cujo tipo de início é SERVICE_BOOT_START são chamados de drivers de inicialização (ou boot-start). Os filtros que são drivers de inicialização geralmente pertencem a um dos grupos de ordem de carga FSFilter. Esses grupos de ordem de carga são descritos em detalhes em Grupos de ordem de carga para drivers de filtro do sistema de arquivos.
Driver cujo tipo de início é SERVICE_SYSTEM_START também são carregados na ordem dos grupos de ordem de carga aos quais pertencem. No entanto, nenhum driver de arranque do sistema é carregado até que todos os drivers de inicialização sejam carregados.
Os grupos de ordem de carregamento são ignorados para drivers cujo tipo de início seja SERVICE_AUTO_START, SERVICE_DEMAND_START ou SERVICE_DISABLED.
Uma lista completa e ordenada de grupos de ordem de carregamento pode ser encontrada na subchave ServiceGroupOrder da chave do RegistroHKEY_LOCAL_MACHINE\System\CurrentControlSet\Control .
A mesma ordem de grupo de carga é usada para os controladores SERVICE_BOOT_START e SERVICE_SYSTEM_START. No entanto, todos os drivers SERVICE_BOOT_START são carregados e iniciados antes de os drivers SERVICE_SYSTEM_START serem carregados.
Especificando o grupo de ordem de carga
Um programador de drivers pode especificar o grupo de ordem de carregamento para um driver no momento da instalação de uma das seguintes maneiras:
Especificando o grupo de ordem de carga desejado para a entrada LoadOrderGroup na secção service-install, referida por uma diretiva AddService no arquivo INF do driver. Esse método é descrito na seção ServiceInstall de Criando um arquivo INF para um driver de filtro.
Passando o tipo de início desejado para o parâmetro lpLoadOrderGroup ao chamar CreateService ou ChangeServiceConfig de um programa de instalação de modo de usuário. Esse método é descrito nas entradas de referência para CreateService e ChangeServiceConfig na documentação do SDK do Microsoft Windows.
Para obter mais informações gerais sobre a ordem de carregamento do driver e os grupos de ordem de carregamento, consulte Especificando a ordem de carregamento do driver.
Regras para carregar um driver de filtro
As seguintes regras sobre tipos de início e grupos de ordem de carga determinam quando um driver de filtro será carregado:
Um driver de filtro que especifica um determinado tipo de início e grupo de ordem de carga é carregado ao mesmo tempo que todos os outros drivers de filtro nesse tipo de início e grupo de ordem de carga.
Dentro de cada grupo de ordem de carga, os drivers de minifiltro e de filtro herdado são geralmente carregados de forma aleatória. Este caso normalmente resulta em drivers sendo carregados com base na ordem em que o driver foi instalado.
Se um minifiltro ou driver de filtro herdado não especificar um grupo de ordem de carga, ele será carregado depois que todos os outros drivers do mesmo tipo de início especificarem um grupo de ordem de carga.