Numéro d'article: 188831 - Dernière mise à jour: vendredi 23 février 2007 - Version: 9.2 Comment faire pour utiliser la fonctionnalité Pool spécial pour isoler les pools endommagés
Ancien nº de publication de cet article : F188831 Important Cet article contient des informations sur la modification du Registre. Avant de modifier le Registre, pensez à le sauvegarder et assurez-vous que vous savez le restaurer en cas de problème. Pour plus d'informations sur la façon de sauvegarder, restaurer et modifier le Registre, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft. 256986
(http://support.microsoft.com/kb/256986/
)
Description du Registre de Microsoft Windows Résumé Un pool endommagé peut être à l'origine d'un grand nombre des problèmes rencontrés dans Windows NT. Un pool peut être endommagé lorsqu'un composant noyau écrit sur la mémoire en dehors de sa zone de pool allouée. L'écriture sur la mémoire en dehors des limites de la zone allouée risque d'écraser une autre zone de mémoire allouée, pouvant appartenir à un autre composant. Le pool endommagé peut provoquer des problèmes tels que des écrans bleus dans des zones de code ne s'y rapportant pas. Un composant noyau lisant au-delà de sa zone allouée peut également poser des problèmes. Qu'ils soient provoqués par des pilotes OEM (Original Equipment Manufacturers) ou des problèmes internes à Windows, les problèmes de pool endommagé sont très difficiles à identifier. En général, tout ce qui peut être détecté lors de l'analyse du vidage de la mémoire sont les symptômes du problème réel, tels qu'une zone de données endommagée provoquant des problèmes dans une partie de code ne s'y rapportant pas. Jusqu'à présent, il était quasiment impossible d'identifier la partie de code ayant endommagé la mémoire. La source du problème peut à présent être identifiée au niveau de l'instruction provoquant les dommages du pool. Un nouvel utilitaire de gestion de mémoire nommé Pool spécial est inclus dans Windows NT 4.0 Service Pack 4 (SP4), Windows 2000, Windows XP et Windows Server 2003. Cet utilitaire identifie le composant noyau qui endommage les données de pool en écrivant sur la mémoire en dehors de sa zone allouée. Plus d'informationsAvertissement Toute modification incorrecte du Registre à l'aide de l'Éditeur du Registre ou d'une autre méthode peut entraîner des problèmes sérieux. Ces problèmes peuvent vous obliger à réinstaller votre système d'exploitation. Microsoft ne peut pas garantir que ces problèmes puissent être résolus. Vous assumez l'ensemble des risques liés à la modification du Registre. L'utilitaire Pool spécial attribue deux pages de mémoire virtuelle pour chaque demande d'allocation de pool effectuée par l'intermédiaire de la requête ExAllocatePoolWithTag répondant aux critères suivants :
La détection de dépassement est probablement la plus utilisée. Pour la détection de dépassement, l'allocation demandée est placée à la fin de la première page en sauvegardant la taille de la requête à partir de la fin de la page. La taille d'allocation est arrondie à une limite de 8 octets. Une clé de motif, la taille et les informations de balise de pool sont inscrits dans l'en-tête sur les 8 premiers octets de la première page. Le motif apparaît également sur toute la page. Puisque l'allocation est placée sur la limite de 8 octets la plus proche, il peut y avoir au moins sept octets restants suivant l'allocation. Le motif est également écrit sur les octets restants suivant l'allocation. La deuxième page est la page de protection. La page de protection est constituée d'une entrée de table de page (PTE, Page Table Entry) spéciale marquée d'une protection de non-accès. En marquant la protection de non-accès sur cette seconde page, tout code qui tentera de lire ou d'écrire au-delà de la fin de la première page entraînera immédiatement une violation d'accès qui se traduira par un message d'erreur Stop 0x0000000A ou Stop 0x0000001E. Cela permet à la personne qui débogue le système d'identifier l'instruction exacte à l'origine du pool endommagé. En tant que vérification secondaire pour détecter les violations d'écriture au-delà de la fin de l'allocation mais pas au-delà de la fin de la page, les octets restants à la fin de l'allocation sont validés durant la requête de pool libre (ExFreePoolWithTag). Les octets restants sont comparés au motif dans l'en-tête de l'allocation pour vérifier si quelque chose a été remplacé dans la zone d'octets restants. Si la vérification n'aboutit pas, un message d'erreur Stop 0x00000001A s'affiche. Cette vérification n'identifie pas nécessairement la partie de code exacte à l'origine du pool endommagé, mais elle peut aider à identifier le composant responsable de l'endommagement. Pour activer l'utilitaire Pool spécial, ajoutez au Registre les clés et les valeurs suivantes : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management Nom de la valeur : PoolTag Type de données : REG_DWORD Données : Pool tag mask | Allocation size mask | 0 Le tableau suivant répertorie d'autres exemples : Pool à analyser Caractère Masque Balise de pool ---------------------------------------------------------- Tous les pools « * » 0x2A N??s « s??N » 0x733F3F4E Lorsque zéro (0x0) est spécifié, l'utilitaire Pool spécial n'est pas initialisé. De plus, il n'est pas initialisé si la valeur du Registre PoolTag n'est pas définie dans le Registre. Nom de la valeur : PoolTagOverruns 1 indique que des dépassements d'allocation de pool sont détectés pour la balise spécifiée. L'allocation est placée à la fin de la page et la page de protection suit la page contenant l'allocation.Type de données : REG_DWORD Données : 1 | 0 0 indique que des approvisionnements insuffisants d'allocation de pool sont détectés pour la balise spécifiée. L'allocation est placée au début de la page et la page de protection précède la page contenant l'allocation. Des méthodes courantes pour créer ces deux clés de Registre sont par exemple : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\
Memory Management Nom de la valeur : PoolTag Type de données : REG_DWORD Données : 0x2A Nom de la valeur : PoolTagOverruns Type de données : REG_DWORD Données : 1 Remarque : pour Windows NT Terminal Server 4.0, vous devez désactiver KStackPool lorsque vous utilisez un pool spécial. Pour cela, ajoutez la valeur de Registre suivante : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management Nom de la valeur : EnableKStackPool Type de données : REG_DWORD Données : 0 1 - KStackPool toujours activé 2 - KStackPool activé pour les ordinateurs ayant 256 Mo ou plus de mémoire (par défaut) Remarque : après avoir effectué les modifications du Registre décrites dans cet article, redémarrez votre ordinateur pour que ces modifications soient prises en compte. Si, après avoir activé la fonctionnalité Pool spécial, l'ordinateur cesse de répondre (se bloque) en affichant un message d'erreur sur un écran bleu lors du démarrage, redémarrez l'ordinateur en utilisant l'option Dernière configuration correcte connue. L'activation de la fonctionnalité Pool spécial n'est écrite dans l'entrée Dernière configuration correcte connue du Registre qu'après une ouverture de session normale. Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT. | Autres ressources Autres sites d'aide
CommunautésObtenir de l'aideTraductions disponibles
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email
Retour au début
