Você pode, mas os sistemas operacionais não podem. Ambas as unidades flash e discos rígidos são lidos (e escritos) por setores e apenas setores. O driver dispositivo geralmente aplica esta restrição ao nível superior, e também lê todo o setor com, e. O superbloco NTFS é muito mais rápido do que ler o mesmo setor várias vezes implicitamente por causa de um driver que traduz solicitações de "byte range" para solicitações de "setor", portanto drivers de sistema de arquivos também realizam operações de leitura e gravação por setores (ou qualquer multiplicidade de setores: existe uma tecnologia chamada DMA - acesso direto à memória - que permite ler e gravar grandes rajadas de setores sem usar o tempo da CPU, tornando o acesso ao disco muito rápido).
Flash chips (não unidades) são tecnicamente divididos em outros blocos de dados por dois motivos:
- As fichas Flash podem ser lidas de qualquer posição para qualquer posição, mas gravadas apenas por blocos de tamanho fixo e posicionados.
- Flash chips contêm mais dados e espaço livre do que você pensa, porque é normal para um chip ganhar alguns setores com falha durante o trabalho. Eles são remapeados para outros setores por controlador de armazenamento na unidade USB e não são visíveis para o SO como setores defeituosos; Na verdade, não existe uma maneira de verificar se eles existem. Novamente, os controladores de memória flash estão sempre equipados com algoritmos que permitem substituir facilmente os setores com falha sem qualquer aviso prévio para as camadas superiores.
O documento NTFS que você está lendo não sugere leitura dessas variáveis por bytes. Você precisa lê-los em setores inteiros em que eles estão contidos e, então, endereçar um determinado byte na memória.
Também a memória recente (virtualmente qualquer uma em uma máquina compatível com 386) não é endereçada por bytes . Em vez disso, ele é endereçado por 32 (raramente), 64 e mesmo palavras de 128 bits. E quando você está lendo um byte no meio desse processador de texto, realmente solicita a palavra inteira e, em seguida, seleciona o byte que você precisa. Há até mesmo uma exceção de hardware em alguns processadores de 64 bits que surge quando você tenta acessar um ponteiro não alinhado (pelo limite de palavra de 64 bits).