[Arquivo de Boletins Informativos ^] [< Volume 3, Número 1] [Volume 4, Número 1 >]
O Boletim Informativo Interno de Sistemas Volume 3, Número 2
http://www.sysinternals.com
Copyright (C) 2001 Mark Russinovich
20 de agosto de 2001 - Nesta edição:
EDITORIAL
NOVIDADES NO SYSINTERNALS
- Gerenciador de Processos v5.1
- Handle v2.0
- PsInfo v1.1
- PsExec v1.24
- PsLogList v2.07
- Layout da Origem do Windows XP
- DebugView v4.13
- PageDefrag v2.1, Contig v1.41
- Sysinternals na Microsoft
INFORMAÇÕES INTERNAS
- Dentro do Windows 2000, o DVD interativo
- Marque a data: Russinovich e Solomon ensinam juntos em Austin
- Gerenciamento de disco da linha de comando
- Slides online do WINHEC 2001
- Novas interfaces de driver do filtro do sistema dos arquivos no XP
- Falha no Windows com um toque de tecla
- Pré-busca do Windows XP
- Conexões do Windows .NET
O QUE ESTÁ POR VIR
- Minhas Experiências do Itanium
PATROCINADOR: WINTERNALS SOFTWARE
O Boletim Informativo Sysinternals é patrocinado pela Winternals Software, na Web em http://www.winternals.com. O Winternals Software é o desenvolvedor líder e provedor de ferramentas de sistemas avançados para Windows NT/2K/XP. Os produtos Winternals Software incluem FAT32 para Windows NT 4.0, NTFSDOS Professional Edition (um driver NTFS de leitura/gravação para DOS) e Recuperação Remota.
A Winternals tem o orgulho de anunciar o Defrag Commander versão 1.31, o desfragmentador empresarial mais rápido e completo disponível. Agora você pode gerenciar agendamentos de desfragmentação em toda a sua empresa windows a partir de um snap-in MMC simples , sem precisar instalar nenhum software cliente em seus sistemas NT ou Windows 2000. Uma licença de 10 sistemas está disponível para compra online por apenas US$ 169, e descontos agressivos de quantidade estão disponíveis. Visite http://www.winternals.com/39 para obter mais informações ou para baixar e usar gratuitamente por 30 dias.
Olá, pessoal.
Bem-vindos ao boletim informativo do Sysinternals. Atualmente, o boletim informativo tem 33.000 assinantes.
Uso computadores em várias capacidades diferentes: como desenvolvedor de software; como usuário; e como administrador de sistemas (para minha própria rede de sistemas de desenvolvimento e teste). Como quero atingir o público mais amplo possível para as ferramentas freeware da Sysinternals e os produtos comerciais da Winternals, a maioria dos utilitários tem como alvo, no mínimo, o Windows NT 4 até o Windows XP, e muitos também são executados no Windows 95 até o Windows Me. A maioria das ferramentas que escrevo é de nível sistêmico, o que significa que elas geralmente contêm código de caso especial para uma ou mais das diversas variantes do Windows. Infelizmente, há diferenças significativas entre a interface do usuário e o kernel entre a linha do Windows NT e a linha do Windows 9x, e até mesmo as diferenças entre as versões da mesma linha.
Eu costumava executar testes com vários sistemas de depuração, todos configurados para multiboot dos tipos do Windows que enumerei e inicializei em uma versão, testei e reinicializei no próximo. Além de serem lentos, às vezes, os testes eram prejudicados por interferências de compilações de teste intermediárias de utilitários que eu não havia limpado adequadamente. Embora eu ainda tenha uma coleção dos sistemas multibooting para problemas de depuração, um produto inovador chamado VMWare (www.vmware.com) deixou meus ciclos de teste mais rápidos e fáceis.
O VMWare é um ambiente de máquina virtual que você usa para criar computadores virtuais (convidados) que são executados sobre instalações do Windows NT, Windows 2000 ou Linux (hosts). Um convidado pode executar a maioria das variantes do Windows, DOS e Linux. É desconcertante ver uma versão de um sistema operacional sendo executada sobre outra, especialmente quando você faz uma máquina virtual em tela cheia - não há praticamente nenhuma maneira de detectar que você não está sentado na tela de um computador Linux em vez de uma tela virtual de um computador Linux sendo executada sobre o Windows 2000, por exemplo. Uma máquina virtual é uma caixa imposta por software que encapsula o sistema operacional e os aplicativos em execução na máquina virtual para que, quando tentarem interagir com o hardware que acreditam estar presente, o software da máquina virtual intercepte os acessos. O software de máquina virtual cria dispositivos virtuais que servem como substitutos cuidadosamente controlados para hardware real ou hardware virtual. Por exemplo, quando um aplicativo em execução em uma máquina virtual que está sendo exibida em uma janela grava na memória de exibição da máquina virtual, o software da máquina virtual atualiza o conteúdo da janela que representa a exibição da máquina virtual em vez de permitir que os acessos toquem a memória de vídeo real. Se a máquina virtual estivesse em execução no modo de tela inteira, o software da máquina virtual permitiria que esses acessos manipulassem a memória de vídeo diretamente.
A funcionalidade da máquina virtual por si só torna o VMWare útil, pois você pode ter vários "sistemas de teste" ao redor do disco rígido. O que torna o VMWare ainda mais poderoso é o fato de que você pode "suspender" um computador virtual, salvar seu estado em disco e depois retomá-lo, em segundos, restaurando o estado que tinha quando você suspendeu. Mas isso não é tudo. Eu uso muito um recurso chamado "discos não persistentes", que faz com que o VMWare inicie um computador virtual com seus discos virtuais contendo o conteúdo que você definiu (por exemplo, com apenas uma instalação básica do sistema operacional) e, em seguida, rastreie as alterações para que você possa desfazê-las e voltar ao estado inicial. Se eu instalar versões de teste de um utilitário e depois precisar ter certeza de que estou de volta a um estado limpo que não reflete nenhuma das alterações do utilitário, simplesmente desfaço as alterações. Também acho o VMWare útil nas minhas funções de administrador de usuários e sistemas. Sempre que faço o download de um aplicativo que não tenho certeza se quero manter, em vez de comprometer meu sistema de desenvolvimento ou enchê-lo de resíduos deixados para trás quando desinstalo um aplicativo, eu o experimento em uma máquina virtual com um disco não persistente primeiro.
Há algumas desvantagens relativamente pequenas na versão atual que me impediram de usar meus computadores de depuração reais tanto quanto eu faço. A primeira é que, como as máquinas virtuais não dão suporte ao DirectX, você não pode executar o depurador SoftICE do Numega, exceto com a máquina virtual em uma resolução de tela de 640x480. A segunda é que a virtualização das portas seriais do VMWare é limitada de uma forma que impede a depuração do kernel usando Windbg ou Kd entre o host e um convidado ou entre os convidados. Porém, o último problema deve ser resolvido na próxima versão principal do VMWare.
O que é particularmente interessante no VMWare é que, até que o VMWare demonstrasse o contrário, os cientistas da computação tinham predominantemente a crença de que era impossível virtualizar a arquitetura x86 no software bem o suficiente para executar um sistema operacional não modificado sem a degradação de performance proibitiva. Os desafios são significativos, particularmente na área de virtualização dos dispositivos de hardware, e o sucesso da VMWare é visto como um avanço - tanto que a VMWare publicou recentemente um artigo de "melhor conferência" sobre como implementou a virtualização dos dispositivos na Conferência Técnica anual da USENIX. Você pode ler o artigo em http://vmware1.m0.net/m/s.asp?HB4162878203X1075673X73339X.
Falando na Conferência Técnica USENIX, também fui coautor de um artigo publicado lá, High-Performance Memory-Based Web Servers: Kernel e User-Space Performance (http://www.sysinternals.com/files/webserver.pdf). O artigo descreve algumas das pesquisas inovadoras em que participei enquanto trabalhava na IBM Research. As contribuições do trabalho estão na área de aceleração de servidores Web no modo kernel e, além de contribuir para a arquitetura, fui responsável por grande parte da implementação no Windows NT e no Windows 2000. O projeto foi tão bem-sucedido que mantivemos consistentemente os recordes mundiais da SPECWeb em performance de serviços da Web, foi lançado como um produto IBM ainda em evolução chamado IBM Netfinity Web Server Accelerator, e tanto a Microsoft quanto a comunidade Linux incorporaram várias das principais ideias nos seus próprios produtos (como o IIS para Windows 2000 e o Tux no Linux).
Passe o boletim informativo para amigos que você acha que podem estar interessados no seu conteúdo.
Agradecemos!
-Mark
NOVIDADES NO SYSINTERNALS
GERENCIADOR DE PROCESSOS V5.1
O Explorador de Processos é o novo nome da HandleEx, um utilitário multiuso que mostra informações detalhadas sobre processos, as DLLs que eles carregaram e os identificadores nos recursos do sistema operacional que eles abriram. Juntamente com seu novo nome, as versões mais recentes do Explorador de Processos apresentam uma série de novos recursos, incluindo atualização automática eficiente, uma coluna de uso da CPU, a capacidade de alterar as prioridades do processo e o relatório de IDs de sessão do processo, se o sistema for um servidor de terminal. Além disso, ele mostra muito mais informações dos processos. Por exemplo, você pode exibir a lista de serviços em execução em um processo (se aplicável), examinar variáveis de ambiente de um processo e exibir linhas de comando do processo. Usando uma nova opção de classificação chamada "árvore do processo", você pode ver graficamente as relações pai-filho dos processos, algo que pode ajudá-lo a identificar a finalidade de um processo. O Explorador de Processos é executado em todas as versões do Windows 9x, bem como no Windows NT 4 pelo Windows XP.
Algo que pode não ser imediatamente óbvio na interface do Explorador de Processos é sua capacidade de mostrar quais processos têm um arquivo ou diretório específico aberto. Alterne a exibição para o modo de manipulação e insira o nome do arquivo ou diretório em questão na caixa de diálogo da pesquisa. Geralmente, o recurso da pesquisa é usado para rastrear o processo que o impede de excluir ou renomear um arquivo ou diretório, mas você também pode usá-lo para listar processos que têm DLLs específicas carregadas.
Baixar o Gerenciador de Processos v5.1 em http://www.sysinternals.com/ntw2k/freeware/procexp.shtml.
HANDLE V2.0
O Handle é a versão da linha de comando da funcionalidade de exibição do identificador do Explorador de Processos que permite que você veja os identificadores dos recursos do sistema operacional, como arquivos, que os processos abriram. Em alguns casos, usar o Handle é uma maneira mais rápida de identificar um processo que tem um arquivo ou diretório aberto do que usar o recurso de pesquisa do Explorador de Processos, pois você insere uma parte do arquivo ou do nome do diretório na linha de comando Handle. Além da pesquisa mais eficiente dos nomes de identificador, o Handle 2.0 agora funciona no Windows 95/98/Me.
Baixar o Handle v2.0 em http://www.sysinternals.com/ntw2k/freeware/handle.shtml.
PSINFO V1.1
A adição mais recente ao pacote PsTools de ferramentas administrativas é o PsInfo. O PsInfo é uma ferramenta de linha de comando que informa as características do hardware e do sistema operacional de um computador. Por exemplo, ele informa qual sistema operacional está em execução, incluindo o número do service pack, a data de instalação e expiração (se aplicável) e a configuração (por exemplo, controlador de domínio, servidor membro). Ele também lista o tipo, a velocidade e o número de CPUs no computador e a quantidade de memória física instalada. Essas informações tornam o PsInfo útil para identificação ou inventário do sistema. Como todas as ferramentas no pacote PsTools, o PsInfo é executado no computador local ou remoto do Windows NT, 2000 ou XP.
Baixar o PsInfo v1.1 em http://www.sysinternals.com/ntw2k/freeware/psinfo.shtml.
PSEXEC V1.24
O PsExec permite que você inicie os processos nos sistemas remotos sem precisar instalar manualmente nenhum software no sistema remoto, desde que o sistema esteja no seu Bairro de Rede. A força do PsExec está no seu suporte para E/S do programa de console redirecionado, em que lida com a entrada do teclado e a saída do texto de um programa de console remoto como se estivesse em execução no seu sistema local.
A versão mais recente do PsExec dá suporte a vários processos em execução no mesmo sistema remoto, permitindo que você abra remotamente vários prompts de comando em outro sistema, por exemplo. Ele também tem uma nova opção de "forçar cópia" que permite especificar que você quer que o PsExec copie um arquivo em um computador remoto para execução, substituindo qualquer versão existente.
Baixar o PsExec v1.24 em http://www.sysinternals.com/ntw2k/freeware/psexec.shtml.
PSLOGLIST V2.07
O PsLogList, outro utilitário do PsTools, despeja logs de eventos do sistema local ou remoto. Ao contrário do eloglist, a ferramenta Kit de Recursos do Windows 2000 com a mesma finalidade, o PsLogList exibe a cadeia de caracteres de evento completa de um registro e, ao despejar os logs remotos, usa os arquivos de recurso da cadeia de caracteres de log de eventos do sistema remoto em vez do local.
A versão 2.07 do PsLogList inclui um comutador de linha de comando para que você possa direcioná-lo para despejar informações do registro de log dos eventos estendidos (as informações adicionais que podem ser associadas a um registro) e uma nova opção para que você possa exibir os registros apenas dos dias mais recentes especificados.
Baixar o PsLogList v2.07 em http://www.sysinternals.com/ntw2k/freeware/psloglist.shtml.
LAYOUT DA ORIGEM DO WINDOWS XP
Você já se perguntou como a Microsoft organiza o código-fonte que compõe o kernel do Windows NT/2000/XP? Eu também fiz e percebi que a informação está disponível publicamente. Sempre que a Microsoft lança uma nova compilação do Windows 2000/XP, ela lança várias versões:
- uma versão "gratuita" do processador único
- uma versão "gratuita" do processador único que dá suporte a mais de 4 GB de memória física
- uma versão "gratuita" de vários processadores
- uma versão "gratuita" de vários processadores que dá suporte a mais de 4 GB de memória física
- uma versão de vários processadores "verificada"
- uma versão "verificada" de vários processadores que dá suporte a mais de 4 GB de memória física
Para um total de seis versões. O que distingue "gratuito" do "verificado" não é o fato de que a versão "gratuita" seja gratuita (não é), mas que a versão "verificada", que está incluída no conjunto de CD do MSDN, inclui código e dados que ajudam na depuração do sistema operacional e do driver de dispositivo. A versão "gratuita" é compilada livre do código extra incluído nas instruções de compilação condicional.
Exemplos do código verificado extra incluem instruções de impressão de depuração que relatam o que o sistema operacional está fazendo, verificação de consistência mais rigorosa nos parâmetros passados para funções no modo kernel dos drivers de dispositivo e instruções "asserção". Uma instrução de afirmação valida a suposição de um desenvolvedor sobre as condições que se aplicam a uma área de código. Por exemplo, se um ponteiro deve apontar para uma estrutura de dados com uma assinatura de identificação, um desenvolvedor poderá inserir uma asserção nesse efeito. O que acontece quando a suposição da declaração for violada? Isso depende da asserção, mas, no caso daquelas incluídas nas compilações verificadas, uma mensagem de saída de depuração é impressa e, em seguida, um ponto de interrupção do depurador é acionado para que o depurador do kernel seja ativado (ou, se nenhum depurador estiver ativo, ocorrerá uma falha que, espera-se, gere um arquivo de despejo que possa ser examinado posteriormente).
Para facilitar a identificação dos problemas capturados por declarações, as declarações usadas na compilação verificada imprimem o arquivo, a função e o número de linha do local da declaração. Posso mostrar o layout da árvore de origem extraindo essas cadeias de caracteres com meu utilitário de extração de cadeias de caracteres "cadeias de caracteres" e organizando-as em uma visão de árvore java.
Exiba o layout de origem do Windows XP e saiba mais sobre as declarações em http://www.sysinternals.com/ntw2k/info/xpsrctree.shtml (observe que o IE exibirá um aviso sobre o carregamento lento da página. Ignore-o e você verá a árvore).
DEBUGVIEW V4.13
DebugView é um utilitário de desenvolvedor que permite capturar a saída de depuração de aplicativos ou drivers no sistema local ou um remoto , mesmo de vários sistemas simultaneamente. Esta versão mais recente adiciona a compatibilidade com o Windows XP RC 1. O DebugView funciona no Windows 9x, Windows Me, Windows NT, Windows 2000 e Windows XP.
Baixar o DebugView v4.13 em http://www.sysinternals.com/ntw2k/freeware/debugview.shtml.
PAGEDEFRAG V2.1, CONTIG V1.41
A classificação na parte superior dos downloads do Sysinternals mais populares são PageDefrag e Contig. O PageDefrag desfragmenta os arquivos de dados principais do sistema no momento da inicialização e o Contig é um utilitário de desfragmentação de arquivo de linha de comando. As versões mais recentes dessas ferramentas têm um mecanismo de desfragmentação aprimorado para Windows 2000 e cada uma tem alguns dos seus próprios aprimoramentos.
Além de desfragmentar os arquivos de registro e de paginação, a versão mais recente do PageDefrag também desfragmenta os arquivos do log de eventos. Semelhante ao Chkdsk no Windows 2000, o PageDefrag já tem uma contagem regressiva de 3 segundos durante o processo de inicialização, durante a qual é possível pressionar qualquer tecla para ignorar a desfragmentação.
O que torna o Contig exclusivo é o fato de que você pode usá-lo para desfragmentar arquivos individuais, diretórios inteiros ou um disco inteiro. O Contig tem como objetivo otimizar os arquivos específicos que são essenciais para a performance do aplicativo porque, ao contrário dos desfragmentadores comerciais, ele não consolida o espaço livre para ajudar a evitar a fragmentação futura em um disco. Além do mecanismo de desfragmentação aprimorado, o novo Contig tem uma melhor formatação de saída nos modos não detalhado e detalhado.
Baixar o PageDefrag v2.1 em http://www.sysinternals.com/ntw2k/freeware/pagedefrag.shtml.
Baixar o Contig v1.4 em http://www.sysinternals.com/ntw2k/freeware/contig.shtml.
SYSINTERNALS EM WWW.MICROSOFT.COM
Mais uma vez aqui está a última parte das referências do Sysinternals nos artigos da Base de Dados de Conhecimento da Microsoft (KB) lançados desde o último boletim informativo. Isso eleva para 27 o número total de referências de KB para Sysinternals.
0x8000FFFF Mensagem de "Falha catastrófica" com o driver ODBC do SQL Server
http://support.microsoft.com/support/kb/articles/Q243/3/49.ASPACC2002: Mensagem de erro: o Componente ActiveX Não Pode Criar o Objeto
http://support.microsoft.com/support/kb/articles/Q296/2/05.ASPHOWTO: Determinar a versão do MSXML usada pela Internet Explorer
http://support.microsoft.com/support/kb/articles/Q296/6/47.ASPHOWTO: solucionar problemas de "ADODB. Connection" Erro 800a0bb9 do Recordset DTC
http://support.microsoft.com/support/kb/articles/Q197/3/23.ASPINFO: Guia de solução de problemas do 80004005 e outras mensagens de erro
http://support.microsoft.com/support/kb/articles/Q183/0/60.ASPXADM: as mensagens da ID do Evento 3036 e 3026 ocorrem quando você preenche o Repositório das Caixas de Correio
http://support.microsoft.com/support/kb/articles/Q296/1/36.ASP
INFORMAÇÕES INTERNAS
DENTRO DO WINDOWS 2000, O DVD INTERATIVO
Dave Solomon e eu escrevemos "Inside Windows 2000, 3rd Edition", o guia oficial para os internos e a arquitetura do Windows 2000, e estamos entusiasmados em anunciar o lançamento iminente do tutorial do DVD "Inside Windows 2000". Na verdade, o tutorial consiste de 5 DVDs com mais de 9 horas de conteúdo que consistem do Dave e eu ensinando o funcionamento interno do Windows 2000 em uma configuração informal.
Os tópicos abordados incluem o gerenciamento de memória, processos e thread, armazenamento, sistemas de arquivos, rede, e muito mais, e cada um é dividido em módulos de 10 a 20 minutos para exibição conveniente. A apresentação inclui dezenas de diagramas, demonstrações, capturas de tela e listas de resumo, e cada módulo conclui com perguntas de revisão para testar e solidificar seu reconhecimento.
Os preços finais e a data de lançamento ainda não foram finalizados, mas se você quiser ser notificado sobre a versão, envie um email com mailto:video@...
a palavra "interesse" no assunto. Ou, assista http://www.sysinternals.com/video/ para obter detalhes.
MARQUE A DATA: RUSSINOVICH E SOLOMON ENSINAM JUNTOS EM AUSTIN
Se você estiver interessado no conjunto de DVDs, você definitivamente vai estar interessado em uma oportunidade de ver Dave e eu ensinarmos NT internos ao vivo. Venha para Austin, TX de 11 a 13 de dezembro para nos ouvir apresentar nossa classe de Arquitetura Interna do Windows XP/2000/NT de três dias. A classe é baseada em "Dentro do Windows 2000, 3ª Edição" e abrange subsistemas de ambiente, expedição de chamadas do sistema, threads do sistema, desligamento de inicialização, internos do registro, agendamento de processos e threads, gerenciamento de memória, segurança, sistema de E/S, armazenamento, NTFS e o gerenciador de cache. Ao entender o funcionamento interno do Windows XP e 2000, você pode aproveitar a plataforma de forma mais eficaz e eficaz para depurar e solucionar problemas.
Quando os detalhes estiverem disponíveis, o informaremos no boletim informativo e no site, portanto, fique atento!
GERENCIAMENTO DE DISCO DE LINHA DE COMANDO
Curvando-se à pressão dos administradores de sistemas, a Microsoft finalmente lançou uma ferramenta de linha de comando com script para gerenciar discos no Windows 2000. O DiskPart permite que você crie volumes ou partições, crie e quebre espelhos, estenda volumes e examine detalhes dos discos, volumes e partições. O que é bom é que o DiskPart é um download gratuito de http://www.microsoft.com/downloads/release.asp?ReleaseID=31167.
SLIDES ONLINE DO WINHEC 2001
Se você perdeu a Conferência de Engenharia de Hardware do Windows (WINHEC) anual da Microsoft, ainda poderá exibir os slides de muitas das apresentações. Visite http://www.microsoft.com/winhec/sessions/driver.htm uma lista de sessões, descrições e links que acompanham os decks do Power Point. As apresentações de interesse geral são aquelas sobre técnicas de depuração de drivers, drivers de filtro e drivers intermediários e de miniporta NDIS.
NOVAS INTERFACES DE DRIVER DO FILTRO DO SISTEMA DOS ARQUIVOS NO XP
Se você tiver um produto de espelhamento de arquivos em tempo real, verificação de vírus no acesso ou gerenciamento de armazenamento hierárquico baseado em um driver de filtro de sistema de arquivos, será necessário certificar-se de que está a par das alterações introduzidas pela Microsoft no Windows XP que o afetam.
A maior mudança está relacionada às rotinas de E/S rápidas, as funções especiais que um driver de sistema de arquivos registra para que o gerenciador de memória, o gerenciador de cache e o sistema de E/S possam executar o E/S do sistema de arquivos e interagir com os drivers do sistema de arquivos sem precisar gerar IRPs. Pode ser uma surpresa para alguns de vocês descobrir que há seis rotinas de E/S rápidas para as quais os drivers de filtro do sistema de arquivos são sempre ignorados. Eles são:
FastIoAcquireFileExclusive
FastIoReleaseFile
FastIoAcquireFileForCcFlush
FastIoReleaseFileForCcFlush
FastIoAcquireFileForModWrite
FastIoReleaseFileForModWrite
O Gerenciador de Memória chama FastIoAcquireFileExclusive
e FastIoReleaseFile
antes e depois de criar uma seção apoiada por um arquivo, e outros subsistemas no modo kernel podem chamar essas rotinas para impedir temporariamente a criação de seções. O Gerenciador de Cache chama FastIoAcquireFileForCcFlush
e FastIoReleaseFileForCcFlush
antes e depois de liberar todos ou parte dos dados modificados em cache de um arquivo de volta para o disco, e o Gerenciador de Memória chama FastIoAcquireFileForModWrite
e FastIoReleaseFileForModWrite
antes e depois de gravar páginas sujas de arquivos mapeados de volta em um arquivo.
Em vez de invocar as funções de E/S rápida diretamente, os subsistemas no modo kernel usam rotinas de tempo de execução do sistema de arquivos substitutos (FsRtl). As rotinas do runtime nas funções de E/S mais rápidas invocam os drivers do filtro obtendo uma referência ao objeto de dispositivo de filtro por uma chamada para IoGetRelatedDeviceObject
no objeto de arquivo do destino e, em seguida, chamar a rotina de E/S rápida correspondente do filtro, mas as rotinas de tempo de execução relacionadas às chamadas de E/S rápida que acabamos de listar, em vez disso, chamam IoGetBaseFileSystemDeviceObject
, que retorna o objeto de dispositivo do driver do sistema de arquivos subjacente. O motivo pelo qual o runtime ignora os filtros dessas funções é, na minha opinião, um pouco fraco: o runtime não confia nos drivers do filtro. Se um filtro não passar essas chamadas para o driver do sistema de arquivos subjacente, isso causará corrupção de dados do sistema de arquivos e quase certamente uma falha. Mas há muitas coisas que um driver de filtro pode fazer para causar acidentes.
No Windows XP, o FsRtl apresenta uma nova função, FsRtlRegisterFileSystemFilterCallbacks
, que os drivers de filtro usam para registrar retornos de chamada para essas várias operações. Isso possibilita que os drivers de filtro do sistema de arquivos examinem essas operações e até mesmo falhem, e o runtime pode garantir que o driver do sistema de arquivos subjacente seja sempre invocado quando for apropriado. Onde você pode encontrar a documentação da função? O Kit do Sistema de Arquivos Instalável do Windows XP, que está disponível por US$ 995 da Microsoft: http://www.microsoft.com/ddk/ifskit/XPdefault.asp.
FALHA NO WINDOWS COM UM TOQUE DE TECLA
Alguns boletins informativos atrás, eu disse como você poderia adicionar uma configuração ao Registro do Windows 2000 que permite iniciar uma falha de Bluescreen de um sistema em execução com uma sequência especial de teclas, permitindo analisar sistemas que, de outra forma, não estariam respondendo à entrada. Que tal uma maneira de travar o Windows NT e o Windows 2000 sem precisar definir nada no Registro?
Abra uma janela de prompt de comando, altere o diretório atual para a raiz da unidade de inicialização (a unidade com \winnt
nela) e digite dir /s
. Durante a execução, digite F7+Enter algumas vezes e, em seguida, aborte a listagem pressionando Ctrl-C. Você encontrará imediatamente uma tela azul ou uma reinicialização espontânea. Legal, né? Infelizmente, ao contrário do truque que relatei anteriormente, este não é um comportamento projetado, mas sim um bug para o qual você pode encontrar um relatório em http://www.WindowsITsecurity.com/articles/index.cfm?articleID=22037.
Para aqueles que perderam o boletim informativo que incluía a configuração de travamento de teclas, adicione o seguinte valor do Registro ao Registro do Windows 2000 ou XP, de acordo com as instruções do arquivo de ajuda do Microsoft Debugging Tools:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\i8042prt\Parameters\CrashOnCtrlScrll DWORD 1
Reinicie e você pode travar o sistema digitando scroll-lock duas vezes enquanto mantém pressionada a tecla de controle esquerdo.
PRÉ-BUSCA DO WINDOWS XP
A Microsoft concentrou o Windows XP no aprimoramento da experiência do usuário final, e os usuários consideram uma grande parte da experiência a velocidade com que o computador é ligado e pode ser usado. Portanto, os desenvolvedores da Microsoft se esforçaram muito para melhorar a performance do processo de inicialização e da inicialização de aplicativos. Eles resolveram isso de várias maneiras: a primeira é que os drivers de dispositivos seriais e de rede são inicializados em paralelo, ao contrário do Windows 2000, em que eles são inicializados em série. Em segundo lugar, o Winlogon não aguarda mais que o serviço de estação de trabalho (que espera nos serviços de rede) fique disponível antes de apresentar a caixa de diálogo de logon e permitir que um usuário faça logon. Por fim, eles incorporaram uma técnica chamada "pré-busca" no processo de inicialização e na inicialização do aplicativo. Vou abordar brevemente como funciona a pré-busca e apontá-lo para um Whitepaper que a Microsoft publicou sobre otimizações de inicialização.
O Windows (todas as versões, exceto o Win3.1 no modo real) é um sistema operacional com páginas de demanda, em que os dados do arquivo e do código são "defeituosos" na memória do disco enquanto um aplicativo tenta acessá-lo. Os dados e o código são armazenados em pedaços granulares de "página", em que o tamanho de uma página é ditado pelo hardware de gerenciamento de memória da CPU. Uma página tem 4 KB no x86. Pré-busca é o processo de trazer dados e páginas de código para a memória do disco antes de ser exigido.
Para saber o que deve ser pré-buscado, o Gerenciador de Cache XP monitora as falhas de página que os aplicativos incorrem durante a inicialização. Por padrão, ele rastreia os primeiros 2 minutos do processo de inicialização e os primeiros 10 segundos de inicialização do aplicativo. Depois de coletar um rastreamento organizado em falhas feitas no arquivo de metadados da Tabela de Arquivos Mestres do NTFS (MFT) (se o aplicativo acessar arquivos ou diretórios nos volumes NTFS), os arquivos referenciados e os diretórios referenciados, ele notificará o componente de pré-busca do Agendador de Tarefas sinalizando um objeto de evento nomeado. O Agendador de Tarefas executa uma chamada para NtQuerySystemInformation com um tipo de informação que especifica uma consulta de um rastreamento e a lê. Depois de executar o pós-processamento nos dados de rastreamento, o Agendador de Tarefas os grava em um arquivo em \Windows\Prefetch
. O nome do ficheiro é o nome da aplicação ao qual o rastreio se aplica seguido de um traço e a representação hexadecimal de um hash do caminho do ficheiro. O arquivo tem uma extensão ".pf", portanto, um exemplo seria NOTEPAD.EXE-AF43252301.PF.
Uma exceção à regra do nome do arquivo é o arquivo que armazena o rastreamento da inicialização, sempre denominado de NTOSBOOT-B00DFAAD.PF
(uma inversão da palavra compatível com o hexadecimal "BAADF00D", que os programadores costumam usar para representar dados não inicializados). Todas as falhas ocorridas nos processos System ou Idle são consideradas parte da inicialização, o que faz sentido, pois é no processo System que os drivers de dispositivo são carregados e inicializados.
Quando a inicialização é iniciada ou um aplicativo é executado, o Gerenciador de Processos chama o Gerenciador de cache para dar-lhe a oportunidade de realizar a pré-busca. O Gerenciador de Cache procura no diretório de pré-busca se existe um arquivo de rastreamento no cenário de pré-busca em questão. Quando isso acontece, o Gerenciador de Cache chama o NTFS para buscar previamente qualquer referência de arquivo de metadados da MFT, lê o conteúdo de cada um dos diretórios referenciados e, por fim, abre cada arquivo referenciado e usa o Gerenciador de Memória para ler todos os dados e códigos especificados no rastreamento que ainda não estejam na memória. O Gerenciador de Memória inicia todas as leituras de forma assíncrona e aguarda a conclusão delas antes de permitir que a inicialização de um aplicativo continue.
Como esse esquema oferece um benefício de performance? A resposta está no fato de que, durante a inicialização normal ou a inicialização do aplicativo, a ordem das falhas ocorre de tal forma que algumas páginas são trazidas de uma parte de um arquivo, depois de outra, depois de algumas de um arquivo diferente, depois de algumas de um diretório e assim por diante. Esse salto corresponde diretamente ao salto no disco, e a Microsoft aprendeu, através de análises, que os tempos de busca no disco são um fator dominante que reduz os tempos de inicialização e de inicialização de aplicativos. A busca é praticamente eliminada quando a pré-busca lê dados de um determinado arquivo ou diretório de uma só vez antes de passar para outro.
Para minimizar ainda mais a busca, a cada três dias ou mais, o Agendador de Tarefas organiza uma lista de arquivos e diretórios na ordem em que são referenciados durante uma inicialização ou início do aplicativo e armazena a lista em um arquivo chamado \Windows\Prefech\Layout.ini
. Em seguida, ele inicia o desfragmentador do sistema com uma opção de linha de comando que informa ao desfragmentador para desfragmentar com base no conteúdo do arquivo em vez de executar um desfragmentador completo. O desfragmentador encontra uma área contígua em um volume grande o suficiente para manter todos os arquivos e diretórios listados e move-os para a área para que eles sejam armazenados um após o outro.
Esses são os princípios básicos do esquema de pré-busca do XP, que, segundo a Microsoft, acelera significativamente o processo de inicialização (na verdade, você pode ver que o XP inicializa muito mais rápido do que o Windows 2000). Você pode encontrar mais informações sobre pré-busca e outros aprimoramentos de inicialização rápida em um white paper em http://www.microsoft.com/hwdev/fastboot/. Além disso, Dave Solomon e eu começamos a trabalhar na revisão do XP do "Inside Windows 2000" (para publicação em meados da Primavera), e você encontrará uma descrição ainda mais detalhada lá.
CONEXÕES DO WINDOWS .NET
Aqueles de vocês que sentiram minha falta no TechEd podem me ouvir falar na conferência Windows .NET Connections em Scottsdale, Arizona, em 03 de outubro. Estou entregando apresentações da análise de despejo de memória do Windows NT/2000 e alterações do kernel no Windows XP. Outros palestrantes da conferência incluem os editores colaboradores da Windows 2000 Magazine, Mark Minasi e Sean Daily. Se você participar, informe-me que soube da conferência pelo boletim informativo.
Você pode ver os resumos das minhas conversas e encontrar um link do site conexões do Windows .NET em http://www.sysinternals.com/ntw2k/info/talk.shtml.
O QUE ESTÁ POR VIR
MINHAS EXPERIÊNCIAS DO ITANIUM
A Microsoft me emprestou um sistema Itanium para que eu possa portar utilitários Sysinternals para o Win64. O computador tem algumas especificações impressionantes, por sinal: 2 processadores de 733 MHz e 8 GB (!) de RAM. Da próxima vez, falarei das minhas experiências de portabilidade, incluindo as alterações que tive que fazer em vários utilitários para que eles funcionem no Win64.
Obrigado por ler o Boletim Informativo do Sysinternals.
Publicado segunda-feira, 20 de março de 2001, 7:03, por ottoh
[Arquivo de Boletins Informativos ^] [< Volume 3, Número 1] [Volume 4, Número 1 >]