Se você conhece internamente o Windows, corrija meus erros, por favor.
"Montagem" consiste em duas partes principais, que são as mesmas em ambos os sistemas, mas sua separação é um pouco diferente:
- acessando o sistema de arquivos no disco;
- atribuindo um caminho ao sistema de arquivos.
No Linux, a mesma função mount()
faz as duas tarefas; um sistema de arquivos deve ser montado explicitamente em um caminho escolhido pelo usuário e permanece aberto enquanto estiver montado em pelo menos um caminho (possivelmente mais). Depois que todos os caminhos para esse sistema de arquivos forem umount()
ed, ele será fechado.
O Windows monta volumes automaticamente quando o volume aparece - ele abre imediatamente o sistema de arquivos e atribui uma letra de unidade e / ou quaisquer outros nomes configurados a ele.
Um disco pode ser temporariamente "desmontado" usando o FSCTL_LOCK_VOLUME
e / ou FSCTL_DISMOUNT_VOLUME
ioctl funções - por exemplo, durante a execução de um chkdsk
- mas é automaticamente montado novamente quando o programa o desbloqueia ou sai. Esse comportamento pode ser visto como algo oposto ao Linux. Como a desmontagem de um sistema de arquivos é temporária, ele retém os nomes atribuídos, mesmo quando desmontados. (A função "Remover com segurança" desmonta o sistema de arquivos e desativa o dispositivo subjacente, para evitar que o Windows veja o sistema de arquivos e o remonte).
Um sistema de arquivos pode ter vários nomes atribuídos a ele:
-
Letras de unidade (
A:
,C:
,[:
) - atribuídas automaticamente a novos discos e perdidas na reinicialização, embora o Windows lembre de atribuições configuradas pelo usuário. Dessa forma, eles são semelhantes aos pontos de montagem Unix.(Letras de unidade também podem ser atribuídas a dispositivos arbitrários, incluindo sistemas de arquivos de rede suportados pelo Windows. Você pode ver seus destinos em
\GLOBAL??\
e\Sessions\<session>\DosDevices\<loginid>\
em WinObj .)Observação: as letras de unidade normalmente são em todo o sistema, mas também podem ser atribuídas em toda a sessão usando
subst
ouDefineDosDevice()
e, sim, aceita[:
. As atribuições de toda a sessão nunca são armazenadas em qualquer lugar e desaparecem na reinicialização. -
Pontos de montagem de pastas (
C:\Disks\Music
) - um sistema de arquivos pode ser montado em qualquer diretório arbitrário, como no Unix; no entanto, eles são realmente armazenados no disco de destino, na forma de pontos de nova análise (uma forma mais poderosa de links simbólicos) que se referem ao disco montado pelo nome do volume .(Diferentes tipos de pontos de nova análise também existem; alguns padrões são pontos de montagem, links simbólicos, junções de diretório.)
-
Caminhos de GUID de volume (
\?\Volume{710308c0-978e-11e1-95bc-806d6172696f}\
) (pelo menos é assim que parece ser chamado) - caminhos especiais na Espaço de nomes do Win32\?\
, contendo um UUID que o Windows atribui a esse volume em particular nesse sistema Windows específico. Eles não podem ser alterados. Eles são listados pormountvol
ou em\GLOBAL??\
no WinObj. Ao contrário das letras de unidade, elas são as mesmas para todos os usuários. -
Caminhos da interface do dispositivo
\?\STORAGE#Volume#<something>Signature<hex>Offset<hex>Length<hex>#<uuid>\
Diferentemente de um caminho GUID de volume, cada volume tem exatamente um caminho de interface de dispositivo.- Nome do dispositivo de volume
\Device\HarddiskVolume23
- ao contrário de todos os anteriores, que são apenas links simbólicos, isso nomeia diretamente o volume. Você sabe disso porque está no namespace\Device
, não no namespace\?
. Isso também significa que você não pode usá-lo com funções comoCreateFile
.
- Nome do dispositivo de volume
diskmgmt.msc
, mountvol
e diskpart
podem gerenciar as letras das unidades e os pontos de montagem.
Mesmo quando um volume não tem letras de unidade e não é "montado" em nenhuma pasta, ele permanece aberto e seu conteúdo ainda pode ser acessado por meio do nome do volume. por exemplo,
\?\Volume{710308c0-978e-11e1-95bc-806d6172696f}\Windows\Explorer.exe