Pilhas de dispositivos de armazenamento, volumes de armazenamento e pilhas do sistema de arquivos

Observação

Para obter a confiabilidade e o desempenho ideais, use drivers de minifiltro do sistema de arquivos com suporte do Gerenciador de Filtros em vez de drivers de filtro do sistema de arquivos herdados. Para portar seu driver herdado para um driver de minifiltro, consulte Diretrizes para portabilidade de drivers de filtro herdados.

Antes de explorar como os drivers de filtro herdados do sistema de arquivos são anexados a sistemas de arquivos e volumes, é necessário entender a relação entre pilhas de dispositivos de armazenamento, volumes de armazenamento e pilhas do sistema de arquivos.

Pilhas de dispositivos de armazenamento

A maioria dos drivers de armazenamento são drivers de dispositivo PnP, que são carregados e gerenciados pelo Gerenciador de PnP. Os dispositivos de armazenamento são representados na árvore de dispositivos PnP, que contém um nó de dispositivo, ou devnode, para cada dispositivo físico ou lógico no computador. É importante observar que os sistemas de arquivos e os drivers de filtro do sistema de arquivos não são drivers de dispositivo PnP; portanto, a árvore de dispositivos PnP não contém nenhum devnodes para eles.

O devnode para um dispositivo de armazenamento específico contém a pilha de dispositivos de armazenamento para o dispositivo; essa é a cadeia de objetos de dispositivo anexados que representam os drivers de dispositivo de armazenamento do dispositivo. Como um dispositivo de armazenamento, como um disco, pode conter um ou mais volumes lógicos (partições ou volumes dinâmicos), a pilha do dispositivo de armazenamento em si geralmente se parece mais com uma árvore do que com uma pilha. A raiz dessa árvore é um FDO (objeto de dispositivo funcional) para um adaptador de armazenamento ou para outra pilha de dispositivos integrada à pilha de armazenamento. As folhas dessa árvore são os PDOs (objetos de dispositivo físico) para os volumes lógicos, também chamados de volumes de armazenamento, nos quais os volumes do sistema de arquivos podem ser montados.

Para diagramas e descrições de algumas pilhas de dispositivos de armazenamento típicas, consulte as seções a seguir do Guia de Design de Dispositivos de Armazenamento:

Volumes de armazenamento

Um volume é um dispositivo de armazenamento, como disco fixo, disquete ou CD-ROM, formatado para armazenar diretórios e arquivos. Um grande volume pode ser dividido em mais de um volume lógico, também chamado de partição. Cada volume lógico é formatado para uso por um sistema de arquivos baseado em mídia específico, como NTFS, FAT ou CDFS.

Um volume de armazenamento ou objeto de dispositivo de armazenamento é um objeto de dispositivo – geralmente um PDO (objeto de dispositivo físico) – que representa um volume lógico para o sistema. O objeto do dispositivo de armazenamento reside na pilha do dispositivo de armazenamento, mas não é necessariamente o objeto de dispositivo mais alto da pilha.

Quando um sistema de arquivos é montado em um volume de armazenamento, ele cria um VDO (objeto de dispositivo de volume do sistema de arquivos) para representar o volume para o sistema de arquivos. O VDO do sistema de arquivos é montado no objeto do dispositivo de armazenamento por meio de um objeto compartilhado chamado VPB ( bloco de parâmetros de volume ).

Mount Manager

O Mount Manager faz parte do sistema de E/S responsável por gerenciar informações de volume de armazenamento, como nomes de volume, letras de unidade e pontos de montagem de volume. Quando um novo volume de armazenamento é adicionado ao sistema, o Mount Manager é notificado sobre sua chegada de qualquer uma das seguintes maneiras:

  • O driver de classe que criou o volume de armazenamento chama IoRegisterDeviceInterface para registrar uma nova interface na classe de interface MOUNTDEV_MOUNTED_DEVICE_GUID. Quando isso acontece, o mecanismo de notificação da interface do dispositivo Plug and Play alerta o Mount Manager sobre a chegada do volume ao sistema.

  • O driver do volume de armazenamento envia ao Mount Manager uma solicitação de IRP_MJ_DEVICE_CONTROL, especificando IOCTL_MOUNTMGR_VOLUME_ARRIVAL_NOTIFICATION para o código de controle de E/S. Essa solicitação pode ser criada chamando IoBuildDeviceIoControlRequest.

Nome do Volume Exclusivo

O Mount Manager responde à chegada de um novo volume de armazenamento consultando o driver de volume para obter as seguintes informações:

  • O nome do objeto do dispositivo não persistente do volume (ou nome de destino), localizado no diretório Dispositivo da árvore de objetos do sistema (por exemplo: "\Device\HarddiskVolume1")

  • O GUID (identificador global exclusivo) do volume, também chamado de nome de volume exclusivo

  • Um nome de link simbólico persistente sugerido para o volume, como uma letra de unidade (por exemplo, "\DosDevices\D:")

Para obter mais informações sobre a interação entre drivers de armazenamento e o Mount Manager, consulte Suporte a solicitações do Mount Manager em um driver de classe de armazenamento.

Pilhas do sistema de arquivos

Os drivers do sistema de arquivos criam dois tipos diferentes de objetos de dispositivo: CDO (objetos de dispositivo de controle) e VDO (objetos de dispositivo de volume). Uma pilha do sistema de arquivos consiste em um desses objetos de dispositivo, juntamente com qualquer objeto de dispositivo de filtro para drivers de filtro do sistema de arquivos anexados a ele. O objeto de dispositivo do sistema de arquivos sempre forma a parte inferior da pilha.

CDOs do sistema de arquivos

Os CDOs do sistema de arquivos representam sistemas de arquivos inteiros, em vez de volumes individuais, e são armazenados na fila global do sistema de arquivos. Um sistema de arquivos cria um ou mais CDOs nomeados em sua rotina driverEntry . Por exemplo, o FastFat cria dois CDOs: um para mídia fixa e outro para mídia removível. O CDFS cria apenas um CDO, pois tem apenas uma mídia removível.

Os CDOs do sistema de arquivos precisam ser nomeados. Isso ocorre porque os drivers de filtro do sistema de arquivos, bem como muitas rotinas de suporte do modo kernel, dependem dessa diferença entre VDOs e CDOs como uma maneira de diferenciá-los.

VDOs do sistema de arquivos

Os VDOs do sistema de arquivos representam volumes montados por sistemas de arquivos. Um sistema de arquivos cria um VDO quando monta um volume, geralmente em resposta a uma solicitação de montagem de volume. Ao contrário de um CDO, um VDO é sempre associado a um dispositivo de armazenamento lógico ou físico específico.

Observação

Ao contrário dos CDOs, os VDOs nunca devem ser nomeados, pois nomear um objeto de dispositivo de volume criaria uma falha de segurança.