[Archives des newsletters ^] [< Volume 3, Numéro 1] [Volume 4, Numéro 1 >]
Bulletin d’information The Systems Internals Volume 3, numéro 2
http://www.sysinternals.com
Copyright (C) 2001 Mark Russinovich
20 août 2001 - Dans ce numéro :
ÉDITORIAL
NOUVEAUTÉS DE SYSINTERNALS
- Explorateur de processus v5.1
- Handle v2.0
- PsInfo v1.1
- PsExec v1.24
- PsLogList v2.07
- Disposition de la source Windows XP
- DebugView v4.13
- PageDefrag v2.1, Contig v1.41
- Sysinternals chez Microsoft
INFORMATIONS INTERNES
- Dans Windows 2000, le DVD interactif
- Marquez la date : Russinovich et Solomon enseignent ensemble à Austin
- Gestion des disques en ligne de commande
- Diapositives WINHEC 2001 en ligne
- Nouvelles interfaces de pilote de filtre de système de fichiers dans XP
- Bloquer Windows d’une simple touche
- Prérécupération Windows XP
- Connexions Windows .NET
NOUVEAUTÉS À VENIR
- Mes expériences Itanium
SPONSOR : WINTERNALS SOFTWARE
Le bulletin Sysinternals est parrainé par Winternals Software, sur le Web à l’adresse http://www.winternals.com. Winternals Software est le principal développeur et fournisseur d’outils de systèmes avancés pour Windows NT/2K/XP. Les produits Winternals Software incluent FAT32 pour Windows NT 4.0, NTFSDOS Professional Edition (un pilote NTFS en lecture/écriture pour DOS) et la récupération à distance.
Winternals est fier d’annoncer Defrag Commander version 1.31, le défragmenteur d’entreprise le plus rapide et le plus complet disponible. Vous pouvez désormais gérer les planifications de défragmentation dans l’ensemble de votre entreprise Windows à partir d’un simple composant logiciel enfichable MMC, sans même avoir à installer des logiciels clients sur vos systèmes NT ou Windows 2000. Une licence à 10 systèmes est disponible pour l’achat en ligne pour seulement 169 USD, et des remises de quantité agressive sont disponibles. Visitez http://www.winternals.com/39 pour plus d’informations ou pour télécharger et utiliser gratuitement pendant 30 jours.
Bonjour,
Bienvenue dans le bulletin Sysinternals. Le bulletin compte actuellement 33 000 abonnés.
J'utilise les ordinateurs à différents titres : en tant que développeur de logiciels, en tant qu'utilisateur et en tant qu'administrateur de systèmes (pour mon propre réseau de systèmes de développement et de test). Étant donné que je souhaite atteindre le public le plus large pour les outils gratuits Sysinternals et les produits commerciaux Winternals, la plupart des utilitaires ciblent au minimum Windows NT 4 à Windows XP, et beaucoup s’exécutent également sur Windows 95 à Windows Me. La majorité des outils que j'écris sont de niveau système, ce qui signifie qu'ils contiennent souvent du code spécial pour une ou plusieurs variantes de Windows. Malheureusement, il existe des différences significatives entre l’interface utilisateur et le noyau entre la ligne Windows NT et la ligne Windows 9x, et même des différences entre les versions de la même ligne.
J’avais l’habitude d’effectuer des tests en ayant plusieurs systèmes de débogage, tous configurés pour démarrer plusieurs versions de Windows que j’ai énumérées, et en démarrant dans une version, en testant, puis en redémarrant dans la suivante. En plus d’être lents, les tests étaient parfois asymétriques en interférant les chutes de builds de test intermédiaires d’utilitaires que je n’avais pas nettoyées correctement. Bien que je dispose toujours d’une collection de systèmes de multibooting pour les problèmes de débogage, un produit innovant appelé VMWare (www.vmware.com) a rendu mes cycles de test plus rapides et plus faciles.
VMWare est un environnement de machine virtuelle que vous utilisez pour créer des ordinateurs virtuels (invités) qui s’exécutent sur des installations Windows NT, Windows 2000 ou Linux (hôtes). Un invité peut exécuter la plupart des variantes de Windows, DOS et Linux. C’est déconcertant de voir une version d’un système d’exploitation s’exécuter sur une autre, en particulier lorsque vous créez une machine virtuelle en plein écran : il n’existe pratiquement aucun moyen de détecter que vous n’êtes pas assis devant l’écran d’un ordinateur Linux au lieu de l’affichage virtuel d’un ordinateur Linux s’exécutant sur Windows 2000, par exemple. Une machine virtuelle est une boîte imposée par un logiciel qui encapsule le système d'exploitation et les applications fonctionnant dans la machine virtuelle de sorte que lorsqu'ils tentent d'interagir avec le matériel qu'ils croient présent, le logiciel de la machine virtuelle intercepte les accès. Le logiciel de machine virtuelle crée des appareils virtuels qui servent de substituts soigneusement contrôlés sur du matériel réel ou du matériel virtuel. Par exemple, lorsqu’une application qui s’exécute sur une machine virtuelle affichée dans une fenêtre écrit dans la mémoire d’affichage de la machine virtuelle, le logiciel de la machine virtuelle met à jour le contenu de la fenêtre qui représente l’affichage de la machine virtuelle au lieu de laisser les accès toucher la mémoire vidéo réelle. Si la machine virtuelle s’exécutait en mode plein écran, le logiciel de la machine virtuelle laissait ces accès manipuler directement la mémoire vidéo.
La seule fonctionnalité de machine virtuelle rend VMWare utile, car vous pouvez avoir n’importe quel nombre de « systèmes de test » autour de votre disque dur. Ce qui rend VMWare encore plus puissant, c’est le fait que vous pouvez « suspendre » un ordinateur virtuel, enregistrer son état sur le disque, puis le reprendre ultérieurement, en restaurant l’état qu’il avait lors de la suspension. Mais ce n’est pas tout. J’utilise largement une fonctionnalité appelée « disques non persistants », qui permet à VMWare de démarrer un ordinateur virtuel avec ses disques virtuels contenant le contenu que vous avez défini (par exemple, avec simplement une installation de système d’exploitation de base), puis de suivre les modifications afin que vous puissiez les annuler et revenir à l’état de départ. Si j’installe des versions de test d’un utilitaire et que je dois m’assurer que je suis de retour à un état propre qui ne reflète aucune des modifications de l’utilitaire, j’annule simplement les modifications. Je trouve également VMWare utile dans mes rôles d’utilisateur et d’administrateur système. Chaque fois que je télécharge une application que je ne suis pas sûr de vouloir conserver, plutôt que de compromettre mon système de développement ou de la remplir avec des débris résiduels lorsque je désinstalle une application, je l’essaie simplement sur une machine virtuelle avec un disque non persistant.
La version actuelle présente quelques inconvénients relativement mineurs qui m'ont empêché d'utiliser autant que possible mes vrais ordinateurs de débogage. La première est que, étant donné que les machines virtuelles ne prennent pas en charge DirectX, vous ne pouvez pas exécuter le débogueur SoftICE de Numega, sauf avec la machine virtuelle avec une résolution d’écran de 640 x 480. La deuxième est que la virtualisation des ports série de VMWare est limitée d’une manière qui empêche le débogage du noyau à l’aide de Windbg ou Kd entre l’hôte et un invité ou entre des invités. Ce dernier problème doit toutefois être résolu dans la prochaine version majeure de VMWare.
Ce qui est particulièrement intéressant avec VMWare, c'est que, jusqu'à ce que VMWare démontre le contraire, les informaticiens étaient majoritairement convaincus qu'il était impossible de virtualiser l'architecture x86 dans un logiciel suffisamment performant pour faire fonctionner un système d'exploitation non modifié sans dégradation prohibitive des performances. Les défis sont importants, en particulier dans le domaine de la virtualisation des appareils matériels, et le succès de VMWare est considéré comme une percée , à tel point que VMWare a récemment publié un « best of conference » sur la façon dont ils ont implémenté la virtualisation des appareils lors de la conférence technique annuelle USENIX. Vous pouvez lire le document sous http://vmware1.m0.net/m/s.asp?HB4162878203X1075673X73339X.
En ce qui concerne la conférence technique USENIX, j'ai également participé à la rédaction d'un document publié à cette occasion, intitulé High-Performance Memory-Based Web Servers : Kernel and User-Space Performance (http://www.sysinternals.com/files/webserver.pdf). Le document décrit certaines des recherches novatrices à laquelle j’ai participé tout en travaillant chez IBM Research. Les contributions du travail se trouvent dans le domaine de l’accélération du serveur web en mode noyau, et en plus de contribuer à l’architecture, j’étais responsable de la majeure partie de l’implémentation sur Windows NT et Windows 2000. Le projet a connu un tel succès que nous avons toujours détenu les records du monde SPECWeb en matière de performances de service web, qu’il a été publié sous la forme d’un produit IBM en constante évolution appelé IBM Netfinity Web Server Accelerator, et que Microsoft et la communauté Linux ont incorporé plusieurs idées clés dans leurs propres produits (comme IIS pour Windows 2000 et Tux sur Linux).
Veuillez transmettre le bulletin d’informations à des amis que vous pensez être intéressés par son contenu.
Merci !
Mark
NOUVEAUTÉS DE SYSINTERNALS
PROCESS EXPLORER V5.1
Process Explorer est le nouveau nom de HandleEx, un utilitaire polyvalent qui vous montre des informations détaillées sur les processus, les DLL qu’ils ont chargées et les descripteurs des ressources de système d’exploitation qu’ils ont ouvertes. En plus de son nouveau nom, les dernières versions de Process Explorer introduisent une multitude de nouvelles fonctionnalités, notamment l’actualisation automatique efficace, une colonne d’utilisation du processeur, la possibilité de modifier les priorités de processus et la création de rapports sur les ID de session de processus si le système est un serveur Terminal Server. De plus, il affiche beaucoup plus d’informations sur les processus. Par exemple, vous pouvez afficher la liste des services en cours d’exécution dans un processus (le cas échéant), examiner les variables d’environnement d’un processus et afficher les lignes de commande du processus. À l’aide d’une nouvelle option de tri appelée « arborescence de processus », vous pouvez voir graphiquement les relations parent-enfant des processus, ce qui peut vous aider à identifier l’objectif d’un processus. Process Explorer s’exécute sur toutes les versions de Windows 9x, ainsi que sur Windows NT 4 à Windows XP.
Une chose qui peut ne pas être immédiatement évidente dans l’interface de Process Explorer est sa capacité à vous montrer quels processus ont un fichier ou un répertoire particulier ouvert. Basculez l’affichage en mode de gestion et entrez le nom du fichier ou du répertoire en question dans la boîte de dialogue de recherche. La fonctionnalité de recherche est le plus souvent utilisée pour suivre le processus qui vous empêche de supprimer ou de renommer un fichier ou un répertoire, mais vous pouvez l’utiliser pour répertorier les processus sur lesquels des DLL spécifiques sont également chargées.
Télécharger Process Explorer v5.1 à l’adressehttp://www.sysinternals.com/ntw2k/freeware/procexp.shtml.
HANDLE V2.0
Handle est la version de ligne de commande de la fonctionnalité d’affichage de handles de Process Explorer qui vous permet de voir les handles des ressources du système d’exploitation, telles que les fichiers, que les processus ont ouverts. Dans certains cas, l’utilisation de Handle est un moyen plus rapide d’identifier un processus pour lequel un fichier ou un répertoire est ouvert que d’utiliser la fonctionnalité de recherche de Process Explorer, car vous entrez simplement une partie du nom du fichier ou du répertoire sur la ligne de commande Handle. Outre une recherche plus efficace des noms de handles, Handle 2.0 fonctionne désormais sur Windows 95/98/Me.
Téléchargez Handle v2.0 à l’adresse http://www.sysinternals.com/ntw2k/freeware/handle.shtml.
PSINFO V1.1
PsInfo est le dernier ajout à la suite d’outils d’administration PsTools. PsInfo est un outil en ligne de commande qui signale les caractéristiques matérielles et du système d’exploitation d’un ordinateur. Par exemple, il vous indique le système d’exploitation en cours d’exécution, y compris le numéro du Service Pack, la date d’installation et d’expiration (le cas échéant) et la configuration (par exemple, contrôleur de domaine, serveur membre). Il répertorie également le type, la vitesse et le nombre de processeurs sur l’ordinateur, ainsi que la quantité de mémoire physique installée. Ces informations rendent PsInfo pratique pour l’identification du système ou l’inventaire. Comme tous les outils de la suite PsTools, PsInfo s’exécute sur un ordinateur Windows NT, 2000 ou XP local ou distant.
Téléchargez PsInfo v1.1 à l’adresse http://www.sysinternals.com/ntw2k/freeware/psinfo.shtml.
PSEXEC V1.24
PsExec vous permet de lancer des processus sur des systèmes distants sans avoir à installer manuellement un logiciel sur le système distant, tant que le système se trouve dans votre voisinage réseau. La force de PsExec réside dans sa prise en charge des E/S du programme de console redirigées, où il gère l’entrée clavier et la sortie de texte d’un programme de console distante comme s’il s’exécutait sur votre système local.
La dernière version de PsExec prend en charge plusieurs processus en cours d’exécution sur le même système distant, ce qui vous permet d’ouvrir à distance plusieurs invites de commandes sur un autre système, par exemple. Il dispose également d’une nouvelle option « forcer la copie » qui vous permet de spécifier que vous souhaitez que PsExec copie un fichier sur un ordinateur distant pour l’exécution, en remplaçant toute version existante.
Téléchargez PsExec v1.24 à l’adresse http://www.sysinternals.com/ntw2k/freeware/psexec.shtml.
PSLOGLIST V2.07
PsLogList, un autre utilitaire PsTools, vide les journaux d’événements à partir du système local ou distant. Contrairement à eloglist, l’outil Kit de ressources Windows 2000 avec le même objectif, PsLogList affiche la chaîne d’événements complète d’un enregistrement et, lors du dumping des journaux distants, il utilise les fichiers de chaîne de ressources du journal des événements à partir du système distant plutôt que du système local.
La version 2.07 de PsLogList inclut un commutateur de ligne de commande qui vous permet de le diriger vers le vidage des informations d’enregistrement du journal des événements étendus (les informations supplémentaires qui peuvent être associées à un enregistrement) et un nouveau commutateur qui vous permet d’afficher uniquement les enregistrements des derniers jours spécifiés.
Téléchargez PsLogList v2.07 à l’adresse http://www.sysinternals.com/ntw2k/freeware/psloglist.shtml.
DISPOSITION SOURCE WINDOWS XP
Vous êtes-vous déjà demandé comment Microsoft organise le code source qui compose le noyau Windows NT/2000/XP ? Je l’ai fait aussi et j’ai réalisé que l’information est accessible au public. Chaque fois que Microsoft publie une nouvelle version de Windows 2000/XP, il publie plusieurs versions :
- une version « gratuite » de l’uniprocesseur
- une version uniprocesseur « gratuite » qui prend en charge plus de 4 Go de mémoire physique
- une version « gratuite » multiprocesseur
- une version multiprocesseur « gratuite » qui prend en charge plus de 4 Go de mémoire physique
- une version multiprocesseur « vérifiée »
- une version multiprocesseur « vérifiée » qui prend en charge plus de 4 Go de mémoire physique
Pour un total de 6 versions. Ce qui distingue le « gratuit » du « vérifié » n’est pas le fait que la version « gratuite » est gratuite (ce n’est pas le cas), mais le fait que la version « vérifiée », qui est incluse dans le jeu de CD MSDN, inclut du code et des données qui facilitent le débogage du système d’exploitation et du pilote de périphérique. La version « gratuite » est simplement compilée sans le code supplémentaire inclus dans les instructions de compilation conditionnelle.
Les exemples de code supplémentaire vérifié incluent les instructions d’impression de débogage qui signalent ce que fait le système d’exploitation, la vérification de la cohérence plus rigoureuse des paramètres transmis aux fonctions en mode noyau à partir des pilotes de périphérique et les instructions « assertion ». Une instruction assert valide l’hypothèse d’un développeur concernant les conditions qui s’appliquent à une zone de code. Par exemple, si un pointeur doit pointer vers une structure de données avec une signature d’identification, un développeur peut insérer une assertion à cet effet. Que se passe-t-il lorsque l’hypothèse de l’assertion est violée ? Cela dépend de l’assertion, mais dans le cas de ceux inclus dans les builds cochées, un message de sortie de débogage est imprimé, puis un point d’arrêt du débogueur est déclenché afin que le débogueur du noyau s’active (ou, si aucun débogueur n’est actif, un incident se produit qui, espérons-le, génère un fichier de vidage qui peut être examiné ultérieurement).
Pour faciliter l’identification des problèmes détectés par les assertions, les assertions utilisées dans la build cochée impriment le fichier, la fonction et le numéro de ligne de l’emplacement de l’assertion. Je peux afficher la disposition de l’arborescence source en extrayant ces chaînes avec mon utilitaire d’extraction de chaînes « chaînes » et en les organisant dans une arborescence java.
Affichez la disposition source de Windows XP et apprenez-en davantage sur les assertions sur http://www.sysinternals.com/ntw2k/info/xpsrctree.shtml (notez qu’Internet Explorer affiche un avertissement concernant le chargement lent de la page. Ignorez-le et vous verrez l’arborescence).
DEBUGVIEW V4.13
DebugView est un utilitaire de développement qui vous permet de capturer la sortie de débogage à partir d’applications ou de pilotes sur le système local ou distant, même à partir de plusieurs systèmes simultanément. Cette dernière version ajoute la compatibilité avec Windows XP RC 1. DebugView fonctionne sur Windows 9x, Windows Me, Windows NT, Windows 2000 et Windows XP.
Téléchargez DebugView v4.13 à l’adresse http://www.sysinternals.com/ntw2k/freeware/debugview.shtml.
PAGEDEFRAG V2.1, CONTIG V1.41
Le classement en haut des téléchargements Sysinternals les plus populaires sont PageDefrag et Contig. PageDefrag défragmente les fichiers de données système principaux au démarrage et Contig est un utilitaire de défragmentation de fichier de ligne de commande. Les dernières versions de ces outils ont un moteur de défragmentation amélioré pour Windows 2000 et chacun d’eux a ses propres améliorations.
Outre la défragmentation des fichiers de registre et de pagination, la dernière version de PageDefrag défragmente également les fichiers journaux des événements. Et comme Chkdsk dans Windows 2000, PageDefrag dispose désormais d’un compte de 3 secondes pendant le processus de démarrage pendant lequel vous pouvez appuyer sur n’importe quelle touche pour ignorer la défragmentation.
Ce qui rend Contig unique, c’est le fait que vous pouvez l’utiliser pour défragmenter des fichiers individuels, des répertoires entiers ou un disque entier. Contig vise à optimiser des fichiers particuliers qui sont critiques pour les performances de l’application, car, contrairement aux défragmenteurs commerciaux, il ne consolide pas l’espace libre afin d’empêcher la fragmentation future d’un disque. Outre le moteur de défragmentation amélioré, le nouveau Contig offre une meilleure mise en forme de sortie en mode non détaillé et détaillé.
Téléchargez PageDefrag v2.1 à l’adresse http://www.sysinternals.com/ntw2k/freeware/pagedefrag.shtml.
Téléchargez Contig v1.4 à l’adresse http://www.sysinternals.com/ntw2k/freeware/contig.shtml.
SYSINTERNALS AT WWW.MICROSOFT.COM
Une fois de plus, voici la dernière version des références Sysinternals dans les articles de la Base de connaissances Microsoft (KB) publiés depuis la dernière lettre d’information. Cela porte à 27 le nombre total de références de base de connaissances à Sysinternals.
0x8000FFFF message « Échec catastrophique » avec SQL Server pilote ODBC
http://support.microsoft.com/support/kb/articles/Q243/3/49.ASPACC : Message d’erreur : Le composant ActiveX ne peut pas créer d’objet
http://support.microsoft.com/support/kb/articles/Q296/2/05.ASPPROCÉDURE : Déterminer la version de MSXML utilisée par Internet Explorer
http://support.microsoft.com/support/kb/articles/Q296/6/47.ASPPROCÉDURE : Résoudre les problèmes « ADODB. Connexion » Erreur 800a0bb9 de Recordset DTC
http://support.microsoft.com/support/kb/articles/Q197/3/23.ASPINFO : Guide de résolution des problèmes pour les 80004005 et autres messages d’erreur
http://support.microsoft.com/support/kb/articles/Q183/0/60.ASPXADM : LES ID d’événement 3036 et 3026 messages se produisent lorsque vous remplissez le magasin de boîtes aux lettres
http://support.microsoft.com/support/kb/articles/Q296/1/36.ASP
INFORMATIONS INTERNES
DANS WINDOWS 2000, LE DVD INTERACTIF
Dave Solomon et moi avons écrit « Inside Windows 2000, 3rd Edition », le guide officiel des composants internes et de l’architecture de Windows 2000, et nous sommes ravis d’annoncer la publication imminente du didacticiel DVD « Inside Windows 2000 ». Le tutoriel se compose en fait de 5 DVD avec plus de 9 heures de contenu composé de Dave et moi vous enseignant le fonctionnement interne de Windows 2000 dans un cadre informel.
Les sujets abordés incluent la gestion de la mémoire, les processus et les threads, le stockage, les systèmes de fichiers, le réseau et bien plus encore, et chacun est divisé en modules de 10 à 20 minutes pour une visualisation pratique. La présentation comprend des dizaines de diagrammes, de démonstrations, de captures d’écran et de listes récapitulatives, et chaque module se termine par des questions de révision pour tester et renforcer votre compréhension.
Le prix final et la date de publication n’ont pas encore été finalisés, mais si vous souhaitez être informé de la publication, envoyez un e-mail à mailto:video@...
avec le mot « intérêt » dans l’objet. Ou regardez http://www.sysinternals.com/video/ pour plus d’informations.
MARQUER LA DATE : RUSSINOVICH ET SOLOMON ENSEIGNENT ENSEMBLE À AUSTIN
Si vous êtes intéressé par les DVD, vous serez certainement intéressé par l'opportunité de voir Dave et moi enseigner les principes internes de NT en direct. Venez à Austin, TX du 11 au 13 décembre pour nous entendre présenter notre classe d’architecture interne Windows XP/2000/NT de 3 jours. Le cours est basé sur « Inside Windows 2000, 3rd Edition » et couvre les sous-systèmes d'environnement, la répartition des appels système, les threads système, le démarrage et l'arrêt, le registre interne, les processus et l'ordonnancement des threads, la gestion de la mémoire, la sécurité, le système d'E/S, le stockage, NTFS, et le gestionnaire de cache. En comprenant le fonctionnement interne de Windows XP & 2000, vous pouvez tirer parti de la plateforme plus efficacement et plus efficacement déboguer et résoudre les problèmes.
Lorsque les détails seront disponibles, nous vous le ferons savoir dans le bulletin d’information et sur le site web, alors restez à l’écoute !
GESTION DE DISQUE DE LIGNE DE COMMANDE
Se pliant à la pression des administrateurs système, Microsoft a finalement publié un outil en ligne de commande scriptable pour la gestion des disques sur Windows 2000. DiskPart vous permet de créer des volumes ou des partitions, de créer et de briser des miroirs, d’étendre des volumes et d’examiner les détails des disques, des volumes et des partitions. Ce qui est agréable, c’est que DiskPart est un téléchargement gratuit à partir de http://www.microsoft.com/downloads/release.asp?ReleaseID=31167.
DIAPOSITIVES WINHEC 2001 EN LIGNE
Si vous avez manqué la conférence annuelle d’ingénierie matérielle Windows (WINHEC) de Microsoft, vous pouvez toujours afficher les diapositives de la plupart des présentations. Consultez http://www.microsoft.com/winhec/sessions/driver.htm pour une liste des sessions, des descriptions et des liens vers les présentations Power Point. Les présentations d’intérêt général portent sur les techniques de débogage des pilotes, les pilotes de filtre et les pilotes miniports et intermédiaires NDIS.
NOUVELLES INTERFACES POUR LES PILOTES DE FILTRES DE SYSTÈME DE FICHIERS DANS XP
Si vous disposez d’un produit de mise en miroir de fichiers en temps réel, de vérification antivirus à l’accès ou de gestion hiérarchique du stockage basé sur un pilote de filtre de système de fichiers, vous devez vous assurer que vous êtes informé des modifications apportées par Microsoft dans Windows XP qui vous affectent.
Le changement le plus important concerne les routines d’E/S rapides, les fonctions spéciales qu’un pilote de système de fichiers inscrit afin que le Gestionnaire de mémoire, le Gestionnaire de cache et le système d’E/S puissent exécuter des E/S du système de fichiers et interagir avec les pilotes de système de fichiers sans avoir à générer des IRPS. Certains d’entre vous peuvent être surpris de découvrir qu’il existe 6 routines d’E/S rapides pour lesquelles les pilotes de filtre de système de fichiers sont toujours contournés. Il s'agit des éléments suivants :
FastIoAcquireFileExclusive
FastIoReleaseFile
FastIoAcquireFileForCcFlush
FastIoReleaseFileForCcFlush
FastIoAcquireFileForModWrite
FastIoReleaseFileForModWrite
Le Gestionnaire de mémoire appelle FastIoAcquireFileExclusive
et FastIoReleaseFile
avant et après la création d’une section soutenue par un fichier, et d’autres sous-systèmes en mode noyau peuvent appeler ces routines pour empêcher temporairement la création de sections. Le Gestionnaire de cache appelle FastIoAcquireFileForCcFlush
et FastIoReleaseFileForCcFlush
avant et après avoir vidé tout ou partie des données mises en cache modifiées d’un fichier sur le disque, et le Gestionnaire de mémoire appelle FastIoAcquireFileForModWrite
et FastIoReleaseFileForModWrite
avant et après l’écriture de sale pages de fichiers mappés dans un fichier.
Au lieu d’appeler directement des fonctions d’E/S rapides, les sous-systèmes en mode noyau utilisent des routines de runtime de système de fichiers de substitution (FsRtl). Les routines d’exécution pour les fonctions d’E/S les plus rapides appellent des pilotes de filtre en obtenant une référence à leur objet de périphérique de filtre via un appel à IoGetRelatedDeviceObject
sur l’objet de fichier cible, puis en appelant la routine d’E/S rapide correspondante du filtre, mais les routines d’exécution liées aux appels d’E/S rapides qui viennent d’être répertoriés appellent IoGetBaseFileSystemDeviceObject
plutôt , qui retourne l’objet d’appareil du pilote de système de fichiers sous-jacent. La raison pour laquelle le runtime contourne les filtres pour ces fonctions est, à mon avis, un peu boiteuse : le runtime ne fait tout simplement pas confiance aux pilotes de filtres. Si un filtre ne transmet pas ces appels au pilote de système de fichiers sous-jacent, cela provoque une altération des données du système de fichiers et presque certainement un plantage. Mais il y a beaucoup de choses qu’un pilote de filtre peut faire pour provoquer des plantages.
Dans Windows XP, le FsRtl introduit une nouvelle fonction, FsRtlRegisterFileSystemFilterCallbacks
, que les pilotes de filtre utilisent pour inscrire des rappels pour ces différentes opérations. Cela permet aux pilotes de filtre de système de fichiers d’examiner ces opérations et même de les échouer, et le runtime peut s’assurer que le pilote de système de fichiers sous-jacent est toujours appelé le cas échéant. Où trouver la documentation de la fonction ? Kit de système de fichiers installable Windows XP, disponible pour 995 USD auprès de Microsoft : http://www.microsoft.com/ddk/ifskit/XPdefault.asp.
BLOCAGE DES FENÊTRES AVEC UNE SIMPLE PRESSION DE TOUCHE
Il y a quelques bulletins d'information, je vous ai expliqué comment vous pouviez ajouter un paramètre au registre de Windows 2000 qui vous permet de déclencher un crash Bluescreen d'un système en cours d'exécution à l'aide d'une séquence de touches spéciale, ce qui vous permet d'analyser des systèmes qui ne réagissent pas aux données. Que pensez-vous d’un moyen de bloquer Windows NT et Windows 2000 sans avoir à définir quoi que ce soit dans le Registre ?
Ouvrez une fenêtre d’invite de commandes, remplacez le répertoire actif par la racine de votre lecteur de démarrage (le lecteur avec \winnt
), puis entrez dir /s
. Lors de l’exécution du type F7+Entrée à plusieurs reprises, puis abandonnez la liste en entrant Ctrl-C. Vous rencontrerez immédiatement un écran bleu ou un redémarrage spontané. Cool, hein ? Malheureusement, contrairement à l'astuce que j'ai signalée précédemment, il ne s'agit pas d'un comportement conçu, mais plutôt d'un bogue pour lequel vous pouvez trouver un rapport à l'adresse suivante http://www.WindowsITsecurity.com/articles/index.cfm?articleID=22037.
Pour ceux d’entre vous qui ont manqué le bulletin d’informations qui incluait le paramètre d’incident de frappe, ajoutez la valeur de Registre suivante à votre Registre Windows 2000 ou XP, conformément aux instructions du fichier d’aide des outils de débogage Microsoft :
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\i8042prt\Parameters\CrashOnCtrlScrll DWORD 1
Redémarrez et vous pouvez bloquer le système en tapant scroll-lock deux fois tout en maintenant la touche de contrôle gauche enfoncée.
PRÉRÉCUPÉRATION WINDOWS XP
Microsoft a mis l’accent sur Windows XP sur l’amélioration de l’expérience de l’utilisateur final, et les utilisateurs considèrent une grande partie de l’expérience comme la vitesse à laquelle un ordinateur s’allume et est utilisable. Par conséquent, un développeur Microsoft a consacré beaucoup d’efforts à l’amélioration des performances du processus de démarrage et du démarrage de l’application. Ils ont résolu ce problème de plusieurs manières : la première est que les pilotes de périphériques série et réseau s’initialisent en parallèle, contrairement à Windows 2000 où ils s’initialisent en série. Deuxièmement, Winlogon n’attend plus que le service de station de travail (qui attend lui-même sur les services réseau) soit disponible avant de présenter la boîte de dialogue d’ouverture de session et de permettre à un utilisateur de se connecter. Enfin, ils ont incorporé une technique appelée « pré-fetching » dans le processus de démarrage et le démarrage de l’application. Je vais brièvement aborder le fonctionnement de la préversion et vous indiquer un livre blanc publié par Microsoft sur les optimisations de démarrage.
Windows (toutes les versions à l’exception de Win3.1 en mode réel) est un système d’exploitation paginé à la demande, où les données de fichier et le code sont « défectueux » dans la mémoire à partir du disque lorsqu’une application tente d’y accéder. Les données et le code sont défectueux dans des segments granulaires « page », où la taille d’une page est dictée par le matériel de gestion de la mémoire du processeur. Une page est de 4 Ko sur le x86. La pré-récupération est le processus consistant à placer des données et des pages de code dans la mémoire à partir du disque avant d’être demandé.
Pour savoir ce qu’il doit pré-récupérer, le Gestionnaire de cache XP surveille les erreurs de page que les applications subissent au démarrage. Par défaut, il trace les 2 premières minutes du processus de démarrage et les 10 premières secondes du démarrage de l’application. Après avoir collecté une trace organisée en erreurs prises dans le fichier de métadonnées MFT (NTFS Master File Table) (si l’application accède aux fichiers ou aux répertoires sur des volumes NTFS), les fichiers référencés et les répertoires référencés, elle avertit le composant prédéfini du Planificateur de tâches en signalant un objet d’événement nommé. Le planificateur de tâches effectue un appel à NtQuerySystemInformation avec un type d’informations qui spécifie une requête pour une trace et la lit. Après avoir effectué un post-traitement sur les données de trace, le planificateur de tâches les écrit dans un fichier sous \Windows\Prefetch
. Le nom du fichier est le nom de l’application à laquelle la trace s’applique, suivi d’un tiret et de la représentation hexadécimale d’un hachage du chemin d’accès du fichier. Le fichier a une extension « .pf » de sorte qu’un exemple serait NOTEPAD.EXE-AF43252301.PF.
Une exception à la règle de nom de fichier est le fichier qui stocke la trace du démarrage, qui est toujours nommé NTOSBOOT-B00DFAAD.PF
(une convolution du mot compatible hexadécimal « BAADF00D », que les programmeurs utilisent souvent pour représenter des données non initialisées). Toutes les erreurs effectuées dans les processus système ou inactifs sont considérées comme faisant partie du démarrage, ce qui est logique dans la mesure où c’est dans le processus système que les pilotes de périphérique se chargent et s’initialisent.
Lorsque l'ordinateur démarre ou qu'une application s'exécute, le gestionnaire de processus appelle le gestionnaire de cache pour lui donner la possibilité d'effectuer un préchargement. Le Gestionnaire de cache recherche dans le répertoire de préversion pour voir s’il existe un fichier de trace pour le scénario de pré-récupération en question. Quand le Gestionnaire de cache appelle NTFS pour pré-récupérer toutes les références de fichier de métadonnées MFT, il lit dans le contenu de chacun des répertoires référencés, puis enfin, il ouvre chaque fichier référencé et utilise le Gestionnaire de mémoire pour lire les données et le code spécifiés dans la trace qui n’est pas déjà en mémoire. Le Gestionnaire de mémoire lance toutes les lectures de manière asynchrone, puis attend qu’elles se terminent avant de laisser le démarrage d’une application continuer.
En quoi ce schéma offre-t-il un avantage en matière de performances ? La réponse réside dans le fait que, lors du démarrage normal ou du démarrage de l’application, l’ordre des erreurs se produit de telle sorte que certaines pages sont apportées à partir d’une partie d’un fichier, puis d’une autre, puis de quelques-unes à partir d’un autre fichier, puis d’autres à partir d’un répertoire et ainsi de suite. Ce saut correspond directement à un saut sur le disque, et Microsoft a appris par l’analyse que les temps de recherche de disque sont un facteur dominant de ralentissement des temps de démarrage et de démarrage des applications. La recherche est pratiquement éliminée lorsque la pré-récupération lit des données à partir d’un fichier ou d’un répertoire particulier en même temps avant de passer à un autre.
Pour réduire encore plus la recherche, tous les trois jours environ, le planificateur de tâches organise une liste de fichiers et de répertoires dans l’ordre dans lequel ils sont référencés lors d’un démarrage ou d’un démarrage d’application et stocke la liste dans un fichier nommé \Windows\Prefech\Layout.ini
. Ensuite, il lance le défragmenteur système avec une option de ligne de commande qui indique au défragmenteur de défragmenter en fonction du contenu du fichier au lieu d’effectuer une défragmentation complète. Le défragmenteur trouve une zone contiguë sur un volume suffisamment grand pour contenir tous les fichiers et répertoires répertoriés, puis les déplace dans la zone afin qu’ils soient stockés les uns après les autres.
Il s’agit des principes de base du schéma de pré-récupération XP, qui, selon Microsoft, accélère considérablement le processus de démarrage (vous pouvez en fait voir que XP démarre beaucoup plus rapidement que Windows 2000). Vous trouverez plus d’informations sur la pré-récupération et les autres améliorations de démarrage rapide dans un livre blanc à l’adresse http://www.microsoft.com/hwdev/fastboot/. En outre, Dave Solomon et moi avons commencé à travailler sur la révision XP de « Inside Windows 2000 » (pour publication à la mi-printemps), et vous y trouverez une description encore plus détaillée.
CONNEXIONS WINDOWS .NET
Ceux d'entre vous qui ne m'ont pas vu à TechEd pourront m'entendre à la conférence Windows .NET Connections à Scottsdale, Arizona, le 3 octobre. Je propose des présentations sur l’analyse du vidage sur incident Windows NT/2000 et les modifications du noyau dans Windows XP. Parmi les autres intervenants de la conférence figurent Mark Minasi et Sean Daily, éditeurs collaborateurs de Windows 2000 Magazine. Si vous participez à la conférence, faites-moi savoir que vous avez entendu parler de la conférence par le biais de la lettre d'information.
Vous pouvez voir les résumés de mes présentations et trouver un lien vers le site Connexions Windows .NET à l’adresse http://www.sysinternals.com/ntw2k/info/talk.shtml.
NOUVEAUTÉS À VENIR
MES EXPÉRIENCES ITANIUM
Microsoft m’a prêté un système Itanium afin que je puisse porter les utilitaires Sysinternals vers Win64. La machine a quelques spécifications impressionnantes, par ailleurs : 2 processeurs 733 MHz et 8 Go (!) de RAM. La prochaine fois, je vous parlerai de mes expériences de portage, notamment des modifications que j’ai dû apporter à différents utilitaires pour qu’ils fonctionnent sur Win64.
Merci d'avoir lu la newsletter Sysinternals.
Publié le lundi 20 août 2001 à 19:03 par ottoh
[Archives des newsletters ^] [< Volume 3, Numéro 1] [Volume 4, Numéro 1 >]