14 de abril de 1999 - Nesta edição:
O QUE HÁ DE NOVO NOS SISTEMAS INTERNOS
- VolumeID para Windows 9x
- EFSDump
- ListDLs para Compaq Alpha
- "Dentro do Processo de Arranque, Parte 2"
- O artigo da revista April Windows NT
- Sem crédito onde o seu devido
- Coisas não tão novas
NOTÍCIAS INTERNAS
- Win2K Driver Verifier
- Teste Y2K com Boot.ini
O QUE ESTÁ POR VIR
- Spinlocks em fila na Win2K
- Tokenmon
PATROCINADOR: SOFTWARE WINTERNALS
A Newsletter Sistemas Internos é patrocinada pela Winternals Software, na Web http://www.winternals.com. Winternals Software é o principal desenvolvedor e fornecedor de ferramentas avançadas de sistemas para Windows NT/2K. Os produtos de Software Winternals incluem FAT32 para Windows NT 4.0, Comandante ERD (capacidade de boot-disk para Windows NT) e NTRecover.
Olá a todos,
Bem-vindo à primeira edição da Newsletter Sistemas Internos. Tenho o prazer de dizer que o boletim já adquiriu 1000 assinantes desde o seu anúncio há pouco mais de uma semana.
O meu objetivo na newsletter é dar-lhe informações oportunas sobre novos utilitários e artigos que estão a aparecer na Systems Internals, além de lhe dar detalhes de informação sobre Windows internos que não têm um fórum apropriado no site da Systems Internals. Se tiver algum comentário ou sugestão sobre a newsletter, sinta-se livre para me passar em mark@.... Além disso, por favor, envie o boletim para qualquer pessoa que saiba que possa estar interessada nele. As instruções sobre a subscrição, a subscrição ou a subscrição são fornecidas no final da newsletter.
Obrigado!
- Marca
O QUE HÁ DE NOVO NOS SISTEMAS INTERNOS
VOLUMEID PARA WINDOWS 9X
Embora Windows NT e Windows 9x lhe permitam alterar a etiqueta numa unidade lógica ou disco floppy utilizando o comando "label", não fornecem meios para que possa alterar os IDs de volume que atribuem arbitrariamente quando o formato conduz. O programa VolumeID, que está disponível para Windows NT no site de Sistemas Internos há mais de um ano, acaba de ser Windows 9x. Este applet permite-lhe alterar os IDs de volume em discos rígidos e disquetes para o que quiser.
O VolumeID utiliza APIs que permitem que as aplicações leiam e escrevam diretamente para unidades lógicas, e no Win9x, unidades físicas (discos floppy), contornando os sistemas de ficheiros. No Windows NT/2K VolumeID utiliza ReadFile e WriteFile regulares para aceder a dados de unidade bruta - o truque está na forma como especifica o nome do volume a que pretende aceder. Pode descobrir como aceder a unidades físicas ou lógicas a partir de uma aplicação sob Windows NT/2K no artigo Q100027 da Base de Conhecimento da Microsoft. Para Windows acesso 9x a unidades lógicas, pode basear o seu código no código de exemplo fornecido no artigo da Base de Conhecimento da Microsoft Q174569. Se precisar de realizar o acesso direto à unidade da sua aplicação no Windows 9x, utilize o VWIN32_DIOC_DOS_INT13 Win32 IOCTL, que está documentado na MSDN.
Baixar VolumeID em http://www.sysinternals.com/misc.htm.
EFSDUMP
Windows 2000 será a estreia da tecnologia de encriptação de ficheiros incorporada da Microsoft, o Sistema de Ficheiros Encriptantes. Com o EFS surgem uma série de novas APIs para manipular ficheiros encriptados, incluindo um, QueryUsersOnEncryptedFile, que permite ver quais os utilizadores que estão registados para ter acesso a ficheiros encriptados, e quais os utilizadores que estão registados como Agentes de Recuperação para esses ficheiros. Escrevi um pequeno programa chamado EFSDump que lhe permite ver facilmente esta informação para ficheiros encriptados no seu sistema.
Embora esteja a falar de APIs do EFS, há um número de novas APIs que não foram documentadas desde a MSDN de abril, algo bastante perturbador nesta fase tardia do ciclo de lançamento Windows 2000. Mais notavelmente, OpenEncryptedFileRaw, ReadFileEncryptedRaw, WriteFileEncryptedRaw e CloseEncryptedFileRaw (todos são exportados pela ADVAPI32.DLL do Win2K) estão todos atualmente indocumentados. A utilização destas APIs é exigida por qualquer aplicação que pretenda fazer backup de ficheiros encriptados, o que significa que ou a Microsoft está a passar informações sobre eles apenas para selecionar parceiros, ou as empresas de software de backup terão de se esforçar para tirar os seus produtos da porta quando a Microsoft eventualmente os documentar publicamente. Uma coisa é certa, os desenvolvedores do programa NTBACKUP de Windows 2000 já tiveram acesso à documentação da API: o NTBACKUP do Win2K Beta 3 está a utilizar ativamente as APIs.
Se estiver interessado em internos da EFS, não se esqueça de consultar a minha próxima série de partes de junho/julho sobre EFS na minha coluna "NT Internals" na Windows NT Magazine. No artigo descrevo exatamente onde estão armazenadas as chaves FEKs (Chaves de Encriptação de Ficheiros) e o utilizador EFS, como o processo de encriptação é realizado pela NTFS, pelo controlador EFS e pelo LSASRV (Servidor do Subsistema da Autoridade de Segurança Local), e, claro, como funciona a desencriptação.
Descarregue o EFSDump com código fonte completo em http://www.sysinternals.com/misc.htm.
LISTDLLS PARA COMPAQ ALPHA
O número de utilitários disponíveis para o Alpha na Systems Internals continua a crescer. A mais recente adição é ListDLLs, um utilitário de linha de comando que permite visualizar informações DLL para executar processos. A minha ferramenta HandleEx permite-lhe ver estas informações, bem como informações sobre as pegas (ficheiros, processos, fios, objetos de sincronização) que os processos abriram, mas o HandleEx é uma ferramenta GUI pelo que nem sempre é conveniente (não pode ser executada dentro de um ficheiro de lote, por exemplo).
Está curioso sobre o rácio de downloads da versão x86 da versão típica do Systems Internals para a sua versão Alpha correspondente? É cerca de 20:1, que acompanha de perto as estimativas da indústria da base de utilizadores Alpha NT instalada como sendo 5% do total do mercado NT.
Você pode baixar ListDLLs e outras portas Alpha, incluindo HandleEx, em http://www.sysinternals.com/alpha.htm.
"DENTRO DO PROCESSO DE ARRANQUE, PARTE 2"
A minha coluna "NT Internals" de janeiro da Windows NT Magazine está agora disponível on-line através do site da Windows NT Magazine. Pode encontrar um link para ele, bem como para a Parte 1 e colunas mais antigas de "NT Internals", na página publicações da Systems Internals: http://www.sysinternals.com/publ.htm.
MEU ARTIGO DA REVISTA APRIL WINDOWS NT
Além disso, não se esqueça de dar uma olhada no meu artigo de longa-metragem na edição de abril da Windows revista NT NT, "Linux and the Enterprise". Revelo vários problemas significativos no que diz respeito às aplicações do kernel 2.2 e do servidor de rede (aplicações de "empresa"enterprise) que acabarão por impedir que esta versão do kernel do Linux concorria de frente a frente com o NT e outras variantes UNIX em termos de desempenho.
NENHUM CRÉDITO ONDE É DEVIDO
Numa nota relacionada, pode ter ouvido falar do recém-lançado D.H. Brown (uma empresa analista) sobre a capacidade da Linux como um sistema operativo empresarial. Acontece que o autor do relatório "emprestado" a um e-mail meu que alguém publicou no grupo de notícias Linux Kernel Usenet em janeiro. Se tiver acesso ao relatório e ler as páginas (44 e 45) que discutem o Linux e os multiprocessadores (o relatório não está disponível publicamente - tem de o comprar por uma quantia elevada), e depois ler o meu e-mail na Deja News, verá um paralelo direto, até pequenos detalhes.
COISAS NÃO TÃO NOVAS
Estou a usar esta secção da newsletter para apresentar alterações recentes no site do Systems Internals que pode não ter conhecimento, e/ou para fornecer mais informações sobre uma utilidade do que o que está disponível no site. Por exemplo, há umas semanas, lançámos o Filemon v4.1. Esta versão do Filemon é capaz de monitorizar tanto a atividade de Slot de Tubos nomeados como de correio sob Windows NT/2K. A melhoria do código que era necessário para suportar este foi relativamente pequena, uma vez que Os Chamados Tubos e Mailslots são implementados como controladores do sistema de ficheiros. A parte difícil (tediosa) foi descobrir os IOCTLs privados (Comandos de Controlo de E/S) que estes sistemas de ficheiros especiais suportam para que o Filemon possa mostrá-los. Você pode baixar Filemon (que funciona em Windows NT/2K e Windows 9x) emhttp://www.sysinternals.com/filemon.htm.
Se quiser saber mais sobre como o Filemon funciona internamente, consulte a minha coluna de fevereiro Windows NT Magazine "NT Internals", intitulada "Inside NT Utilities". O artigo descreve como usar Filemon, Regmon, NTFSDOS, NewSID e HandleEx, e diz-lhe um pouco sobre como funcionam.
NOTÍCIAS INTERNAS
VERIFICADOR DO CONTROLADOR WINDOWS 2000
Windows 2000 Beta 3 está a introduzir uma ajuda de desenvolvimento muito potente do condutor do dispositivo chamada Driver Verifier. Esta ferramenta funciona com código no núcleo para ganhar o controlo do seu condutor e exercê-lo para aderir às regras do modo kernel de uma forma que não era anteriormente possível. Os condutores de dispositivos buggy são de longe o contributo mais significativo para a reputação de muitas pessoas de que a NT é um sistema operativo instável, e esta ferramenta tem como objetivo reparar essa reputação, ajudando os escritores condutores a encontrar os seus bugs antes dos utilizadores.
Vários tipos de problemas subtis podem fazê-lo através de testes casuais do condutor (o tipo mais comum de testes realizados sob restrições de tempo para mercado apertados), e até mesmo escapar através de testes de stress sérios. Um tipo de problema comum do condutor é um condutor que acede à memória paged em "ELEVATED IRQL" (prioridade de interrupção elevada). Se a memória a que o condutor acede estiver fisicamente presente no momento do acesso (não foi retoque no ficheiro de paging), então o acesso ilegal passará despercebido. Liberte um condutor que viole esta regra para o mundo selvagem dos utilizadores e é obrigado a aparecer, resultando num acidente de ecrã azul.
Outro tipo de erro comum de programação do controlador é que um desenvolvedor escreva o código com o pressuposto de que a memória paged e/ou não paged estará sempre disponível, ou seja, não verificam os valores de devolução das alocações. Se a piscina se esgotar e o condutor receber um endereço de tampão NU, o condutor desresferia alegremente o sistema num Ecrã Azul. Embora a exaustão da piscina seja uma ocorrência rara, não é algo que deva dar a um administrador de sistema um ecrã azul. Um bug de memória relacionado é um tampão invadido ou sub-atropelado, onde um condutor lê ou escreve fora de um tampão que alocado.
O Verificador de Controlador aborda os problemas do IRQL substituindo as chamadas para todas as funções que manipulam os IRQLs num controlador (por KeRaiseIrql exemplo, KeAcquireSpinLock ) com as correspondentes funções de núcleo do verificador VerifierKeRaiseIrql (, ) no momento em que VerifierKeAcquireSpinLock o condutor carrega. Sempre que o IRQL é elevado para DISPATCH_LEVEL ou mais alto, o código verificador chama uma função de Gestor de Memória interna, MmTrimAllPageableSystemMemory() para forçar todos os dados paged fora da memória física. Assim, no instante em que um condutor infringe a regra IRQL de não aceder a dados ou códigos pageables de DISPATCH_LEVEL ou superior, o Gestor de Memória detetará a tentativa de aceder a uma página não presente e lançará um Ecrã Azul. Isto permite que um desenvolvedor apanhe rapidamente este tipo de insetos antes que o condutor saia pela porta, uma vez que pode depurar o acidente e ver o seu motorista sentado na pilha de avarias.
O Verificador de Controlo do Controlador realiza testes de utilização da memória com o mesmo remendando a tabela de importação do controlador a verificar de modo a que o controlador chame funções de memória do verificador em vez das versões padrão do núcleo. Por exemplo, uma chamada ExAllocatePool é substituída por uma chamada para VerifierAllocatePool . Existem duas técnicas que o Verificador usa para ajudar um desenvolvedor a encontrar rapidamente bugs de memória. A primeira é que usa um conjunto especial de memória onde uma página de guarda (uma página de guarda é uma página inválida) é colocada logo após o final do tampão. Além disso, a parte da página em que o tampão é atribuído que precede o tampão é preenchida com uma assinatura. As ultrapassagens que estão dentro de uma página além do final de um tampão são detetadas imediatamente, uma vez que resultarão em falhas ilegais na página do guarda. As subdesequins que envolvem modificação de dados antes de um tampão são detetadas pelo Verificador quando o condutor negoceia a memória, uma vez que a assinatura terá mudado.
Os condutores que esperam sempre que a piscina não vazia seja enganada para gerar acidentes pelo Verificador com a utilização da sua "injeção de falha de memória". Pode configurar o Verificador para falhar aleatoriamente as alocações de piscina de um motorista.
Existem um punhado de outros tipos de erros que o Verificador de Condutor verifica, incluindo a consistência irp (Pacote de Pedido de I/O) e a proteção apenas de leitura do sistema e das páginas de código do condutor.
Se você é um desenvolvedor de dispositivos, você estará fazendo a si mesmo, a sua empresa, e a comunidade NT um favor testando com o Verificador. Note que também deve testar os seus controladores NT 4.0 que são compatíveis com o Win2K assim que tiver acesso ao Verificador de Condutores (a maioria dos desenvolvedores irá obtê-lo com o envio da MSDN de Win2K Beta 3 no final de abril ou maio).
Pode saber mais sobre o Verificador de Motoristas em https://docs.microsoft.com/windows-hardware/drivers/devtest/driver-verifier
TESTE Y2K COM BOOT.INI
Se verificar frequentemente o Web site do Systems Internals, provavelmente já deve ter conhecimento do novo win2K sem documentos BOOT.INI comutadores, /ANO. Não mencionei no Site que o switch também é suportado pelo NT 4.0 Service Pack 4. Este switch permite-lhe falsificar NT e todo o software de um sistema NT para pensar que é um ano diferente. Por exemplo, /ANO=2001 faria o sistema pensar que era 2001 em vez de 1999. Assim, o comutador é ideal para testar problemas Y2K em qualquer nível de software, e a vantagem de usá-lo em vez de repor manualmente o relógio BIOS (através do Applet clock, por exemplo) é que a mudança é temporária e só está ativa quando inicia uma instalação que tem o interruptor presente na sua linha BOOT.INI. Isto facilita a criação de uma instalação Y2K especial simplesmente retirando uma linha de arranque existente a partir do BOOT.INI, duplicando-a e adicionando o interruptor /YEAR.
O QUE ESTÁ POR VIR
Espere o próximo boletim em algumas semanas. A dica interna que da próxima vez terei para ti é sobre o Queued Spinlocks, um novo tipo de spinlock que Windows 2000 usa para os seus spinlocks globais. Aqui estão os spinlocks globais que existem em Windows 2000:
- KiDispatcherLock: o bloqueio da base de dados do programador
- KiContext-SwapLock: o bloqueio de troca de piso
- MmPfnLock: o bloqueio da base de dados de quadros de página física
- MmSystemSpaceLock: a fechadura espacial do endereço do modo kernel
- CcMasterSpinLock: o spinlock global do Gestor de Cache
- CcVacbSpinLock: o bloqueio de matriz de mapeamento do Gestor cache
Em vez de utilizar spinlocks regulares de kernel (KeAcquireSpinLock, KeReleaseSpinLock) para estes bloqueios globais como NT 4.0 fez, o kernel Windows 2000 usa spinlocks em fila (KeAcquireQueuedSpinLock, KeReleaseQueuedSpinLock). Estas fechaduras têm algumas propriedades interessantes que minimizam a atividade de autocarros em SMPs. Da próxima vez vou dizer-te como os spinlocks são implementados.
Em breve na Systems Internals está a Tokenmon, mais uma ferramenta de monitorização. A Tokenmon irá mostrar-lhe informações detalhadas sobre toda a atividade relacionada com token no seu sistema, incluindo logins, logouts, uso de privilégios e personificação.
Obrigado por ler a Newsletter Sistemas Internos.
Publicado quarta-feira, 14 de abril de 1999 19:16 pm by ottoh
[Newsletters Archive ^][Volume 1, Número 2 ]
[Newsletters Archive ^][Volume 1, Número 2 ]