Translate this site using Windows Live Translator:
C:\>Windows Internals - L'équipe Française de Support Windows - Site Home - TechNet Blogs

C:\>Windows Internals - L'équipe Française de Support Windows

  • Une nouvelle fiche technique pour Hyper-V

    Il se peut que vous subissiez un problème de connexion à vos machines virtuelles via VMConnect.

    Dans ce cas, vous trouverez le bulletin officiel concernant ce comportement sur le blog officiel de la division Windows Server : Hyper-V certificate expiration and resolution.

    Et l’article technique correspondant : KB967902 - You cannot connect to a virtual machine when the Windows Server 2008 Hyper-V VMMS certificate has expired

     

     

    Guillaume

    Windows Core Support Escalation Engineer

  • La Newsletter de Février

    Au delà de la cible initiale de ce blog, nous avons décidé de collationner dans un bulletin mensuel (si nous avons le temps et si nous trouvons des choses intéressantes) les annonces et ressources qui nous paraissent pertinentes et qui concernent les technologies que nous supportons.

    Cette newsletter nous permettra de sortir un peu du cadre du support en élargissant le périmètre de ce blog aux nouveautés, évènements, tendances, etc… autour de notre monde.

    En voici donc la première édition où l’on parle beaucoup de virtualisation… Vous ne nous en voudrez pas, c’est un sujet très actuel et actif en ce moment !

     

    Microsoft and Red Hat Cooperative Technical Support

    Microsoft et Red Hat s’entendent pour travailler en collaboration afin de pouvoir héberger des Red Hat Enterprise Linux dans Hyper-V et des systèmes Windows dans l’hypervisor Red Hat.

    Red Hat a donc rejoint le programme Server Virtualization Validation Program.

    L’annonce sur le blog officiel Microsoft : Microsoft and Red Hat Cooperative Technical Support

    L’annonce de Red Hat

     

    Citrix Essentials for Hyper-V

    Citrix amène à Hyper-V et SCVMM des fonctionnalités d’automatisation avancées.

    Lien : Citrix Essentials for Hyper-V

    Demo : Barry Flanagan >  StorageLink in Essentials for Hyper-V

     

    WindowsServerCalculator

    Cet outil permet de calculer le nombre de licences et le coût estimés pour un scénario de virtualisation particulier. Il prend en compte la configuration matérielle de l’hôte Hyper-V (ou d’un hypervisor tiers), des applications Microsoft qui seront virtualisées, etc…

    Lien : WindowsServerCalculator

    image

     

    Microsoft Hyper-Green

    Ressources concernant l’aspect particulier de la virtualisation menant à réduire les coûts et l’empreinte énergétique.

    Lien : Microsoft Hyper-Green

     

    Ressources de quelques uns de nos partenaires concernant le stockage et Hyper-V

    The Sun xVM Virtualization Portfolio: Virtualizing the Dynamic datacenter

    Best practices for a Microsoft Hyper-V Dynamic Data Center in an HP BladeSystem environment

    NetApp Storage Solutions for Microsoft Hyper-V - Optimize Your Virtual Infrastructure by Using 50% Less Storage

    Emulex: Enhanced SAN Connectivity with Hyper-V and System Center Virtual Machine Manager

    Ou Hyper-V uniquement :

     

    WinHEC

    Mis à jour une fois par an à l’occasion de cet évènement, ce site propose quelques documents parfois très technique décrivant les nouveautés technologiques inclues dans les produits Microsoft.

    Lien : WinHEC 2008

     

    System Center Virtual Machine Manager 2008 Configuration Analyzer Update 1

    Cet outil permet d’identifier les éventuels problèmes de configuration logiciels ou matériels des machines qui sont ou seront utilisés par SCVMM (serveur SCVMM, agents SCVMM, VMware Virtual Center, machines éligibles au P2V, agent SCOM).

    Lien : Téléchargement

     

    Les Data Centers de 4ème génération

    Si vous étiez aux TechDays vous avez pu assister à la présentation de ces nouveaux types de centres de traitement par Bernard Ourghanlian.

    Voici la vidéo illustrant le concept :

     

    L’Agility Center

    Partenaires historiques, IBM, Intel et Microsoft s’associent pour vous proposer le nouveau socle de virtualisation de votre infrastructure. Prêt à l’emploi, tout intégré, l’Agility Center offre une solution économique pour une infrastructure performante, évolutive et hautement disponible.

    Agility Center

    Basé sur le châssis BladeCenter S d'IBM cette solution dispose d'un haut niveau d'intégration. L'Agility Center vous permet de proposer à vos clients une solution « tout en un » intégrant dans un châssis de 7U :

    • 4 lames équipées des dernières technologies processeurs Intel
    • 1 stockage performant, flexible et mutualisé de type SAN (SAS 3 Gb)
    • 3 licences Windows Server® 2008 Datacenter avec Hyper-VTM (incluant un nombre illimité de licences Windows Server® pour les machines virtuelles)
    • 1 licence Windows Server® 2008 Standard pour le serveur d'administration
    • Les licences System Center (SCVMM et SCDPM) pour administrer, sauvegarder et restaurer la plateforme de virtualisation

    Lien : Agility Center

     

    Guide de licencing pour les hébergeurs

    Ce document de 28 pages couvre des scénarii comme :

    • Unmanaged dedicated server with Hyper-V
    • Virtual dedicated server (VDS) for Web scenarios (using Windows Server guests in anonymous mode)
    • Virtual dedicated server with line-of-business (LOB) scenarios (using Windows Server guests in authenticated mode)
    • Use of virtualization in shared hosting scenarios
    • Desktops as Hyper-V guests
    • End customers running Microsoft products using the customers own licenses on the guest OS

    Lien : Hyper-V Hosting Guidance: Using and Licensing Microsoft Server Products in Hyper-V Virtual Hosting Scenarios

     

    Windows 7 et Windows Server 2008 R2

    Compilation non exhaustive des nouvelles fonctionnalités de ces deux systèmes qui ne font pas forcément la une :

      • Single Client SKU
        • Toutes les éditions seront incluses dans les distributions, la clé d’activation fournie activera les fonctionnalités correspondantes
      • Upgrade Compliance Checking
        • L’assistant affichera désormais une liste de recommandations dans l'es scénarii d’upgrade : “You must make the following changes before upgrading Windows”
      • BitLocker
        • Une partition de 200MB sera automatiquement créée pendant l’installation (la taille de cette partition n’est pas définitive)
        • Introduction du support des médias amovibles
        • Nouvelles méthodes de déblocage pour les disques de données :
          • Paraphrase
          • Smart Card
      • Setup/WAIK
        • DISM (Deployment Image and Servicing Management) remplacera certains des outils du WAIK/OPK
      • MDT 2010
        • Cible : disponible 60 jours après les versions RTM de Windows 7/Windows Server 2008 R2
      • WDS : Multicast Improvements
        • Possibilité de déconnecter automatiquement les clients lents
        • Possibilité de transfert sur des “courants” de vitesses différentes
      • WDS : Driver Provisioning
        • Possibilité d’ajouter et de configurer des packages de drivers sur le serveur pour les distribuer sur les machines déployées en fonction du matériel
        • Possibilité d’ajouter des drivers aux images de boot
      • WDS :
        • Support du déploiement de VHD (Windows 7 / Windows Server 2008 R2)
      • WoW64 Enhancements
        • Wow64 sera une fonctionnalité optionnelle sur les éditions Server Core x64
      • Offline Servicing of Registry
        • Pour écrire dans la base de registre sans charger les hives
      • Support for extended APIC (x2APIC)
        • Support de plus de 256 CPUs
      • Device Management
        • Silent on-demand device installation : installation silencieuse de driver si disponible sur Windows Update (même pour les utilisateurs sans privilèges)
      • VHDs
        • Native support for VHDs :
          • Possibilité de démarrer Windows 7/Windows Server 2008 R2 depuis un VHD (hors scénario virtualisation)
          • Manipulation des VHDs depuis Disk Manager/Diskpart
        • Ajout/suppression de disques dans une machine virtuelle
      • Activation
        • Licensing Manager MMC 

     

    Support matériel pour Windows 7

    Quelques drivers et logiciels pour les périphériques Microsoft pour Windows 7 (LifeCams, Presenter Mouse 8000, …).

    Lien : Microsoft Hardware Support for Windows 7

     

    Partagez vos documents, photos, etc… depuis Windows 7

    Avec cet outil, vous pourrez partager vos données avec les personnes que vous souhaitez.

    Lien : Windows Live ID Sign-in Assistant 6.5 (Beta)

     

    Un peu d’information technique sur Direct Access

    Vous connaissez peut-être cette fonctionnalité qui permet d’accéder aux ressources d’un réseau d’entreprise sans monter de VPN mais en restant très sécurisé ?

    Non ? Voici un document qui présente l’architecture technique nécessaire pour faire fonctionner cette technologie (ou pourrait-on dire cette combinaison de technologies).

    Lien : Technical Overview of DirectAccess in Windows 7 and Windows Server 2008 R2

    image

     

    Windows Vista Resource Kit en téléchargement

    Sous forme d’un PDF de 45MB.

    Lien : Windows Vista Resource Kit, 2nd Edition

     

    In the cloud…

    Iron Mountain a annoncé la disponibilité de sa solution CloudRecovery pour System Center DPM 2007.

    Lien : ONLINE BACKUP AND RECOVERY FOR Microsoft® System Center Data Protection Manager (DPM) 2007

    Lien : Microsoft DPM website for cloud backup

     

    Windows “Expert mode” ?

    Why doesn't Windows have an "expert mode"? 

     Open-mouthed

    Et une dernière pour la route

    Parcequ’il y a du lourd de chez lourd dans cette équipe : How the Red Dog dream team built a cloud OS from scratch

     

     

    Vincent & Guillaume

  • Meilleures pratiques Hyper-V : le teaming

    Dans ce bulletin, je vais aborder l’aspect de l’aggrégation de lien aussi appelée “Teaming” sur les plateformes Hyper-V. Il y a d’autres applications liées à cette fonctionnalité comme la tolérance de panne, ou répartition de charge mais j’en resterais à la fonctionnalité générique.

    Pour plus de détails : Tutorial on Link Aggregation and Trunking

    En ce qui concerne la mise en oeuvre d’une telle solution sur des serveurs Windows, la politique de support de Microsoft n’est pas ambigüe : les technologies mises en oeuvre pour faire du teaming sont supportées par le fabricant des cartes réseau. La fiche technique suivante en est l’application : KB254101 - Network adapter teaming and server clustering.

    Ce qui peut vouloir dire en clair : dans le cas où un dysfonctionnement interviendrait et dans lequel la pile réseau pourrait être impliquée, Microsoft n’a pas les moyens de diagnostiquer les problèmes qui pourraient provenir d’un composant tierce partie. Ce qui implique que dans de telles configurations, le Support Microsoft pourrait avoir à demander la désactivation du teaming pour isoler les composants afin de mettre en évidence celui qui pourrait être la cause du problème.

     

     

    Cependant, cette fiche n’aborde que l’aspect cluster… alors qu’en est-il pour Hyper-V ?

    La réponse est la même que pour le cluster à la différence qu’il n’existe aucun document officiel le spécifiant… Du moins pas encore.

     

     

    Alors que faire ? La réponse est simple encore une fois : se reposer sur le constructeur.

     

    HP a mis à disposition un document public décrivant la façon de mettre en oeuvre sa solution de teaming pour Hyper-V : Using HP ProLiant Network Teaming Software with Microsoft Windows Server 2008 Hyper-V.

    En ce qui concerne Broadcom, rien à l’horizon (du moins, je n’ai rien trouvé). Cependant, quelques testeurs sont parvenus à faire fonctionner la solution Broadcom (Broadcom Advanced Control Suite) sur Hyper-V :

    Using VMM to manage you Hyper-V NIC teams created with BACS

    Broadcom NIC Teaming and Hyper-V

    Note : ces liens n’engagent en rien Microsoft sur la faisabilité ni la supportabilité de ce qui y est décrit.

     

     

    Quelques liens supplémentaires vers des ressources constructeurs (il y en a d’autres bien sûr) :

    Dell - Hyper-V Important Information Guide

    Dell Networking Solutions Guide for Microsoft Hyper-V

    HP Virtualization with Microsoft où l’on peut trouver un lien vers la matrice de supportabilité des serveurs HP pour Hyper-V : Windows support for HP ProLiant Servers

    IBM System x and BladeCenter servers with Microsoft virtualization

     

     

    Autre question que l’on m’a posé lorsque j’ai présenté Hyper-V : comment configurer le teaming dans un serveur Core ?

    Je sais que HP, via le SmartStart Scripting Tookit, permet d’exporter une configuration de teaming dans un fichier XML et de l’importer sur un autre serveur en ligne de commande. Ce qui se révèle assez aisé.

    Pour les autres solutions, je n’en ai pas la moindre idée… et vous me pardonnerez !

     

     

    Guillaume

    Windows Core Support Escalation Engineer

  • Meilleures pratiques Hyper-V : scan temps réel des anti-virus

    Suite au bulletin identifiant après quelques mois les incidents le plus souvent rencontrés avec Hyper-V, voici le premier bulletin présentant les meilleurs pratiques a adopter afin d’optimiser la mise en place de Hyper-V.

    Certains comportements, peut-être liées au côté parfois un peu intrusif des anti-virus (ou au côté parfois un peu protecteur des mécanismes Windows), peuvent avoir pour conséquences certains dysfonctionnements comme ceux-ci :

    • Lors de la creation ou du démarrage d’une machine virtuelle, les messages suivants peuvent être affichés :
      • The requested operation cannot be performed on a file with a user-mapped section open. (0x800704C8)
      • ‘VMName’ Microsoft Synthetic Ethernet Port (Instance ID {7E0DA81A-A7B4-4DFD-869F-37002C36D816}): Failed to Power On with Error 'The specified network resource or device is no longer available.' (0x80070037).
      • The I/O operation has been aborted because of either a thread exit or an application request. (0x800703E3)
    • Les machines virtuelles disparaissent de la console Hyper-V Management Console

    Dans ces cas de figure, nous recommandons d’ajouter des exclusions au scan temps-réel des anti-virus installés sur les hôtes.

    Exclure :

    • Le répertoire par défaut des fichiers de configuration des machines virtuelles : par défaut C:\ProgramData\Microsoft\Windows\Hyper-V
      • Le(s) répertoire(s) des fichiers de configuration machines virtuelles qui auraient pu être créés
    • Le répertoire contenant les VHDs : par défaut C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks
      • Le(s) répertoire(s) contenant les VHDs qui auraient pu être créés
    • Le(s) répertoire(s) où sont stockés les snapshots
    • Le fichier VMMS.EXE (c:\windows\system32)
    • Le fichier VMWP.EXE (c:\windows\system32)

    Vous retrouverez l'intégralité de l'article technique à l'adresse suivante : http://support.microsoft.com/kb/961804

    Pour de plus amples informations, je vous propose de vous inscrire pour assister à la JTE du 31 mars prochain :

    http://blogs.technet.com/windowsinternals/archive/2008/12/18/journ-e-technique-d-expertise-th-matique-windows-server-2008.aspx

    Raphael

    Windows Core Support Engineer

  • Lenteur, hang et erreur 2019, 2020

    Les problématiques de performances dégradées sont régulièrement remontées à notre attention dans le cadre de notre métier de support. Parmi elles, les consommations excessives de certains types de pool mémoire que nous appelons entre nous les 2019 et les 2020.

    Ce bulletin va donc traiter de ces problématiques.

     

    Ici nous allons nous focaliser uniquement sur l'architecture 32Bits.

    Par défaut, sous Windows 32bits chaque processus utilisateur peut avoir jusqu'à 2Go d'espace d'adressage privé et le système prend les 2 autres restants. Ci-dessous un schéma représentant l'espace d'adressage virtuel en 32Bits.

    clip_image002[9]

    Il est possible d'allouer plus de mémoire en mode user via l'option /3GB dans le boot.ini. Cette option n'est exploitable que pour des applications qui sont à même d'utiliser de l'espace mémoire au delà des 2Go, c'est à dire celle compilées pour avoir dans leur fichier image le flag IMAGE_FILE_LARGE_ADDRESS_AWARE. Ce fût le cas par exemple, pour des applications de base de données entre autres.

    clip_image002[7]

    L'utilisation de l'option /3GB ne doit pas être prise à la légère. Le fait d'utiliser cette option, va allouer 3Go en mode User et réduire de 1Go le mode kernel, donc notre kernel n'a plus qu'un seul Giga pour son utilisation. Comme vous le comprendrez cela peut avoir un impact sur les performances.

    Dans l'espace Kernel nous avons entre autre 2 espaces mémoire appelés Paged Pool et Non Paged Pool.

    clip_image002[5]

    Le Paged Pool est la région de la mémoire virtuelle de l’espace système qui peut être déchargée vers le fichier de pagination puis rechargée en mémoire physique.

    Les pilotes de périphérique qui n’ont pas besoin d’accéder à la mémoire depuis le niveau DPC/Dispatch ou supérieur peuvent utiliser le pool paginé, qui est accessible depuis n’importe quel contexte de processus.

    Le Non Paged Pool se compose de plages d’adresses virtuelles qui sont assurées de résider en permanence en mémoire physique et auxquelles on peut donc accéder en permanence (depuis n’importe quel IRQL et contexte de processus) sans risquer d’avoir une faute de page.

    Les pilotes faisant appel à ces espaces mémoire utilisent les fonctions comme ExAllocatePoolWithTag et ExFreePoolWithTag.

    Ces 2 espaces mémoire ne sont pas illimités : En fonction de la taille de la mémoire physique et de l'utilisation où pas du /3GB la quantité de Paged Pool et Non Paged Pool peut être différente.

    Ci-dessous un tableau indiquant approximativement la quantité de Paged Pool et Non Paged Pool dans Windows 2000 :

    clip_image001[5]

    Ci-dessous un tableau indiquant approximativement la quantité de Paged Pool et Non Paged Pool Windows 2003 32Bit :

    clip_image001[7]

     

    Si vous voulez connaître la taille maximale de Non Paged Pool ou Paged Pool disponible sur votre serveur (taille calculée au démarrage du serveur), suivre la procédure suivante :

    1. Télécharger Process Explorer from the Microsoft Sysinternals Site.
    2. Télécharger les Microsoft Debugging Tools
    3. Extraire les fichiers dans un répertoire C:\ProcessExplorer
    4. Installer les Microsoft Debugging Tools dans C:\Debuggers par exemple.
    5. Lancer ProcExp.exe
    6. Ensuite configurer le chemin vers le fichiers dbghelp.dll et le chemin vers les symbols, vous devez au préalable créer un répertoire qui contiendra les symbols télécharger depuis le serveur de Symbols public de Microsoft, voir la copie d’écran ci-dessous.

    clip_image001

    1. Dans Process Explorer, sélectionner  View ... System Information ... et regarder la section Kernel memory.  Paged Limit et NonPaged Limit montre la valeur maximale sur le système que vous examinez.
      clip_image001

    Il arrive parfois que vous ayez un serveur qui devient de plus en plus lent jusqu'au hang total du serveur lui même, vous obligeant à procéder à un redémarrage électrique du serveur.

    Fréquemment ce genre de problème est lié à un manque de ressources. Nous allons voir ici, le manque de ressources lié au Paged Pool ou Non Paged Pool.

    Suite au redémarrage du serveur, le fonctionnement redeviens normal, jusqu'à la prochaine apparition des problèmes de lenteur et/ou de hang. Il peut se passer plusieurs heures, plusieurs jours ou plusieurs semaines avant la réapparition des symptômes.

    Généralement si vous regardez dans le journal Système vous devriez trouver des erreurs de source Srv et comme Event ID 2019 ou 2020. Les 2019 correspondent à un manque de Non Paged Pool et les 2020 à un manque de Paged Pool.

    Event ID 2019

    Event Type: Error

    Event Source: Srv

    Event Category: None

    Event ID: 2019

    Description: The server was unable to allocate from the system NonPaged pool because the pool was empty.

     

    Event ID 2020

    Event Type: Error

    Event Source: Srv

    Event Category: None

    Description: The server was unable to allocate from the system paged pool because the pool was empty.

     

    Ce manque de Paged Pool ou Non Paged Pool est souvent lié à une fuite mémoire (memory leak).

    C'est le Service Serveur (Srv.sys) qui logue ces erreurs. Dans de rare cas il se peut que le Service Server ne puisse pas générer ces évents, toutefois cela ne veut pas dire que ce ne soit pas un problème avec les Paged Pool ou Non Paged Pool.

    Lorsque vous avez des symptômes de lenteur qui apparaissent dans le temps avec l'un des 2 évènements ID cité ci-dessus, le plan d'action à mettre en place est le suivant :

    Perfmon

    1. Faire un clic droit sur “Journaux de compteur”, cliquer ensuite sur “Nouveaux paramètres de journal”, donner un nom à ce log, puis cliquer sur OK.
    2. Sur l’onglet Général, cliquer sur Ajouter des objets.
      Ajouter les objets de performance suivants :
      · Memory (Mémoire)
      · Process (Processus)
      Et sélectionner tout les compteurs et toutes les instances pour chacun de ces objets
    3. Dans l’onglet Général, configurez le temps d’intervalle de (voir le tableau ci-dessous)
    4. Dans l’onglet Fichiers journaux puis dans Type de fichier journal sélectionner Fichier binaire puis cliquer sur Configurer, dans Taille du fichier journal indiquer 200Mo puis cliquer sur OK.
    5. Ensuite dans l’onglet Planification cochez « Quand le fichier journal de 200Mo est plein » puis cochez « Commencer un nouveau fichier journal »
    6. Lancer la collecte des informations

    clip_image002[3]

    Memsnap (fournis dans les Support Tools se trouvant sur le CD d'installation de Windows 2003)

    Planifier l'exécution de Memsnap

    • En version Windows 2003 : memsnap –p path\namefile.log (remplacer path par le le chemin ou sera écrit le fichier)
    • En version Windows 2000 : memsnap –t path\namefile.log (remplacer path par le le chemin ou sera écrit le fichier)

    Lorsque le problème se reproduit, vous allez analyser le fichier de log Perfmon généré.

    Dans ce log Perfmon, vous devez regarder dans l'objet Memory (Mémoire) les compteurs:

    • Pool Non Paged Bytes  (Octets de réserve non paginée en français)
    • Pool Paged Bytes (Octets de réserve paginée)

    Vous devez mettre à l'échelle ces compteurs afin de voir leur progression dans le temps.

    Dans le cas d'une fuite mémoire, vous devriez voir une consommation croissante sans relâchement de la mémoire Paged Pool ou Non Paged Pool, la consommation peut être linéaire, par escalier ou brutal.

    Ci-dessous un exemple de fuite mémoire, ici en blanc et concernant le Non Paged Pool:

    image

    Après avoir identifié la fuite mémoire, vous pouvez regarder dans l'objet Processus (Process) les compteurs Pool Non Paged Bytes et/ou Pool Paged Bytes afin de voir si l'un des processus est à l'origine de la fuite mémoire. Si vous ne trouvez pas un processus qui semble effectuer une fuite mémoire ou si c'est le processus System, vous devez analyser le log Memsnap afin d'identifier quel driver est à l'origine de la fuite mémoire.

    Memsnap va permettre de prendre des "clichés" de l'utilisation de l'espace mémoire du Paged Pool et Non Paged Pool.

    Lorsqu'un composant fait une demande d'allocation de cette mémoire, un tag est positionné afin de pouvoir suivre les demandes d'allocations. Ce tag est comme une balise, qui nous permettra d'identifier le driver.

    Le tag est sur 4 Bytes, chaque drivers a en principe un tag qui lui est propre.

    Ci-dessous un petit extrait du fichier Memsnap

    clip_image002[1]

    Dans le log Memsnap, vous devez regarder quel tag consomme de façon croissante du Paged Pool ou Non Paged Pool.

    Une fois que vous avez identifié le Tag, vous pouvez rechercher quel driver utilise ce tag.

    Pour cela, via un cmd, positionnez-vous dans le répertoire Windows\System32\Drivers puis exécuter la commande suivante:

    C:\WINDOWS\system32\drivers>Findstr /M "XXXX" *.sys (XXXX correspond au tag)

    Ensuite en fonction du résultat, contacter l'éditeur de ce driver afin de lui remonter le problème et obtenir un correctif ou mettre à jour vous même le drivers vers une version plus récente.

    Dans un prochain bulletin, nous parlerons des problèmes de lenteurs et de hang liés à un manque de Paged Pool et Non Paged Pool sans qu’il y ait de fuite mémoire (memory leak).

     

    Philippe

    Windows Core Senior Support Escalation Engineer

  • Journée Technique d’Expertise Thématique – Virtualisation : Comment consolider votre environnement à l’aide des solutions Microsoft

    Une nouvelle journée de geeks en perspective ! Malheureusement réservée encore une fois à nos clients Premier. Elle prendra place le 31 Mars 2009.

    Nous serons plus nombreux cette fois, car Serge, Vincent, Philippe, Hervé et moi-même seront sur les planches !

    header

    “Au cours de la présentation des différentes solutions de virtualisation Microsoft, nous verrons comment une entreprise peut mener à bien la consolidation de son environnement en le virtualisant. L’objectif étant d’assurer la stabilité de la plateforme virtualisée tout en s’appuyant sur le Failover Clustering et les bonnes pratiques, facilitant à terme le passage des environnements critiques sur ce type de plateforme en assurant un niveau de disponibilité élevé.”

    Matinée

    Hyper-V

      • Qu’est-ce qu’un hyperviseur, les différents types
      • Comparaison des types d’hyperviseurs
      • Les nouveautés : CSV & Live Migration et PowerShell
      • AzMan
      • Démos

    SCVMM

      • Architecture
      • Utilisation
      • Administration
      • Démos

    Après-midi

    MEDV / App-V

      • Virtualisation de bureau
      • Virtualisation d’application
      • Démos

    DPM et Hyper-V

      • Caractéristiques
      • Protéger un Guest OS
      • Restaurer un Guest OS vers son emplacement d’origine
      • Restaurer un Guest OS vers un partage réseau

    Seront présents également des Product Managers, des représentants du licencing et des managers des équipes support qui pourront répondre à vos questions.

    Comme indiqué plus haut, cette journée est réservée aux clients Premier. Pour ceux d’entre vous qui disposent d’un tel contrat, contactez votre TAM pour obtenir les modalités d’inscriptions.

    Nous vous donnons rendez-vous pour cette journée qui vous permettra d’appréhender les solutions de virtualisation proposées par Microsoft en comprenant ce qui se cache derrière les acronymes.

    Guillaume

    Windows Core Support Escalation Engineer

  • Important : déblocage de l’installation de Service Packs sur Windows

    Nouvelle alerte proactive concernant Windows…

    Les kits permettant de bloquer l’installation automatique du Service Pack 3 de Windows XP et du Service Pack 1 de Windows Vista depuis Windows Update vont bientôt expirer.

    • Windows Vista Service Pack 1 : le 28 Avril 2009
    • Windows XP Service Pack 3 : le 19 May 2009

     

    Une FAQ concernant ces kits de blocage est disponible ici.

    Je ne saurais trop vous recommander de vous préparer à ces mises à jour :

    Guillaume

    Windows Core Support Escalation Engineer

  • WSUS 2 est mort, vive WSUS 3

    Technorati Tags:

    Chacun devrait le savoir, WSUS 2.0 SP1 ne sera plus supporté à partir de la fin Avril 2009, tout comme la version 3.0 (RTM = SP0). Reste donc WSUS 3.0 SP1 aussi appelé WSUS 3.1.

    Plus d’informations sur la fin du support sur la page FAQ du produit : http://technet.microsoft.com/en-us/wsus/bb980625.aspx

    Q. When does support end for WSUS 2.0?

    A. Support for WSUS 2.0 has already ended. WSUS 2.0 SP1 support will end April 2009 (two years after WSUS 3.0 was released).

     

    Nous allons voir comment procéder à la migration d’un serveur WSUS 2.0 vers WSUS 3.1

    La migration vers WSUS 3.1 se fait en lieu et place de la version déjà installée contrairement au passage de SUS 1.0 vers WSUS 2.0. Sur le papier tout doit se faire sans problème, mais pour peu que votre WSUS ait un peu de vécu, on n’est pas à l’abris d’un petit problème. La procédure qui va suivre va nous permettre de faire l’opération de migration même en cas de pépin.

    Tout d’abord, préparons le terrain en téléchargeant les prérequis et quelques outils qui pourront se réveler utiles !

    Prérequis:

    Outils supplémentaires:

     

    Installons les 2 versions des “API Samples and Tools” et le WSUSMigrationImport dans le répertoire WSUSMigrate\WSUSMigrationImport des API v3 (cette version corrige le problème décrit dans l’article http://support.microsoft.com/kb/945348)

    Par mesure de précaution, nous allons sauvegarder la base de données SQL sur laquelle est basé WSUS. Un simple backup des fichiers de la base avec NTBackup suffit. Les 2 fichiers à sauvegarder sont SUSDB.MDF et SUSDB_LOG.LDF. Cela permettra un retour arrière si nécessaire.

    Sauvegarder vos paramètres de synchronisation (proxy, source des mises à jour, classifications, produits, langues …) sur le support de votre choix (papier, document word, capture écran)

    Après la ceinture, les bretelles … Nous allons exporter les approbations et les groupes WSUS (les 2 sont liés) dans un fichier .xml, si jamais il fallait repartir d’une installation “from scratch” cela évitera de revalider les mises à jour une par une en rejouant automatiquement ces approbations. Lancer la commande suivante :

    %Program Files%\Update Services API Samples and Tools\WSUSMigrate\WSUSMigrationExport\wsusmigrationExport groupapprobations.xml

    Une fois l’export terminé, la migration en temps que telle peut commencer. La bonne pratique consiste à lancer le setup d’installation de WSUS 3.1 par la ligne de commande pour lui ajouter le paramètre /g (qui signifie : upGrade)

    WSUSSetup_30SP1_x86.exe /g

    La migration commence, et devrait normalement aboutir correctement. Sauf que la vie est parfois injuste et que le setup peut s’arrêter avant la fin. Dans ce cas, une installation propre ou “from scratch” est obligatoire. Désinstaller la version 2.0, le moteur de base de données si vous utilisez MSDE ou wMSDE car la version 3 est basée sur WIDB (Windows Internal DataBase). Garder seulement le “Content” ce qui épargnera le retéléchargement des binaires des mises à jour. Une fois le serveur débarassé de la version précédente, installer la version 3.1. A la fin de l’installation, l’assistant de configuration s’ouvre et vous demande de remplir les champs nécessaires à son fonctionnement (Proxy, Source des données, Classifications et Produits à synchroniser, Langues à prendre en charge …). Synchroniser le serveur afin de récupérer le catalogue des mises à jour que vous souhaitez déployer sur votre parc. Lorsque le serveur a fini sa synchronisation, que toutes les mises à jour de chacun des produits et des classifications sont bien présentes, vous pouvez alors réimporter les groupes et les approbations. Pour cela, utiliser la commande suivante (celle téléchargée sur Codeplex) :

    %Program Files%\Update Services API Samples and Tools\WSUSMigrate\WSUSMigrationImport\wsusmigrationImport groupapprobations.xml All None

    Lorsque la magie de la commande a fini d’opérer, vous avez un serveur WSUS 3.1 prêt à distribuer les mêmes mises à jour aux mêmes clients que votre ancien WSUS 2.

    Les clients devront effectuer leur cycle de détection avant de réapparaitre dans la console. Au bout de 2 ou 3 jours, l’ensemble du parc devrait s’être réinscrit.

    Le cas SQL Server 2005 …

    Certains d’entre vous auront peut être effectué un déplacement de la base de données de WSUS vers la version complète de SQL afin de bénéficier des outils d’administration ou pour pouvoir déporter la base sur une autre machine.

    Le guide d’opérations de WSUS décrit la marche à suivre (http://technet.microsoft.com/en-us/library/cc708558.aspx), sauf qu’il y a un petit manque. Cette démarche ne modifie pas les informations dans le registre et a pour conséquence de bloquer la migration de WSUS vers la version 3 (ou vers le SP1 pour ceux qui sont déjà en 3.0) . Le setup ne peut plus se connecter à la base de données avec ces informations. En modifiant les valeurs de registre suivantes sous HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Update Services\Server\Setup on peut rétablir la situation :

    Base de données =>

    Valeurs de Registre
    ll
    V

    wMSDE

    Windows Internal DataBase

    SQL Server 2005 Local

    SQL Server 2005 Remote

    WmsedInstalled

    1 0 0 0

    wYukonInstalled

    0

    1

    0

    0

    SqlInstanceIsRemote 

    0

    0

    0

    1

    Après avoir ajusté vos valeurs de registre, la migration doit s’effectuer correctement.

     

    GaetanB – Windows Core Support Engineer

  • Correctif corrigeant la sauvegarde des VMs sous Hyper-V

    Un nouveau correctif est disponible pour Hyper-V.

    Celui-ci permet de corriger certains comportements en erreur mais surtout permet de sauvegarder les machines virtuelles à chaud depuis System Center DPM 2007 SP1.

     

    KB959962 - An update is available for Windows Server 2008-based computers to address issues with backing up and restoring Hyper-V virtual machines

     

    Guillaume

    Windows Core Support Escalation Engineer

  • Important : soyez proactifs !

    Comme vous ne le savez peut-être pas, Windows Server 2003 Service Pack 1 ne sera plus supporté à partir du 14 avril 2009.

    Cela veut dire pour vous que tout incident ouvert au support Microsoft pour traiter un problème apparaissant sur cette version de système ne pourra plus être traitée à partir de cette date…

     

    Pourquoi ? Rien de neuf dans cette politique mais sans rentrer dans des considérations qui me dépassent, il y a bien un momet où les produits qui vieillissent doivent laisser la place aux versions plus récentes. Ceci permettant de focaliser le maximum de ressources sur les nouveaux produits en cours d’adoption afin de les rendre les plus stables et performants possible.

    Vous imaginez un constructeur automobile continuer à fournir des pièces pour une voiture créée en 1937 ? Cela aurait un coût exhorbitant pour le peu de modèles restant en circulation… Et à l’heure d’aujourd’hui, on ne compte plus en années en ce qui concerne l’évolution technologique !

     

    Voici quelques liens qui vous permettront de mieux comprendre le cycle de vie des produits Microsoft :

    Donc, un seul crédo : passez au Service Pack 2 avant le 14 Avril ! même s’il est clair que cela peut se réveler complexe dans un environnement de production, faites-le !

     

    Quelques recommandations cependant :

     

    Guillaume

    Windows Core Support Escalation Engineer

  • Compilation d’articles techniques Hyper-V (#2)

    La suite des articles concernant Hyper-V, parmi lesquelles des oublis du bulletin précédent et de nouvelles publications :

    KB959403 - Windows Server 2008 may restart unexpectedly when you open the Hyper-V manager console to manage virtual machines

    KB958668 - You cannot shutdown a locked Windows 2000 SP4 virtual machine in Hyper-V Manager on a server that is running Windows Server 2008

    KB959781 - Windows 2000 with Integration Services may shut down slowly while running as a guest on Server 2008 with Hyper-V

    KB961661 - Video performance may decrease when a Windows Server 2008-based computer has the Hyper-V role enabled and an accelerated display adapter installed

    KB954283 - You experience issues after you install Windows Server 2008 Hyper-V Integration Services on a Vista Home Premium virtual machine or a Vista Home Basic virtual machine

    KB960578 - The IRET and IRETD instructions do not support the Nested Task (NT) flag in protected mode in a Windows Server 2008 Hyper-V environment

    KB958669 - Event ID 12 is logged in the System log when you back up or compact a Hyper-V virtual hard disk on a Windows Server 2008-based computer

    KB959403 - Windows Server 2008 may restart unexpectedly when you open the Hyper-V manager console to manage virtual machines

    KB954357 -Error message when you use the Virtual Machine Connection tool to connect to a virtual machine on a Windows Server 2008 Hyper-V-based computer: "A connection will not be made because credentials may not be sent to the remote computer"

    KB959962 - An update is available for Windows Server 2008-based computers to address issues with backing up and restoring Hyper-V virtual machines

     

    Et depuis peu, il existe un lien sur TechNet qui maintient à jour une liste des correctifs mettant à jour Hyper-V : Hyper-V Update List

    Ajoutez cette adresse à vos favoris !

     

    Guillaume

    Windows Core Support Escalation Engineer

  • Ne plus afficher les boîtes de dialogue relatives aux évènements Plug and Play

    Dans le cadre des déploiements de Windows XP ou de Windows Server 2003, si les drivers ne sont pas intégrés dans l’image ou dans l’installation unattended, l’apparition des messages annonçant la découverte d’un nouveau périphérique peut se révéler très vite agaçant !

    Cette nouvelle fiche technique met à disposition un correctif permettant de les supprimer :

    KB938596 - Hotfix adds new functionality to suppress Plug and Play-related UI messages in Windows Server 2003 or in Windows XP

     

    Guillaume

    Windows Core Support Escalation Engineer

  • Internet Explorer 8 Blocker Toolkit

    Le Blocker Toolkit d’Internet Explorer 8 est enfin disponible.

    Tout comme Internet Explorer 7, Internet Explorer 8 sera distribué via les mises à jour automatiques (AU), Windows update (WU) et Microsoft update (MU).

    Internet Explorer 8 sera disponible comme une mise à jour prioritaire sur Windows XP SP2 et Windows Server 2003 SP2.

    Il s’agira d’une mise à jour importante sur Windows Vista et Windows Server 2008.

     

    Dans un environnement d’entreprise, le déploiement d’un nouveau navigateur dépend souvent de la finalisation des tests de compatibilité des applications et des sites internes.

    Afin d’empêcher les utilisateurs d’installer IE8 par un scan manuel sur les sites Windows update ou Microsoft update ou par les mises à jour automatiques, il est possible d’installer le Blocker Toolkit d’Internet Explorer 8 (disponible en anglais uniquement).

    Note: Il n’empêche pas les utilisateurs qui sont administrateurs locaux de leur machine d’installer Internet Explorer 8 depuis un media externe ou le centre de téléchargement Microsoft par exemple.

     Il est téléchargeable depuis le centre de téléchargement Microsoft depuis le lien suivant :

    http://www.microsoft.com/downloads/details.aspx?FamilyID=21687628-5806-4ba6-9e4e-8e224ec6dd8c&displaylang=en

     

    Le Blocker Toolkit n’a pas besoin d’être déployé dans des organisations qui utilisent des solutions de gestion de mise à jour telles que Windows Server Update Services (WSUS), System Center Configuration Manager (SCCM) ou Systems Management Server (SMS).

     

    Le Blocker Toolkit n’a pas de date d’expiration et contient deux composants :

    • Le script (IE80Blocker.cmd ) qui crée une clé de registre et positionne la valeur associée pour bloquer ou débloquer la distribution automatique d’Internet Explorer 8 sur une machine locale ou distante.

    Paramètres : /B :bloque /U :débloque /H :aide

    Exemple : IE80Blocker.cmd <nom de la machine> /B

     

    Clé de registre: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Setup\8.0
    Nom de la valeur: DoNotAllowIE80

    · Si la valeur est égale à 0, la distribution n’est pas bloquée

    · Si la valeur est égale à 1, la distribution est bloquée

    • Le modèle d’administration (fichier adm) pour la mise en place par stratégie de groupe.

    Il permet aux administrateurs d’importer les nouveaux paramètres de stratégie de groupe du Toolkit pour bloquer ou débloquer la distribution automatique d’Internet Explorer 8.

    Note : il ne permet qu’une configuration au niveau machine et pas utilisateur.

     

    Après l’ajout du fichier adm, cliquer droit sur Modèles d'administration dans la console de stratégie de groupe puis sur Affichage et sélectionner Filtrage :

    clip_image002

    Décocher « Afficher uniquement les paramètres de stratégie pouvant être entièrement gérés »

    clip_image004

     

    Pour Windows Vista ou Windows server 2008 la stratégie sera disponible sous :

    Configuration ordinateur / Modèles d’administration / Modèles d'administration classiques (ADM) / Windows Components / Windows Update / Automatic Updates Blockers v2

    Pour Windows XP ou Windows Server 2003 la stratégie sera disponible sous :

    Configuration ordinateur / Modèles d'administration / Windows Components / Windows Update / Automatic Updates Blockers v2

     

    Liens complémentaires :

    BLOG Internet Explorer

    http://blogs.msdn.com/ie/archive/2009/01/06/ie8-blocker-toolkit-available-today.aspx

    Technet FAQ du Blocker Toolkit

    http://technet.microsoft.com/en-us/updatemanagement/dd365124.aspx

    Internet Explorer 8 Delivery through Automatic Updates

    http://technet.microsoft.com/en-us/updatemanagement/dd365125.aspx

     

    Laetitia

    Technical Lead

  • Comment faire démarrer un DVD WinPE de plus de 4GB

    Dans le cadre du déploiement de systèmes Windows, il vous est peut-être arrivé d’utiliser un média bootable (CD-ROM, DVD) contenant votre image de référence incluant elle-même toutes les applications que vous utilisez dans votre environnement.

    Vous aurez remarqué que plus Windows et les applications (quelles qu’elles soient) évoluent et plus l’espace nécessaire pour stocker cette image est important.

    Dans ce cas de figure il peut arriver que l’image (ou les images) dépassent les 4GB, entrainant une impossibilité de démarrer sur ce média.

    Ceci concerne les médias de démarrage construits avec WinPE 2.x et oscdimg (fourni avec le WAIK) et l’erreur se concrétise par le message suivant lors des tentatives de démarrage :

    File: \Boot\BCD

    Status: 0xc000014c

    Info: An error occurred while attempting to read the boot configuration data.

    Cette erreur peut survenir si les fichiers requis pour le démarrage sont situés au delà des 4 premiers Giga Octets sur le DVD.

    La partie bootable de WinPE doit être dans les 4 premiers Go du DVD.

    Il est nécessaire d'ordonner la façon dont les fichiers sont placés sur le media afin que les fichiers critiques pour le boot se trouvent au dessus du reste des données.
    Avec 4, 7 GO, les fichiers de boot ne sont pas disponibles assez tôt dans l'ISO et on obtient l'erreur ci-dessus.

    • Pour remédier à ce problème il faut générer un fichier ISO avec la ligne de commande suivante :

    OSCDIMG -m -n -yoC:\TEMP\bootorder.txt -bC:\WINPE_X86\etfsboot.com C:\WINPE_X86\ISO C:\TEMP\WINPE.ISO

    où :

    • -bC:\WINPE_X86\etfsboot.com : le fichier permettant de rendre le fichier ISO bootable (attention : pas d’espace entre -b et le chemin vers ce fichier)
    • -bC:\WINPE_X86\ISO : le répertoire contenant la structure du fichier ISO (et par conséquent du DVD à venir)
    • C:\TEMP\WINPE.ISO : le fichier ISO qui sera généré
    • -yoC:\TEMP\bootorder.txt : un fichier texte contenant l’ordre de placement des fichiers dans l’ISO (attention : pas d’espace entre -yo et le chemin vers ce fichier)

    Exemple de fichier BOOTORDER.TXT :

    bootmgr
    boot\bcd
    boot\boot.sdi
    boot\bootfix.bin
    boot\bootsect.exe
    boot\etfsboot.com
    boot\memtest.efi
    boot\memtest.exe
    boot\en-us\bootsect.exe.mui
    boot\fonts\chs_boot.ttf
    boot\fonts\cht_boot.ttf
    boot\fonts\jpn_boot.ttf
    boot\fonts\kor_boot.ttf
    boot\fonts\wgl4_boot.ttf
    sources\boot.wim

    Une fois le fichier ISO généré, vous pouvez le graver à l’aide de DVDBURN.EXE (inclus dans le Resource Kit de Windows Server 2003).

    Note : OSCDIMG et DVDBURN sont les seuls outils permettant de générer des fichiers ISO bootables et de les graver sur des médias de manière supportée par Microsoft.

     

    Liens complémentaires:

     

    Oscdimg Command-Line Options

    http://technet.microsoft.com/en-us/library/cc749036.aspx

     

    Laetitia

    Technical Lead

  • Fix It, du nouveau

    image

    A propos de cette initiative visant à automatiser la correction de problèmes automatiquement depuis une fiche technique, dont je vous parlait dans un bulletin précédent, de nouvelles KBs ont été mises à disposition permettant le paramétrage de plusieurs composants de Windows ou la correction de dysfonctionnements.

    A savoir :

     

    N’hésitez pas à visiter le blog de l’équipe en charge de Fix It : Fix it for me blog 

    Ou abonnez-vous à leur fil RSS.

     

    Guillaume

    Windows Core Support Escalation Engineer

  • AzMan et Hyper-V, ou comment déléguer l’accès aux machines virtuelles

    Ce titre pourrait annoncer un nouveau film avec une vague de super héros, mais il n’en est rien !

    L’intention de ce bulletin est d’expliquer brièvement ce qu’est AzMan et comment l’utiliser pour mettre en oeuvre de la délégation d’administration sur un serveur hébergeant le rôle Hyper-V.

     

    AzMan

     

    Hyper-V est désormais bien connu mais AzMan reste un peu dans l’ombre. De son vrai nom Windows Authorization Manager, AzMan est un framework de gestion des accès basé sur la notion de rôles (ou role-based access control, soit RBAC) qui permet de mettre à disposition des applications des stratégies auxquelles elles peuvent se référer pour contrôler ce que chaque utilisateur a la permission de faire.

    Ce framework doit donc être pris en compte lors du développement de ces applications.

    Je ne m’étendrais pas sur AzMan car cela ne fait pas parti de mes compétences au sein de l’équipe Windows Core mais il est nécessaire de détailler les quelques notions de base utilisées dans la suite de ce bulletin :

    • Authorization Store : l’emplacement de stockage de la stratégie d’autorisation, un fichier XML, une base SQL ou Active Directory
      -> L’authorization store de Hyper-V est un fichier XML situé sur le serveur Hyper-V : C:\ProgramData\Microsoft\Windows\Hyper-V\InitialStore.xml
    • Application : définit un namespace pour les rôles, tâches et opérations
    • Scope : une collection de ressources sur lesquelles la même stratégie d’autorisation s’applique
    • Role : correspond à la définition d’un rôle fonctionnel (administrateur, opérateur, invité, …) et de la collection de tâches dont un utilisateur dispose au sein de l’application
    • Task : une collection d’opérations correspondant à une tâche (démarrer une machine virtuelle, modifier les paramétres d’une machine virtuelle, …)
    • Operation : un jeu de permissions qui sont associées à des procédures de sécurité au niveau du système ou des APIs

    image 

     

    Comment attribuer des permissions sur Hyper-V

     

    L’objectif ici est donc de détailler toutes les étapes nécessaires pour donner à certains utilisateurs la possibilité de travailler avec certaines machines virtuelles s’exécutant sur un hôte Hyper-V.

    Avant de manipuler l’authorization store de Hyper-V, quelques pré-requis doivent être mis en oeuvre pour autoriser l’accès à distance de l’hôte Hyper-V :

    1. Créer un groupe (dans Active Directory ou sur l’hôte Hyper-V) : par exemple Hyper-V Access
    2. Rajouter dans le groupe local Distributed COM Users du serveur le groupe créé
    3. Lancer Computer Management puis aller dans Services and Applications | WMI Control
    4. Bouton droit sur WMI Control –> Properties | Onglet Security
    5. Sélectionner Root | CIMV2 et cliquer sur Security
      1. Cliquer sur Advanced puis Add…
      2. Ajouter le groupe nouvellement créé (Hyper-V Access) et cliquer sur OK
      3. Sélectionner Enable Account et Remote Enable
      4. Sélectionner Apply to : This namespace and subnamespaces
      5. Cocher Apply these permissions to objects and/or containers within this container only
      6. Cliquer sur OK
    6. Bouton droit sur WMI Control –> Properties | virtualization
    7. Sélectionner Root | CIMV2 et cliquer sur Security
      1. Cliquer sur Advanced puis Add…
      2. Ajouter le groupe nouvellement créé (Hyper-V Access) et cliquer sur OK
      3. Sélectionner Enable Account et Remote Enable
      4. Sélectionner Apply to : This namespace and subnamespaces
      5. Cocher Apply these permissions to objects and/or containers within this container only
      6. Cliquer sur OK

     

    Pour référence, voici la liste des opérations qui peuvent être déléguées à des utilisateurs dans Hyper-V :

    • Read Service Configuration : permet de visualiser la configuration du service Virtual Machine Management Service
    • Reconfigure Service : permet de reconfigurer le service Virtual Machine Management Service
    • Create Virtual Switch : permet la création du switch virtuel
    • Delete Virtual Switch : permet la suppression d’un switch virtuel
    • Create Virtual Switch Port : permet la création d’un port de switch virtuel
    • Delete Virtual Switch Port : permet la suppression d’un port de switch virtuel
    • Connect Virtual Switch Port : permet la connection à un port de switch virtuel
    • Disconnect Virtual Switch Port : permet la déconnection d’un port de switch virtuel
    • Create Internal Ethernet Port : permet la création d’un port ethernet interne
    • Delete Internal Ethernet Port : permet la suppression d’un port ethernet interne
    • Bind External Ethernet Port : permet de lier à un port ethernet externe
    • Unbind External Ethernet Port : permet de délier à un port ethernet externe
    • Change VLAN Configuration on Port : permet de modifier la configuration VLAN d’un port
    • Modify Switch Settings : permet de modifier les paramètres d’un switch
    • Modify Switch Port Settings : permet de modifier les paramètres d’un port de switch
    • View Switches : permet de visualiser les switches
    • View Switch Ports : permet de visualiser les ports de switches disponibles
    • View External Ethernet Ports : permet de visualiser les ports ethernet externes
    • View Internal Ethernet Ports : permet de visualiser les ports ethernet internes
    • View VLAN Settings : permet de visualiser la configuration de VLAN
    • View LAN Endpoints : permet de visualiser les LAN endpoints
    • View Virtual Switch Management Service : permet de visualiser le service Virtual Switch Management Service
    • Create Virtual Machine : permet de créer une machine virtuelle
    • Delete Virtual Machine : permet de supprimer une machine virtuelle
    • Change Virtual Machine Authorization Scope : permet de changer une machine virtuelle de scope
    • Start Virtual Machine : permet de démarrer une machine virtuelle
    • Stop Virtual Machine : permet de stopper une machine virtuelle
    • Pause and Restart Virtual Machine : permet de mettre en pause et de redémarrer une machine virtuelle
    • Reconfigure Virtual Machine : permet de reconfigurer une machine virtuelle
    • View Virtual Machine Configuration : permet de visualiser la configuration d’une machine virtuelle
    • Allow Input to Virtual Machine : permet d’interagir avec l’OS d’une machine virtuelle
    • Allow Output from Virtual Machine : permet de visualiser l’OS d’une machine virtuelle
    • Modify Internal Ethernet Port : permet la modification d’un port ethernet interne

     

    Pour la partie réseau, ces deux schémas seront peut-être plus explicites pour décrire a quoi correspondent les différents composants :

    image image
    Schéma théorique Vue du Virtual Network Manager

     

    Démarche

     

    Je vais prendre l’exemple suivant : un administrateur Hyper-V souhaite déléguer la création et l’administration des machines virtuelles à un groupe d’utilisateurs (groupe Hyper-V Admins) et autoriser un autre groupe de personnes à utiliser ces machines virtuelles (groupe Hyper-V Users).

    La démarche consiste donc à créer dans cette ordre depuis AzMan :

    1. Des définitions de tâches (Task Definitions)
    2. Des définitions de rôles (Roles Definitions)
    3. Des assignations de rôles (Roles Assignments)

    Pour simplifier la compréhension, j’utilise une terminologie spécifique pour chaque type d’élément créé en préfixant chacun de ces éléments :

    • T- pour les définitions de tâches
    • R- pour les définitions de rôles
    • G- pour les groupes applicatifs
    • AD- pour les groupes Active Directory

     

    Création des définitions de tâches

     

    L’adresse suivante donne un grand nombre d’exemples de tâches correspondants à des scénarios de délégation : Example Authorization Manager Tasks and Operations

    Il s’agit tout d’abord d’ouvrir l’authorization store de Hyper-V :

    1. Exécuter Start | Run –> azman.msc
    2. Menu Action | Open Authorization Store…
    3. Sélectionner XML File puis spécifier le fichier C:\ProgramData\Microsoft\Windows\Hyper-V\InitialStore.xml

    Note : si SCVMM est utilisé pour gérer l’hôte Hyper-V, les modifications apportées au fichier InitialStore.xml ne seront pas prises en compte. SCVMM permet de déléguer l’accès à un hôte Hyper-V via son propre fichier (HyperVAuthStore.xml). La modification de ce fichier n’est pas supportée.

    La première définition de tâche que je vais créer permettra de donner l’accès à la console Hyper-V (visualisation des machines virtuelles) :

    1. Sélectionner Authorization Manager | InitialStore.xml | Hyper-V Services | Definitions | Task Definitions
    2. Menu Action | New Task Definition…
    3. Spécifier un nom : T-Accès au serveur Hyper-V et cliquer sur Add..
    4. Dans l’onglet Operations, sélectionner :
      1. Allow output from Virtual Machines
      2. Read Service Configuration
      3. View Virtual Machine Configuration
    5. Cliquer sur OK

    image

     

    La seconde définition de tâche que je vais créer permettra de donner les permissions suffisantes pour gérer les machines virtuelles :

    1. Sélectionner Authorization Manager | InitialStore.xml | Hyper-V Services | Definitions | Task Definitions
    2. Menu Action | New Task Definition…
    3. Spécifier un nom : T-Administration des VMs et cliquer sur Add..
    4. Dans l’onglet Tasks sélectionner T-Accès au serveur Hyper-V
      En sélectionnant la définition de tâche créée à l’étape précédente, celle-ci héritera de ses permissions
    5. Dans l’onglet Operations, sélectionner :
      1. Create Virtual Machine
      2. Delete Virtual Machine
      3. Connect Virtual Switch Port
      4. Allow Intput from a Virtual Machine
      5. Pause and Restart Virtual Machine
      6. Start Virtual Machine
      7. Stop Virtual Machine
      8. Reconfigure Virtual Machine
    6. Cliquer sur OK

     

    La dernière définition de tâche que je vais créer permettra de donner les permissions suffisantes pour utiliser les machines virtuelles sans pouvoir modifier leur configuration :

    1. Sélectionner Authorization Manager | InitialStore.xml | Hyper-V Services | Definitions | Task Definitions
    2. Menu Action | New Task Definition…
    3. Spécifier un nom : T-Utilisation des VMs et cliquer sur Add..
    4. Dans l’onglet Tasks sélectionner T-Accès au serveur Hyper-V
      En sélectionnant la définition de tâche créée à la première étape, celle-ci héritera de ses permissions
    5. Dans l’onglet Operations, sélectionner :
      1. Allow Intput from a Virtual Machine
      2. Pause and Restart Virtual Machine
      3. Start Virtual Machine
      4. Stop Virtual Machine
    6. Cliquer sur OK

     

    Au final, j’ai donc la liste suivante de définitions de tâches :

    image

     

    Création des définitions de rôle

     

    Depuis AzMan :

    1. Sélectionner Authorization Manager | InitialStore.xml | Hyper-V Services | Definitions | Role Definitions
    2. Menu Action | New Role Definition…
    3. Spécifier un nom : R-Hyper-V Admins et cliquer sur OK
    4. Effectuer la même chose pour la définition de rôle R-Hyper-V Users

     

    Au final, j’ai donc la liste suivante de définitions de rôles :

    image

     

    Il faut maintenant attribuer à chaque définition de rôle les permissions adéquates :

    1. Sélectionner Authorization Manager | InitialStore.xml | Hyper-V Services | Definitions | Role Definitions | R-Hyper-V Admins
    2. Menu Action | Properties
    3. Dans l’onglet Definition, cliquer sur Add…
    4. Dans l’onglet Tasks, sélectionner T-Administration des VMs
    5. Cliquer sur OK
    6. Sélectionner Authorization Manager | InitialStore.xml | Hyper-V Services | Definitions | Role Definitions | R-Hyper-V Users
    7. Menu Action | Properties
    8. Dans l’onglet Definition, cliquer sur Add…
    9. Dans l’onglet Tasks, sélectionner T-Utilisation des VMs
    10. Cliquer sur OK

     

    Assignation des rôles

     

    Si nous suivons les best practices Microsoft, l’attribution définitive des permissions sur l’hôte Hyper-V se fera par des groupes Active Directory (à la rigueur à travers les groupes locaux de l’hôte Hyper-V).

    Je reprends donc la nomenclature AD-Hyper-V Admins et AD-Hyper-V Users pour créer mes deux groupes dans Active Directory.

    Ensuite, depuis AzMan, je vais créer des groupes “application” dans l’authorization store incluant ces groupes Active Directory :

    1. Sélectionner Authorization Manager | InitialStore.xml | Groups
    2. Menu Action  New Application Group…
    3. Spécifier le nom G-Hyper-V Admins, sélectionner Basic Application Group puis cliquer sur OK
    4. Spécifier le nom G-Hyper-V Users, sélectionner Basic Application Group puis cliquer sur OK

    Je vais ensuite lier les groupes Active Directory avec les groupes applicatifs :

    1. Sélectionner Authorization Manager | InitialStore.xml | Groups | G-Hyper-V Admins
    2. Menu Action | Properties
    3. Dans l’onglet Members :
      1. Laisser la sélection sur Windows and Active Directory et cliquer sur Select…
      2. Sélectionner le groupe AD-Hyper-V Admins depuis Active Directory (ou depuis la SAM locale de l’hôte Hyper-V)
      3. Cliquer sur OK
    4. Sélectionner Authorization Manager | InitialStore.xml | Groups | G-Hyper-V Users
    5. Menu Action | Properties
    6. Dans l’onglet Members :
      1. Laisser la sélection sur Windows and Active Directory et cliquer sur Select…
      2. Sélectionner le groupe AD-Hyper-V Users depuis Active Directory (ou depuis la SAM locale de l’hôte Hyper-V)
      3. Cliquer sur OK

     

    Au final, j’ai donc les groupes applicatifs suivants :

    image

    Cette étape n’est pas nécessaire mais elle permet de définir une seule fois dans l’authorization store le relation entre les groupes Active Directory et des groupes propres à ce store.

     

    Il s’agit enfin d’attribuer à ces groupes applicatifs la délégation créée au travers des définitions de rôles et de tâches.

    Depuis AzMan, je vais créer des assignations de rôles dans l’authorization store :

    1. Sélectionner Authorization Manager | InitialStore.xml | Hyper-V Services | Role Assignments
    2. Menu Action | New Role Assignment…
    3. Sélectionner R-Hyper-V Admins et R-Hyper-V Users
    4. Cliquer sur OK

    Jusque là, ces assignations de rôles ne sont définies que par les opérations qui leur sont autorisées et ne définissent pas encore quels utilisateurs peuvent en bénéficier. Il faut donc lier ces assignations de rôles aux groupes applicatifs.

    Depuis AzMan :

    1. Sélectionner Authorization Manager | InitialStore.xml | Hyper-V Services | Role Assignments | R-Hyper-V Admins
      1. Menu Action | Assign Users and Groups –> From Authorization Manager
      2. Sélectionner G-Hyper-V Admins
      3. Cliquer sur OK
    2. Sélectionner Authorization Manager | InitialStore.xml | Hyper-V Services | Role Assignments | R-Hyper-V Users
      1. Menu Action | Assign Users and Groups –> From Authorization Manager
      2. Sélectionner G-Hyper-V Users
      3. Cliquer sur OK

     

    Ce qui me donne en définitive ceci :

    image

     

    Scopes

     

    La seule notion que je n’ai pas encore abordé sont les scopes.

    Un scope définit un périmètre au sein d’un authorization store sur lequel s’appliquent des définitions de rôles et de tâches ainsi que des assignations de rôles.

    Il est ainsi possible de définir plusieurs scopes (Maquettage, Pré-Production, Production, …) disposant de leur propre délégation. Ceci permet d’affiner encore plus la délégation en attribuant des permissions à un groupe de machines virtuelles et non à toutes.

    image

    Des exemples de scripts permettant de mainpuler les scopes sont disponibles ici : Script AzMan Scopes in Hyper-V

     

    Ressources

     

    Windows Authorization Manager (en Anglais)

    Developing Applications Using Windows Authorization Manager (en Anglais)

    Authorization Manager Terminology (en Anglais)

    Configure Hyper-V for Role-based Access Control (en Anglais)

    Virtualization Security Best Practices – How to Lockdown a Hyper-V Host (blog de Tony Soper en Anglais)

    Hyper-V Security Getting Started Guide (blog de Tony Soper en Anglais)

     

    Guillaume

    Windows Core Support Escalation Engineer

  • Installation de System Center DPM 2007 SP1 sur Windows Server 2008

    Ayant essuyé quelques revers lors de l’installation manuelle (installation de l’instance SQL Server effectuée par mes soins) de DPM 2007, j’ai collecté et ordonné les informations requises pour réaliser une installation de DPM 2007 sur un serveur Windows Server 2008.

     

    Pré-requis

     

    Ils sont décris ici : DPM 2007 System Requirements, mais quelques remarques importantes :

    • Si vous projetez d’utiliser un disque physique pour stocker les sauvegardes, le serveur DPM doit disposer d’un tel volume en attachement direct, SAN, ou iSCSI non initialisé (pas formatté, rien… brut de chez brut). Disques USB à exclure…
    • DPM ne peut être installé sur un serveur hébergeant déjà System Center Operation Manager ou un contrôleur de domaine. De manière générale, un serveur dédié est fortement recommandé.
    • Ne pas oublier de jeter un oeil aux mises à jour de la documentation en ligne : Newly Published Content for Microsoft System Center Data Protection Manager 2007

     

    Installation des pré-requis logiciels

     

    Installer manuellement les pré-requis sur Windows Server 2008 (Manually Install Required Windows Components, section “Installing the Required Components for Windows Server 2008”), dans l’ordre indiqué :

    1. Installation de PowerShell 1.0


      • Depuis Server Manager : Features | Add Features | PowerShell
      • Ou depuis un prompt CMD en privilèges élevés : servermanagercmd -install PowerShell

    2. Installation de IIS 7


      Les étapes sont extraites de l’article technique
      How to install and how to configure SQL Server 2005 Reporting Services on a computer that is running Windows Server 2008 :
      • Depuis Server Manager :
        • Roles | Add Roles
        • Sélectionner Web Server (IIS) et cliquer sur Add Required Features
        • Cliquer sur Next
        • Depuis Common HTTP Features, sélectionner :
          • Static Content
          • Default Document
          • Directory Browsing
          • HTTP Errors
          • HTTP Redirection
        • Depuis Application Development, sélectionner :
          • ASP .NET et cliquer sur Add Required Roles Services
        • Depuis Security, sélectionner :
          • Windows Authentication
        • Depuis Management Tools | IIS 6 Management Capability, sélectionner :
          • IIS Metabase Compatibility
          • IIS 6 WMI Compatibility
          • IIS 6 Scripting Tools
          • IIS 6 Management Console
        • Laisser tel quel les autres options déjà sélectionnées par défaut
        • Cliquer sur Next puis Install
      • Ou depuis un prompt CMD en privilèges élevés :
        • servermanagercmd -install Web-Server
        • servermanagercmd -install Web-Common-Http -allSubFeatures
        • servermanagercmd -install Web-Asp-Net
        • servermanagercmd -install Web-Asp-Cgi
        • servermanagercmd -install Web-Windows-Auth
        • servermanagercmd -install Web-Mgmt-Compat -allSubFeatures

    3. Installation de SQL Server 2005


      Les étapes sont extraites de
      Manually Install SQL Server 2005 (à l’exception de la première commande) :

      • Si SQL Server 2005 32 bit doit être installé sur une version 64 bit de Windows Server 2008 (il y a des joueurs !) :
        • Lancer la commande suivante depuis un prompt CMD en privilèges élevés pour activer ASP.NET en 32 bit :
          cscript %SystemDrive%\inetpub\AdminScripts\adsutil.vbs set w3svc/AppPools/Enable32bitAppOnWin64 1
      • Lors de l’installation de SQL Server 2005 sur un serveur Windows Server 2008, un warning est affiché indiquant des problèmes de compatibilité. Cliquer sur Run Program.
      • Dans la fenêtre Components to install, cliquer sur Advanced
        • Sélectionner Database Services
          • Si la base de données doit être positionnée sur un volume particulier, étendre Database Services, sélectionner Data Files et cliquer sur Browse… pour sélectionner le volume (sélectionner la racine du volume, le setup créera un dossier MSSQL pour créer l’arborescence adéquate)
          • Shared Tools doit être sélectionné
        • Sélectionner Reporting Services (tous les sous-composants doivent être sélectionnés)
        • Dans Client Components, sélectionner Management Tools
        • Touts les autres composants ne sont pas nécessaires
        • Cliquer sur Next
      • Dans la fenêtre Instance Name
        • Sélectionner Named Instance et spécifier : DPM2007 (ou autre nom d’instance à l’exception de MS$DPM2007$)
        • Cliquer sur Next
      • Dans la fenêtre Service Account
        • Sélectionner Customize for each service account
        • Spécifier les comptes de services suivants :
          • SQL Server : Use the built-in System account = Local system
          • SQL Server Agent : Use the built-in System account = Local system
          • Reporting Services : Use the built-in System account = Network service
          • SQL Browser : Use the built-in System account = Local service
        • Cliquer sur Next
      • Laisser tous les autres paramétrages proposés par défaut

    4. Installation du Service Pack 2 de SQL Server 2005


      Disponible
      ici.

    5. Installation de SIS (Single Instance Storage) :


      Depuis un prompt CMD en privilèges élevés :
      start /wait ocsetup.exe SIS-Limited /quiet /norestart

    6. Redémarrer le serveur (nécessaire pour que SIS soit actif)

     

    Configuration de SQL Reporting Services / IIS

     

    S’assurer que l’application Pool du Default Web Site est bien Classic .NET AppPool :

    • Lancer Internet Information Services (IIS ) Manager
    • Aller dans Sites | Defaut Web Site
    • Cliquer sur Advanced Settings dans le bandeau de droite
    • Vérifier la valeur de Application Pool  

    S’assurer que l’application Pool des deux applications est bien ReportServer$DPM2007 :

    • Lancer Internet Information Services (IIS ) Manager
    • Aller dans Sites | Defaut Web Site | ReportServer$DPM2007
    • Cliquer sur Advanced Settings dans le bandeau de droite
    • Vérifier la valeur de Application Pool
    • Faire la même vérification pour Sites | Defaut Web Site | ReportServer$DPM2007

    Modifier les permissions de l’application Report Server :

    • Lancer Internet Information Services (IIS ) Manager
    • Aller dans Sites | Defaut Web Site | ReportServer$DPM2007
    • Double-cliquer sur Handler Mapping dans la fenêtre de gauche
    • Cliquer sur Edit Feature Permissions… dans le bandeau de droite
    • Cocher Scripts
    • Cocher Execute puis valider
    • Exécuter Start | Run -> iisreset

     

    Installation de DPM 2007

     

    Exécuter le setup de DPM 2007 (voir Install DPM 2007)

    1. Dans la fenêtre Installation Settings, sélectionner Use an existing instance of SQL Server 2005 et cliquer sur Next
    2. Dans la fenêtre SQL Settings :
      • Spécifier le nom du serveur pour l’instance SQL, l’instance DPM2007 étant déjà créée
      • Le compte et le domaine utilisé pour se connecter au serveur SQL Server
    3. Cliquer sur Next
    4. Continuer le setup en spécifiant les informations requises

     

    Installation du Feature Pack de DPM 2007

     

    Ce Feature Pack permet, entre autres, de pouvoir protéger les serveurs Windows Server 2008.

     

    En se référant à System Center Data Protection Manager 2007 Feature Pack, voici la procédure d’installation :

    1. Exécuter DataProtectionManager2007-KB949779.exe sur le serveur DPM
    2. Si jamais l’instance SQL est sur un serveur autre que le serveur DPM, exécuter SqlPrep-KB949779.msp sur le serveur SQL Server

     

    Installation du SP1 de DPM 2007

     

    En se référant à Description of System Center Data Protection Manager 2007 Service Pack 1, voici la procédure pour installer le Service Pack 1 de DPM 2007 :

    1. Exécuter DataProtectionManager2007-KB959605.exe  sur le serveur DPM
    2. Redémarrer le serveur DPM
    3. Si jamais l’instance SQL est sur un serveur autre que le serveur DPM, exécuter SqlPrep-KB959605.msp sur le serveur SQL Server

     

    Installation des clients DPM

     

    Dans un environnement simple (i.e. sans firewall), la procédure décrite ici devrait fonctionner : Installing Protection Agents

    Dans le cas où les serveurs sur lesquels l’agent DPM doit être installé sont protégés par un firewall : Installing Protection Agents behind a Firewall

    Dans mon cas, les serveurs sur lesquels j’ai installé l’agent disposent du Windows Firewall et certaines de ces machines sont des serveurs Core.

    Les étapes d’installation sont les suivantes :

    1. Création d’une règle pour permettre la communication entre le serveur DPM et les machines cibles

      Depuis un prompt CMD en privilèges élevés (par défaut sur un serveur Core) : netsh firewall add portopening TCP 5718 "DPMRA_DM_TCP5718"
    2. Application de la méthode d’installation depuis le serveur DPM : Installing Protection Agents
    3. Création d’une règle au niveua du firewall pour permettre la communication client vers serveur

      Depuis un prompt CMD en privilèges élevés (par défaut sur un serveur Core) :
      netsh firewall add allowedprogram "C:\Program Files\Microsoft Data Protection Manager\DPM\Bin\DPMRA.exe" DPMRA
    4. Redémarrage du serveur client

    Au préalable, sur les serveurs Hyper-V qui seront clients DPM, il est nécessaire d’installer les correctifs suivants :

    • KB960038 - You receive a "0x0000007E" Stop error on Windows Server 2008-based computers that host Hyper-V virtual machines when you use the Hyper-V writer to back up virtual machines
    • KB951308 - Increased functionality and virtual machine control in the Windows Server 2008 Failover Cluster Management console for the Hyper-V role
    • KB959962 – Ce correctif n’est pas encore disponible (courrant Janvier) mais il permettra la sauvegarde des machines virtuelles à chaud

    N’oubliez pas de faire un petit tour sur Microsoft Updates (en allant sur ce site Web vous aurez la possibilité de détecter et installer des correctifs autres que ceux pour Windows) pour installer les correctifs post-SQL Server SP2 et ceux pour Windows Server 2008.

     

    Guillaume

    Windows Core Support Escalation Engineer

  • Meilleurs voeux pour l’année 2009 !

    Après nous être concertés longuement, nous sommes tombés d’accord sur ce que nous pouvions vous souhaiter pour l’année à venir.

    Tout ce que nous espérons pour vous c’est de n’être impactés que par peu de problèmes (suffisament pour nous permettre de vous aider et de toujours faire ce métier passionnant) et surtout nous ne vous en voudrons pas si la complexité des incidents que vous nous remontez baisse un peu l’an prochain, cela nous permettra de souffler un peu !

     

    Plus traditionnellement, meilleurs voeux, bonne santé et réussite pour vous et vos proches !2009

    Restez connectés !

     

    L’équipe de Support Windows Core

  • Analyse d’un stop 7F

    Nous allons analyser ensemble un dump relatif à des problème de crash réguliers sur un serveur de fichiers.

    D’abord, regardons sur quel type de serveur le crash s’est produit :

    0: kd> vertarget

    Windows Server 2003 Kernel Version 3790 (Service Pack 1) MP (4 procs) Free x86 compatible

    Product: Server, suite: TerminalServer SingleUserTS

    Built by: 3790.srv03_sp1_rtm.050324-1447

    Kernel base = 0x80800000 PsLoadedModuleList = 0x808af988

    Debug session time: Tue Oct 21 02:22:03.749 2008 (GMT+2)

    System Uptime: 6 days 7:23:43.156

    Il s’agit donc d’un serveur 2003 en SP1, un premier plan d’action serait de le mettre à jour en SP2 :-)

    D’autre part, le serveur semble avoir tourné pendant 6 jours avant la génération du dump.

    Aussi, chaque crash ou stop est associé un code qui définie le type de problème rencontré, examinons le stop en question :

    0: kd> .bugcheck

    Bugcheck code 0000007F

    Arguments 00000008 80042000 00000000 00000000

    C’est un stop 7F avec le paramètre  00000008 ….intéressant !!

    Les documents techniques qui détaillent ce type de stop, font référence à un problème de stack overflow :

    “Bug Check 0x7F: UNEXPECTED_KERNEL_MODE_TRAP

    The UNEXPECTED_KERNEL_MODE_TRAP bug check has a value of 0x0000007F. This bug check indicates that the Intel CPU generated a trap and the kernel failed to catch this trap.

    This trap could be a bound trap (a trap the kernel is not permitted to catch) or a double fault (a fault that occurred while processing an earlier fault, which always results in a system failure).

    0x00000008, or Double Fault, indicates that an exception occurs during a call to the handler for a prior exception. Typically, the two exceptions are handled serially. However, there are several exceptions that cannot be handled serially, and in this situation the processor signals a double fault. There are two common causes of a double fault:
    A kernel stack overflow Or A hardware problem”

    Ok, nous savons maintenant qu’il peut s’agir d’un stack overflow ..il va falloir se mettre sur le thread qui a causé le crash pour en savoir plus :

    0: kd> .tss 0x28

    eax=854b8300 ebx=854b8310 ecx=00000003 edx=89756000 esi=89fc3f30 edi=89756000

    eip=bae30bf7 esp=f78f7f88 ebp=f78f81b8 iopl=0         nv up ei ng nz na pe nc

    cs=0008  ss=0010  ds=0023  es=0023  fs=0030  gs=0000             efl=00010286

    q57xp32+0x9bf7:

    bae30bf7 53              push    ebx

    0: kd> .thread

    Implicit thread is now 8ab868d0

    0: kd> !thread

    THREAD 8ab868d0  Cid 0004.0048  Teb: 00000000 Win32Thread: 00000000 RUNNING on processor 0

    IRP List:

        859c0370: (0006,0220) Flags: 00000010  Mdl: 00000000

        85391008: (0006,0220) Flags: 00000884  Mdl: 00000000

        8a02af68: (0006,0094) Flags: 00000000  Mdl: 00000000

    Not impersonating

    DeviceMap                 d6402818

    Owning Process            8ab8a238       Image:         System

    Wait Start TickCount      34881482       Ticks: 0

    Context Switch Count      21126271            

    UserTime                  00:00:00.000

    KernelTime                00:03:14.531

    Start Address nt!ExpWorkerThread (0x8083f671)

    Stack Init f78fb000 Current f78f9150 Base f78fb000 Limit f78f8000 Call 0

    Priority 12 BasePriority 12 PriorityDecrement 0

    ChildEBP RetAddr  Args to Child             

    00000000 bae30bf7 00000000 00000000 00000000 nt!_KiTrap08+0x75 (FPO: TSS 28:0)

    WARNING: Stack unwind information not available. Following frames may be wrong.

    f78f81b8 bae29c53 89756000 89fc3f30 8975bf54 q57xp32+0x9bf7

    f78f8200 bae29edb 854b8310 f78f8278 f78f8248 q57xp32+0x2c53

    f78f8210 bae2a199 02756000 878032e0 897ef950 q57xp32+0x2edb

    f78f8248 f76ee804 00000001 f78f8278 00000000 q57xp32+0x3199

    f78f8260 80a7a24f 897ef850 00000000 86e62a20 NDIS!ndisMProcessSGList+0x90

    f78f828c f76ee6fe 86e62a20 897ef850 878032c0 hal!HalBuildScatterGatherList+0x1c7

    f78f82e4 f76d249d 8a3d5008 854b8310 862fe230 NDIS!ndisMAllocSGList+0xd9

    f78f8300 ba782f37 89e90290 854b8310 89d16c48 NDIS!ndisMSendX+0x1a0

    f78f8328 ba78223a 8a3d5008 854b8310 8638eae8 tcpip!IPRcvComplete+0x12d3

    f78f8350 ba782622 8638ea02 f78f8402 00000001 tcpip!IPRcvComplete+0x5d6

    f78f848c ba783c01 ba7bbbb8 862fe2a4 862fe230 tcpip!IPRcvComplete+0x9be

    f78f84fc ba783da0 f3b3f555 00000002 875d30c0 tcpip!IPRcvComplete+0x1f9d

    f78f8524 ba784478 00000001 00000000 00000002 tcpip!IPRcvComplete+0x213c

    f78f8558 bab209ac 875d3008 89443364 89d2d540 tcpip!IPRcvComplete+0x2814

    f78f857c bab29a46 89e8e000 89429058 89e8e000 msiscsi+0x99ac

    f78f8624 bab2c101 01429058 84f25502 84f2552c msiscsi+0x12a46

    f78f8644 bab1a435 808a5180 84f25502 00000000 msiscsi+0x15101

    f78f866c bab036ca 8a02b65c 89e8e000 f78f8698 msiscsi+0x3435

    f78f867c bab03afc 897c31a0 84f2552c 884b7d28 iscsiprt!RaCallMiniportStartIo+0x1e

    f78f8698 bab0c182 84f2552c 870a48a0 89d17e18 iscsiprt!RaidAdapterPostScatterGatherExecute+0x5e

    f78f86b8 bab07823 00000000 00000001 00000000 iscsiprt!RaUnitStartIo+0xc4

    f78f86d8 bab0b575 89d17e18 014b7d28 00000000 iscsiprt!RaidStartIoPacket+0x49

    f78f86fc bab0c8a6 89d17d30 884b7d28 84c6d270 iscsiprt!RaidUnitSubmitRequest+0x63

    f78f8718 bab06844 89d17d30 884b7d28 f78f873c iscsiprt!RaUnitScsiIrp+0x92

    f78f8728 8083f9d0 89d17c78 884b7d28 89e8caa0 iscsiprt!RaDriverScsiIrp+0x2a

    f78f873c f7409440 884b7d28 884b7dfc 884b7d28 nt!IofCallDriver+0x45

    f78f8764 f74094e0 89cfba88 884b7d28 884b7d28 mpio!MPIOReadWrite+0x19e

    f78f8830 f7409b34 89cfba88 84c6d1f0 884b7dd8 mpio!MPIOPdoHandleRequest+0x76

    f78f8848 f7408945 89cfbb40 884b7d28 884b7d28 mpio!MPIOPdoInternalDeviceControl+0x3c

    f78f8870 f740916f 89cfba88 89cfbd78 01000000 mpio!MPIOPdoCommonDeviceControl+0x1fb

    f78f8890 f74062ef 89cfba88 884b7d28 f78f88b4 mpio!MPIOPdoDispatch+0x8f

    f78f88a0 8083f9d0 89cfba88 884b7d28 84f25480 mpio!MPIOGlobalDispatch+0x19

    f78f88b4 f7139a20 84f25480 68d0e000 f78f88f8 nt!IofCallDriver+0x45

    f78f88c4 f7139635 84f25480 89419b70 85a52e2c CLASSPNP!SubmitTransferPacket+0xbb

    f78f88f8 f7139712 00000000 00001000 85a52e50 CLASSPNP!ServiceTransferRequest+0x1e4

    f78f891c 8083f9d0 89419ab8 00000000 8ab96b38 CLASSPNP!ClassReadWrite+0x159

    f78f8930 f74d80cf 8756c3a8 85a52e50 f78f8954 nt!IofCallDriver+0x45

    f78f8940 8083f9d0 893e7780 85a52cc0 85a52cc0 PartMgr+0x10cf

    f78f8954 f73b4802 890bd008 8756c3a8 89595d08 nt!IofCallDriver+0x45

    La, il n’y a pas de doute, nous somme bien en présence d’un beau “stack overflow”.

    En effet, chaque thread a le droit à un espace limité pour gérer la stack.

    Ici la limite est à f78fb000  (on commence la stack à à l’adresse f78f8000 ) : Stack Init f78fb000 Current f78f9150 Base f78fb000 Limit f78f8000

    Le dernier appel a été fait à l’adresse f78f81b8 ;  par conséquent l’appel d’après aurait utiliser de la mémoire et dépasser ainsi la limite du f78f8000 d’où le stack overflow et le crash.

    Voici les détails de consommation de la stack au moment du Stop:

      Module      Stack Usage Percentage

    fltMgr                280          2

    volsnap               584          5

    Ntfs                 4844        42

    iscsiprt              188          2

    NDIS                  140          1

    msiscsi               276          2

    q57xp32               144          1

    CLASSPNP              104          1

    mfetdik               144          1

    hal                    44          0

    dmio                  328          3

    tcpip                 600          5

    mpio                  356          3

    PartMgr                16          0

    mfehidk               660          6

    nt                   1988        17

    df2k                  848          7

    Nous constatons que Ntfs utilise 42% de celle-ci ce qui est beaucoup. Maintenant si l’on regarde attentivement la stack nous allons constater que c’est le driver df2k.sys qui est réentrant dans le file system.

    0: kd> kv 100

    ChildEBP RetAddr  Args to Child             

    00000000 bae30bf7 00000000 00000000 00000000 nt!_KiTrap08+0x75

    WARNING: Stack unwind information not available. Following frames may be wrong.

    f78f81b8 bae29c53 89756000 89fc3f30 8975bf54 q57xp32+0x9bf7

    f78f8200 bae29edb 854b8310 f78f8278 f78f8248 q57xp32+0x2c53

    f78f8210 bae2a199 02756000 878032e0 897ef950 q57xp32+0x2edb

    f78f8248 f76ee804 00000001 f78f8278 00000000 q57xp32+0x3199

    f78f8260 80a7a24f 897ef850 00000000 86e62a20 NDIS!ndisMProcessSGList+0x90

    f78f828c f76ee6fe 86e62a20 897ef850 878032c0 hal!HalBuildScatterGatherList+0x1c7

    f78f82e4 f76d249d 8a3d5008 854b8310 862fe230 NDIS!ndisMAllocSGList+0xd9

    f78f8300 ba782f37 89e90290 854b8310 89d16c48 NDIS!ndisMSendX+0x1a0

    f78f8328 ba78223a 8a3d5008 854b8310 8638eae8 tcpip!IPRcvComplete+0x12d3

    f78f8350 ba782622 8638ea02 f78f8402 00000001 tcpip!IPRcvComplete+0x5d6

    f78f848c ba783c01 ba7bbbb8 862fe2a4 862fe230 tcpip!IPRcvComplete+0x9be

    f78f84fc ba783da0 f3b3f555 00000002 875d30c0 tcpip!IPRcvComplete+0x1f9d

    f78f8524 ba784478 00000001 00000000 00000002 tcpip!IPRcvComplete+0x213c

    f78f8558 bab209ac 875d3008 89443364 89d2d540 tcpip!IPRcvComplete+0x2814

    f78f857c bab29a46 89e8e000 89429058 89e8e000 msiscsi+0x99ac

    f78f8624 bab2c101 01429058 84f25502 84f2552c msiscsi+0x12a46

    f78f8644 bab1a435 808a5180 84f25502 00000000 msiscsi+0x15101

    f78f866c bab036ca 8a02b65c 89e8e000 f78f8698 msiscsi+0x3435

    f78f867c bab03afc 897c31a0 84f2552c 884b7d28 iscsiprt!RaCallMiniportStartIo+0x1e

    f78f8698 bab0c182 84f2552c 870a48a0 89d17e18 iscsiprt!RaidAdapterPostScatterGatherExecute+0x5e

    f78f86b8 bab07823 00000000 00000001 00000000 iscsiprt!RaUnitStartIo+0xc4

    f78f86d8 bab0b575 89d17e18 014b7d28 00000000 iscsiprt!RaidStartIoPacket+0x49

    f78f86fc bab0c8a6 89d17d30 884b7d28 84c6d270 iscsiprt!RaidUnitSubmitRequest+0x63

    f78f8718 bab06844 89d17d30 884b7d28 f78f873c iscsiprt!RaUnitScsiIrp+0x92

    f78f8728 8083f9d0 89d17c78 884b7d28 89e8caa0 iscsiprt!RaDriverScsiIrp+0x2a

    f78f873c f7409440 884b7d28 884b7dfc 884b7d28 nt!IofCallDriver+0x45

    f78f8764 f74094e0 89cfba88 884b7d28 884b7d28 mpio!MPIOReadWrite+0x19e

    f78f8830 f7409b34 89cfba88 84c6d1f0 884b7dd8 mpio!MPIOPdoHandleRequest+0x76

    f78f8848 f7408945 89cfbb40 884b7d28 884b7d28 mpio!MPIOPdoInternalDeviceControl+0x3c

    f78f8870 f740916f 89cfba88 89cfbd78 01000000 mpio!MPIOPdoCommonDeviceControl+0x1fb

    f78f8890 f74062ef 89cfba88 884b7d28 f78f88b4 mpio!MPIOPdoDispatch+0x8f

    f78f88a0 8083f9d0 89cfba88 884b7d28 84f25480 mpio!MPIOGlobalDispatch+0x19

    f78f88b4 f7139a20 84f25480 68d0e000 f78f88f8 nt!IofCallDriver+0x45

    f78f88c4 f7139635 84f25480 89419b70 85a52e2c CLASSPNP!SubmitTransferPacket+0xbb

    f78f88f8 f7139712 00000000 00001000 85a52e50 CLASSPNP!ServiceTransferRequest+0x1e4

    f78f891c 8083f9d0 89419ab8 00000000 8ab96b38 CLASSPNP!ClassReadWrite+0x159

    f78f8930 f74d80cf 8756c3a8 85a52e50 f78f8954 nt!IofCallDriver+0x45

    f78f8940 8083f9d0 893e7780 85a52cc0 85a52cc0 PartMgr+0x10cf

    f78f8954 f73b4802 890bd008 8756c3a8 89595d08 nt!IofCallDriver+0x45

    f78f899c f73cdfa3 8756c3a8 010bd008 04000000 dmio!voldiskiostart+0x482

    f78f89ec f73bf8dc 8756c3a8 f78f8a44 f78f8a38 dmio!vol_subdisksio_start+0x107

    f78f8a5c f73b5e2c 8712c408 00000001 00000001 dmio!volkiostart+0x32c

    f78f8a88 f73b85e2 88dc1a60 85a52cc0 8ab50418 dmio!volrdwr+0xa0

    f78f8a9c 8083f9d0 88dc1a60 85a52cc0 85a52e98 dmio!volread+0x58

    f78f8ab0 f73899c4 8ab2d248 88db7af0 88d246d0 nt!IofCallDriver+0x45

    f78f8ac8 8083f9d0 88d246d0 85a52cc0 85a52cc0 volsnap+0x19c4

    f78f8adc f70d9881 88db7a38 88db7af0 88ba5c98 nt!IofCallDriver+0x45

    f78f8b34 f70dae17 88db7a38 85a52cc0 85a52cc0 df2k+0x6881

    f78f8b5c f701d0ce f78f8e40 f78f8d40 f701c702 df2k+0x7e17

    f78f8b68 f701c702 f78f8e40 88db7a38 9c09a000 Ntfs!NtfsSingleAsync+0x91

    f78f8d40 f701a75e f78f8e40 85a52cc0 88ba5c98 Ntfs!NtfsNonCachedIo+0x2db

    f78f8e2c f701d8de f78f8e40 85a52cc0 00000001 Ntfs!NtfsCommonRead+0xaf5

    f78f8fd8 8083f9d0 88be6718 85a52cc0 85a52cc0 Ntfs!NtfsFsdRead+0x113

    f78f8fec f7117b43 88f2aae8 85a52cc0 88eeb008 nt!IofCallDriver+0x45

    f78f9010 f7117d03 f78f9030 88f2aae8 00000000 fltMgr!FltpLegacyProcessingAfterPreCallbacksCompleted+0x20b

    f78f9048 8083f9d0 88f2aae8 85a52cc0 88db7af0 fltMgr!FltpDispatch+0x11f

    f78f905c f70d8ab1 89944588 89944640 88fcd5c0 nt!IofCallDriver+0x45

    f78f9100 f70dae17 89944588 85a52cc0 85a52ebc df2k+0x5ab1

    f78f9128 ba9efa40 88d1da08 89705218 88bed008 df2k+0x7e17

    f78f913c 8083f9d0 88aacf10 85a52cc0 85a52cc0 SYMEVENT!SYMEvent_AllocVMData+0x5f00

    f78f9150 f7117d36 0010e000 8a0d1768 00000000 nt!IofCallDriver+0x45

    f78f917c 8083f9d0 88d1da08 85a52cc0 85a52cc0 fltMgr!FltpDispatch+0x152

    f78f9190 8082f0de 83e86308 8ab868d0 83e862f8 nt!IofCallDriver+0x45

    f78f91a8 8082f17c 88f04f0c 83e86330 83e86310 nt!IoPageRead+0x109

    f78f922c 80849ce5 00000001 c16ce000 c0305b38 nt!MiDispatchFault+0xd2a

    f78f9288 8082fd4f 00000000 c16ce000 00000000 nt!MmAccessFault+0x64a

    f78f92b8 80845b53 c16ce000 00000000 f78f93e4 nt!MmCheckCachedPageState+0x48e

    f78f9300 80845d5a 88ba5b60 f78f9340 00001000 nt!CcMapAndRead+0x93

    f78f9394 8092f599 88f04f90 f78f93d4 00001000 nt!CcPinFileData+0x24a

    f78f9408 f7054d25 88f04f90 f78f9440 00001000 nt!CcPinRead+0xc4

    f78f9430 f704842b 84f7a168 88ba5c98 0010e000 Ntfs!NtfsPinStream+0x76

    f78f945c f7049751 84f7a168 88be67f8 00870000 Ntfs!NtfsMapOrPinPageInBitmap+0x9d

    f78f94d8 f704851f 84f7a168 88be67f8 0087312e Ntfs!NtfsAllocateBitmapRun+0x4b

    f78f9614 f7040136 84f7a168 88be67f8 87342a00 Ntfs!NtfsAllocateClusters+0x9fd

    f78f96d4 f7047e53 84f7a168 87342a00 00000020 Ntfs!NtfsAllocateAttribute+0x156

    f78f9774 f704835c 84f7a168 d6650468 00000020 Ntfs!NtfsCreateNonresidentWithValue+0xde

    f78f9874 f706e627 84f7a168 d6650468 d1911898 Ntfs!NtfsConvertToNonresident+0x2ec

    f78f99cc f7076cc4 84f7a168 d6650468 00000240 Ntfs!NtfsChangeAttributeValue+0x467

    f78f9ab8 f7071d04 84f7a168 d6650468 000fe6ad Ntfs!NtfsAddToAttributeList+0x177

    f78f9ca0 f7047a50 84f7a168 d6650530 f78f9cd0 Ntfs!NtfsAddAttributeAllocation+0xf71

    f78f9d64 f70845ef 84f7a168 8523cc68 d6650530 Ntfs!NtfsAddAllocation+0x397

    f78f9e74 f7041c94 84f7a168 8523cc68 859c0370 Ntfs!NtfsSetAllocationInfo+0x3dd

    f78f9ee0 f701d2fb 84f7a168 859c0370 00000000 Ntfs!NtfsCommonSetInformation+0x48c

    f78f9f48 8083f9d0 88be6718 859c0370 859c0370 Ntfs!NtfsFsdSetInformation+0xa3

    f78f9f5c f7117b43 88f2aae8 859c0370 88eeb008 nt!IofCallDriver+0x45

    f78f9f80 f7117d03 f78f9fa0 88f2aae8 00000000 fltMgr!FltpLegacyProcessingAfterPreCallbacksCompleted+0x20b

    f78f9fb8 8083f9d0 88f2aae8 859c0370 88db7af0 fltMgr!FltpDispatch+0x11f

    f78f9fcc f70d8ab1 89944588 89944640 f78fa0e8 nt!IofCallDriver+0x45

    f78fa070 f70dae17 89944588 859c0370 859c056c df2k+0x5ab1

    f78fa098 ba9ef7b1 859c056c 859c0590 f78fa0e8 df2k+0x7e17

    f78fa0b0 ba9f8d68 89944588 00000000 f78fa0e8 SYMEVENT!SYMEvent_AllocVMData+0x5c71

    f78fa0cc ba9ef91b f78fa0e8 8082b0b9 ba9ef9e3 SYMEVENT!EventObjectCreate+0xba8

    f78fa10c 8083f9d0 88aacf10 859c0370 859c0370 SYMEVENT!SYMEvent_AllocVMData+0x5ddb

    f78fa120 f7117b43 88d1da08 859c0370 88bed008 nt!IofCallDriver+0x45

    f78fa144 f7117d03 f78fa164 88d1da08 00000000 fltMgr!FltpLegacyProcessingAfterPreCallbacksCompleted+0x20b

    f78fa17c 8083f9d0 88d1da08 859c0370 859c0370 fltMgr!FltpDispatch+0x11f

    f78fa190 8098911f 85391008 84c497a0 f78fa434 nt!IofCallDriver+0x45

    f78fa1c8 f707e07c 0123cc68 00000013 85391018 nt!IoSetInformation+0x1c2

    f78fa1f4 f706c7b7 84c497a0 85391008 d66506b8 Ntfs!NtfsCompleteLargeAllocation+0x40

    f78fa3f4 f70531e5 84c497a0 85391008 f78fa434 Ntfs!NtfsCommonCreate+0x1472

    f78fa4f8 8083f9d0 88be6718 85391008 85391008 Ntfs!NtfsFsdCreate+0x17d

    f78fa50c f7117b43 00000000 85391008 85391198 nt!IofCallDriver+0x45

    f78fa530 f71255af f78fa550 88f2aae8 00000000 fltMgr!FltpLegacyProcessingAfterPreCallbacksCompleted+0x20b

    f78fa56c 8083f9d0 88f2aae8 85391008 853911d8 fltMgr!FltpCreate+0x23b

    f78fa580 f70da51c 8081fd79 899446b0 899446f4 nt!IofCallDriver+0x45

    f78fa5b0 f70d942b 899446b0 85391008 00000000 df2k+0x751c

    f78fa5e4 f70d8fed 89944640 85391008 89944588 df2k+0x642b

    f78fa690 f70dae17 89944588 85391008 853911e0 df2k+0x5fed

    f78fa6b8 ba9ef8a1 853911e0 85391204 f78fa718 df2k+0x7e17

    f78fa6e0 ba9f8d58 89944588 00000000 f78fa718 SYMEVENT!SYMEvent_AllocVMData+0x5d61

    f78fa6fc ba9ef91b f78fa718 8082b0b9 ba9ef9e3 SYMEVENT!EventObjectCreate+0xb98

    f78fa73c 8083f9d0 88aacf10 85391008 85391008 SYMEVENT!SYMEvent_AllocVMData+0x5ddb

    f78fa750 f7117b43 00000000 85391008 85391204 nt!IofCallDriver+0x45

    f78fa774 f71255af f78fa794 88d1da08 00000000 fltMgr!FltpLegacyProcessingAfterPreCallbacksCompleted+0x20b

    f78fa7b0 8083f9d0 88d1da08 85391008 85391008 fltMgr!FltpCreate+0x23b

    f78fa7c4 8092e269 f78fa96c 88dc1a48 00000000 nt!IofCallDriver+0x45

    f78fa8ac 80936caa 88dc1a60 00000000 88e62860 nt!IopParseDevice+0xa35

    f78fa92c 80936aa5 00000000 f78fa96c 00000240 nt!ObpLookupObjectName+0x5a9

    f78fa980 80936f27 00000000 00000000 00000100 nt!ObOpenObjectByName+0xea

    f78fa9fc 80936ff8 8a2f22e4 0012019f f78fab7c nt!IopCreateFile+0x447

    f78faa58 8092ed98 8a2f22e4 0012019f f78fab7c nt!IoCreateFile+0xa3

    f78faa98 80834d3f 8a2f22e4 0012019f f78fab7c nt!NtCreateFile+0x30

    f78faa98 8083c1ec 8a2f22e4 0012019f f78fab7c nt!KiFastCallEntry+0xfc

    f78fab3c f7396acb 8a2f22e4 0012019f f78fab7c nt!ZwCreateFile+0x11

    f78fabc4 f739c6f7 8a2f22d0 00000001 f78fabec volsnap+0xeacb

    f78fabf8 f73a5d5d 86a966e0 12c00000 00000000 volsnap+0x146f7

    f78fad50 f73945e5 8aa020d8 851a5798 8ab868d0 volsnap+0x1dd5d

    f78fad6c 809180a0 875603d0 88eb2ab8 808b70dc volsnap+0xc5e5

    f78fad80 8083f72e 875603d0 00000000 8ab868d0 nt!IopProcessWorkItem+0x13

    f78fadac 8092ccff 875603d0 00000000 00000000 nt!ExpWorkerThread+0xeb

    f78faddc 80841a96 8083f671 00000001 00000000 nt!PspSystemThreadStartup+0x2e

    00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16

    La stack contient aussi plusieurs occurrences du module SYMEVENT qui est connu pour causer des problèmes de stack overflow

    La solution au problème rencontré passera par:

    - Désinstallation ou mise à jour du composant Df2K.sys

    - Suivi des recommandations de Symantec pour la partie Symevent : http://service1.symantec.com/SUPPORT/ent-security.nsf/docid/2002071208532048?Open&src=w

     Mounia

    Windows Core Technical Lead

  • Hang à l'ouverture d’une session TS

    Définition du problème

     

    Aléatoirement, lors de connexions RDP sur un serveur TS, le phénomène suivant se produit : après son ouverture de session, un utilisateur se retrouve uniquement avec le fond d’écran du bureau sans aucun icônes.

     

    Action

     

    Lors de l’apparition du problème, nous avons forcé la génération d’un memory dump du serveur manuellement:

    KB254649  Overview of memory dump file options for Windows Server 2003, Windows XP, and Windows 2000

    http://support.microsoft.com/default.aspx?scid=kb;EN-US;254649

    KB244139  Windows feature lets you generate a memory dump file by using the keyboard

    http://support.microsoft.com/default.aspx?scid=kb;EN-US;244139

     

    Analyse du dump

     

    Pour le téléchargement et l’installation de Windbg, voir mon précédent post « Debugger un 100% CPU du spooler ». Concernant les commandes utilisées ici, vous pouvez trouver plus d’informations dans l’aide de Windbg.

    Dans l’analyse du dump, nous pouvons voir des threads en attente d’une « critical section » (voir définition ici http://fr.wikipedia.org/wiki/Section_critique) .

    Voici un exemple de thread en attente d’une « critical section » :

     

    0:018> ~11s <- Cette commande permet de ce placer dans le contexte d’un thread en particulier, ici le thread 11 du process spoolsv.exe

    eax=00002f9c ebx=00000000 ecx=00000187 edx=00002f9c esi=7c8877a0 edi=00000000

    eip=7c8285ec esp=01b2f3bc ebp=01b2f3f8 iopl=0         nv up ei pl zr na pe nc

    cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000246

    ntdll!KiFastSystemCallRet:

    7c8285ec c3              ret

    0:011> kv <- permet d’afficher la pile du thread

    ChildEBP RetAddr  Args to Child             

    01b2f3b8 7c827d0b 7c83d236 00000124 00000000 ntdll!KiFastSystemCallRet

    01b2f3bc 7c83d236 00000124 00000000 00000000 ntdll!NtWaitForSingleObject+0xc

    01b2f3f8 7c83d281 00000124 00000004 00000001 ntdll!RtlpWaitOnCriticalSection+0x1a3

    01b2f418 7c82d243 7c8877a0 00000000 000000e9 ntdll!RtlEnterCriticalSection+0xa8

    01b2f44c 7c834029 00000001 00000000 01b2f488 ntdll!LdrLockLoaderLock+0xe4 

    01b2f6bc 77e41bf3 027125c8 01b2f708 01b2f6e8 ntdll!LdrLoadDll+0xc9 

    01b2f724 77e5c70b 72451460 00000000 00000000 kernel32!LoadLibraryExW+0x1b2 

    01b2f738 72451310 72451460 01b2fc90 000000e9 kernel32!LoadLibraryW+0x11 

    01b2f750 724516f9 01b2f75c 01bf8a50 00000780 usbmon!LoadSetupApiDll+0x1f 

    01b2f778 72451687 72455068 01b2f794 01b2fca0 usbmon!BuildPortList+0x11 

    01b2f79c 76136227 00000000 00000002 00000000 usbmon!DynaMon_EnumPorts+0x64 

    01b2f7bc 7615c9ce 00aded40 00000000 00000002 localspl!DpEnumPorts+0x1d 

    01b2f808 7615d2fb 00000000 00000002 00000000 localspl!SplEnumPorts+0xb8 

    01b2f834 740706e4 00000000 00000002 00000000 localspl!LocalEnumPorts+0x2f 

    01b2f874 01008d1e 00000000 00000002 00000000 spoolss!EnumPortsW+0x6d 

    01b2f8a8 01006d07 00000000 00000002 00000000 spoolsv!YEnumPorts+0x8b

    01b2f8cc 77c80193 00000000 00000002 00000000 spoolsv!RpcEnumPorts+0x1e

    01b2f8f8 77ce33e1 01006ce9 01b2fae0 00000006 rpcrt4!Invoke+0x30

    01b2fcf8 77ce35c4 00000000 00000000 000eb3b4 rpcrt4!NdrStubCall2+0x299 

    01b2fd14 77c7ff7a 000eb3b4 000d3888 000eb3b4 rpcrt4!NdrServerCall2+0x19 

    RtlpWaitOnCriticalSection indique que ce thread est en attente sur une « critical section ».

     

    On fait un KP pour avoir les paramètres des appels de fonctions :

     

    0:011> kP

    ChildEBP RetAddr 

    01b2f3b8 7c827d0b ntdll!KiFastSystemCallRet(void)

    01b2f3bc 7c83d236 ntdll!NtWaitForSingleObject(void)+0xc

    01b2f3f8 7c83d281 ntdll!RtlpWaitOnCriticalSection(

                      struct _RTL_CRITICAL_SECTION * CriticalSection = 0x00000124,

                      long Increment = 4)+0x1a3

    01b2f418 7c82d243 ntdll!RtlEnterCriticalSection(

                      struct _RTL_CRITICAL_SECTION * CriticalSection = 0x7c8877a0)+0xa8

    01b2f44c 7c834029 ntdll!LdrLockLoaderLock(

                      unsigned long Flags = 1,

                      unsigned long * Disposition = 0x00000000,

                      void ** Cookie = 0x01b2f488)+0xe4

    01b2f6bc 77e41bf3 ntdll!LdrLoadDll(

                      unsigned short * DllPath = 0x027125c8,

                      unsigned long * DllCharacteristics = 0x01b2f708,

                      struct _UNICODE_STRING * DllName = 0x01b2f6e8 "setupapi",

                      void ** DllHandle = 0x01b2f704)+0xc9 [

    01b2f724 77e5c70b kernel32!LoadLibraryExW(

                      unsigned short * lpwLibFileName = 0x72451460,

                      void * hFile = 0x00000000,

                      unsigned long dwFlags = 0)+0x1b2

    01b2f738 72451310 kernel32!LoadLibraryW(

                      unsigned short * lpwLibFileName = 0x72451460)+0x11

    01b2f750 724516f9 usbmon!LoadSetupApiDll(

                      struct _SETUPAPI_INFO * pSetupInfo = 0x01b2f75c)+0x1f

    01b2f778 72451687 usbmon!BuildPortList(

                      struct DynaMon_Monitor_Info_Struct * pMonitorInfo = 0x72455068,

                      struct Port_Update_Struct ** ppPortUpdateList = 0x01b2f794)+0x11

    01b2f79c 76136227 usbmon!DynaMon_EnumPorts(

                      unsigned short * pszName = 0x00000000,

                      unsigned long dwLevel = 2,

                      unsigned char * pPorts = 0x00000000 "",

                      unsigned long cbBuf = 0,

                      unsigned long * pcbNeeded = 0x01b2fc90,

                      unsigned long * pcReturned = 0x01b2fca0)+0x64

    01b2f7bc 7615c9ce localspl!DpEnumPorts(

                      void * hMonitor = 0x00aded40,

                      unsigned short * pName = 0x00000000,

                      unsigned long Level = 2,

                      unsigned char * pPorts = 0x00000000 "",

                      unsigned long cbBuf = 0,

                      unsigned long * pcbNeeded = 0x01b2fc90,

                      unsigned long * pcReturned = 0x01b2fca0)+0x1d

    01b2f808 7615d2fb localspl!SplEnumPorts(

                      unsigned short * pName = 0x00000000,

                      unsigned long Level = 2,

                      unsigned char * pPorts = 0x00000000 "",

                      unsigned long cbBuf = 0,

                      unsigned long * pcbNeeded = 0x01b2fc90,

                      unsigned long * pcReturned = 0x01b2fca0,

                      struct _INISPOOLER * pIniSpooler = 0x00a956a8)+0xb8

    01b2f834 740706e4 localspl!LocalEnumPorts(

                      unsigned short * pName = 0x00000000,

                      unsigned long Level = 2,

                      unsigned char * pPorts = 0x00000000 "",

                      unsigned long cbBuf = 0,

                      unsigned long * pcbNeeded = 0x01b2fc90,

                      unsigned long * pcReturned = 0x01b2fca0)+0x2f

    01b2f874 01008d1e spoolss!EnumPortsW(

                      unsigned short * pName = 0x00000000,

                      unsigned long Level = 2,

                      unsigned char * pPort = 0x00000000 "",

                      unsigned long cbBuf = 0,

                      unsigned long * pcbNeeded = 0x01b2fc90,

                      unsigned long * pcReturned = 0x01b2fca0)+0x6d

    01b2f8a8 01006d07 spoolsv!YEnumPorts(

                      unsigned short * pName = 0x00000000,

                      unsigned long Level = 2,

                      unsigned char * pPort = 0x00000000 "",

                      unsigned long cbBuf = 0,

                      unsigned long * pcbNeeded = 0x01b2fc90,

                      unsigned long * pcReturned = 0x01b2fca0,

                      Call_Route Route = RPC_CALL (1))+0x8b

    01b2f8cc 77c80193 spoolsv!RpcEnumPorts(

                      unsigned short * pName = 0x00000000,

                      unsigned long Level = 2,

                      unsigned char * pPort = 0x00000000 "",

                      unsigned long cbBuf = 0,

                      unsigned long * pcbNeeded = 0x01b2fc90,

                      unsigned long * pcReturned = 0x01b2fca0)+0x1e [

    01b2f8f8 77ce33e1 rpcrt4!Invoke(void)+0x30

    01b2fcf8 77ce35c4 rpcrt4!NdrStubCall2(

                      struct IRpcStubBuffer * pThis = 0x00000000,

                      struct IRpcChannelBuffer * pChannel = 0x00000000,

                      struct _RPC_MESSAGE * pRpcMsg = 0x000eb3b4,

                      unsigned long * pdwStubPhase = 0x01b2fd10)+0x299

    01b2fd14 77c7ff7a rpcrt4!NdrServerCall2(

                      struct _RPC_MESSAGE * pRpcMsg = 0x000eb3b4)+0x19

     

    Ceci nous montre les paramètres des appels de fonctions et nous montre que ce thread est bloqué car il attend la « critical section » 0x7c8877a0.

     

    0:011> dt _RTL_CRITICAL_SECTION 0x7c8877a0

    spoolsv!_RTL_CRITICAL_SECTION

       +0x000 DebugInfo        : 0x7c8877c0 _RTL_CRITICAL_SECTION_DEBUG

       +0x004 LockCount        : -38

       +0x008 RecursionCount   : 1

       +0x00c OwningThread     : 0x000046ac

       +0x010 LockSemaphore    : 0x00000124

       +0x014 SpinCount        : 0

     

    Cette critical section est détenue par le thread 0x000046ac.

     

    Voyons à quel numéro de thread cela correspond :

     

    0:011> !runaway <- permet d’afficher le temps consommé par chaque thread

    User Mode Time

      Thread       Time

      11:4784      0 days 0:00:01.562

      13:46ac      0 days 0:00:00.890

      15:4ef8      0 days 0:00:00.406

      16:4f60      0 days 0:00:00.125

       3:680       0 days 0:00:00.093

      10:78c       0 days 0:00:00.031

      22:4dc8      0 days 0:00:00.000

      21:4e08      0 days 0:00:00.000

      20:3bf0      0 days 0:00:00.000

      19:4340      0 days 0:00:00.000

      18:4b80      0 days 0:00:00.000

      17:1e1c      0 days 0:00:00.000

      14:4b3c      0 days 0:00:00.000

      12:47f0      0 days 0:00:00.000

       9:724       0 days 0:00:00.000

       8:720       0 days 0:00:00.000

       7:71c       0 days 0:00:00.000

       6:718       0 days 0:00:00.000

       5:6c4       0 days 0:00:00.000

       4:68c       0 days 0:00:00.000

       2:57c       0 days 0:00:00.000

       1:570       0 days 0:00:00.000

       0:558       0 days 0:00:00.000

     

    On se place dans le contexte du thread :

     

    0:011> ~13s

    eax=00000001 ebx=77792c30 ecx=0207f501 edx=00000000 esi=00000a60 edi=00000000

    eip=7c8285ec esp=0207fd60 ebp=0207fdd0 iopl=0         nv up ei pl zr na pe nc

    cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000246

    ntdll!KiFastSystemCallRet:

    7c8285ec c3              ret

     

    Puis on liste toute la stack :

     

    0:013> kv

    ChildEBP RetAddr  Args to Child             

    0207fd5c 7c827d0b 77e61d1e 00000a60 00000000 ntdll!KiFastSystemCallRet

    0207fd60 77e61d1e 00000a60 00000000 00000000 ntdll!NtWaitForSingleObject+0xc

    0207fdd0 77e61c8d 00000a60 ffffffff 00000000 kernel32!WaitForSingleObjectEx+0xac 

    0207fde4 776f56f4 00000a60 ffffffff 77792cf0 kernel32!WaitForSingleObject+0x12 

    0207fe00 7768dac2 00000a60 00000000 00000080 ole32!CDllHost::ClientCleanupFinish+0x2a 

    0207fe2c 7768da32 00000000 0207fe7c 777966d4 ole32!DllHostProcessUninitialize+0x80 

    0207fe4c 776bce20 00000000 00000000 02702988 ole32!ApartmentUninitialize+0xf8 

    0207fe64 776bcdd2 0207fe7c 00000000 00000001 ole32!wCoUninitialize+0x7d

    0207fe80 776e4de6 00000001 77670000 776bc793 ole32!CoUninitialize+0x65 

    0207fe8c 776bc793 0207feb4 776bc732 77670000 ole32!DoThreadSpecificCleanup+0x63 

    0207fe94 776bc732 77670000 00000003 00000000 ole32!ThreadNotification+0x37 

    0207feb4 776bc6da 77670000 00000003 00000000 ole32!DllMain+0x194 

    0207fed4 7c81a352 77670000 00000003 00000000 ole32!_DllMainCRTStartup+0x52 

    0207fef4 7c819178 776bc692 77670000 00000003 ntdll!LdrpCallInitRoutine+0x14

    0207ffa8 77e4f920 00000000 00000000 0207ffec ntdll!LdrShutdownThread+0xd2 

    0207ffb8 77e6482e 00000000 00000000 00000000 kernel32!ExitThread+0x2f 

    0207ffec 00000000 77c7b0f5 000bb338 00000000 kernel32!BaseThreadStart+0x39

     

    On peu voir que ce thread est en attente avec un WaitForSingleObject.

     

    On fait un kP pour avoir l’objet sur lequel ce thread est en attente :

     

    0:013> kP

    ChildEBP RetAddr 

    0207fd5c 7c827d0b ntdll!KiFastSystemCallRet(void) [

    0207fd60 77e61d1e ntdll!NtWaitForSingleObject(void)+0xc

    0207fdd0 77e61c8d kernel32!WaitForSingleObjectEx(

                      void * hHandle = 0x00000a60,

                      unsigned long dwMilliseconds = 0xffffffff,

                      int bAlertable = 0)+0xac

    0207fde4 776f56f4 kernel32!WaitForSingleObject(

                      void * hHandle = 0x00000a60,

                      unsigned long dwMilliseconds = 0xffffffff)+0x12

    0207fe00 7768dac2 ole32!CDllHost::ClientCleanupFinish(

                      void * hEvent = 0x00000a60)+0x2a

    0207fe2c 7768da32 ole32!DllHostProcessUninitialize(void)+0x80

    0207fe4c 776bce20 ole32!ApartmentUninitialize(

                      int fHostThread = 0)+0xf8

    0207fe64 776bcdd2 ole32!wCoUninitialize(

                      class COleTls * Tls = 0x0207fe7c,

                      int fHostThread = 0)+0x7d

    0207fe80 776e4de6 ole32!CoUninitialize(void)+0x65

    0207fe8c 776bc793 ole32!DoThreadSpecificCleanup(void)+0x63

    0207fe94 776bc732 ole32!ThreadNotification(

                      struct HINSTANCE__ * hDll = 0x77670000,

                      unsigned long dwReason = 3,

                      void * lpvReserved = 0x00000000)+0x37

    0207feb4 776bc6da ole32!DllMain(

                      void * hInstance = 0x77670000,

                      unsigned long dwReason = 3,

                      void * lpvReserved = 0x00000000)+0x194

    0207fed4 7c81a352 ole32!_DllMainCRTStartup(

                      void * hDllHandle = 0x77670000,

                      unsigned long dwReason = 3,

                      void * lpreserved = 0x00000000)+0x52

    0207fef4 7c819178 ntdll!LdrpCallInitRoutine(void)+0x14

    0207ffa8 77e4f920 ntdll!LdrShutdownThread(void)+0xd2

    0207ffb8 77e6482e kernel32!ExitThread(

                      unsigned long dwExitCode = 0)+0x2f

    0207ffec 00000000 kernel32!BaseThreadStart(

                      <function> * lpStartAddress = 0x77c7b0f5,

    void * lpParameter = 0x000bb338)+0x39

     

    Puis on tape la commande suivante :

     

    0:013> !handle 0x00000a60

    Handle 00000a60

      Type            Event

     

    Cet objet est un Event, donc ce thread attend qu’un Event soit signalé.

     

    Regardons un peu plus loin dans la stack :

     

    0:013> kv n (le “n” permet d’afficher les numéro de frame)

    # ChildEBP RetAddr  Args to Child             

    00 0207fd5c 7c827d0b 77e61d1e 00000a60 00000000 ntdll!KiFastSystemCallRet

    01 0207fd60 77e61d1e 00000a60 00000000 00000000 ntdll!NtWaitForSingleObject+0xc

    02 0207fdd0 77e61c8d 00000a60 ffffffff 00000000 kernel32!WaitForSingleObjectEx+0xac 

    03 0207fde4 776f56f4 00000a60 ffffffff 77792cf0 kernel32!WaitForSingleObject+0x12 

    04 0207fe00 7768dac2 00000a60 00000000 00000080 ole32!CDllHost::ClientCleanupFinish+0x2a 

    05 0207fe2c 7768da32 00000000 0207fe7c 777966d4 ole32!DllHostProcessUninitialize+0x80

    06 0207fe4c 776bce20 00000000 00000000 02702988 ole32!ApartmentUninitialize+0xf8 

    07 0207fe64 776bcdd2 0207fe7c 00000000 00000001 ole32!wCoUninitialize+0x7d 

    08 0207fe80 776e4de6 00000001 77670000 776bc793 ole32!CoUninitialize+0x65 

    09 0207fe8c 776bc793 0207feb4 776bc732 77670000 ole32!DoThreadSpecificCleanup+0x63 

    0a 0207fe94 776bc732 77670000 00000003 00000000 ole32!ThreadNotification+0x37

    0b 0207feb4 776bc6da 77670000 00000003 00000000 ole32!DllMain+0x194 

    0c 0207fed4 7c81a352 77670000 00000003 00000000 ole32!_DllMainCRTStartup+0x52 

    0d 0207fef4 7c819178 776bc692 77670000 00000003 ntdll!LdrpCallInitRoutine+0x14

    0e 0207ffa8 77e4f920 00000000 00000000 0207ffec ntdll!LdrShutdownThread+0xd2 

    0f 0207ffb8 77e6482e 00000000 00000000 00000000 kernel32!ExitThread+0x2f

    10 0207ffec 00000000 77c7b0f5 000bb338 00000000 kernel32!BaseThreadStart+0x39

     

    Nous pouvons voir que ce thread est en cours de fermeture (kernel32!ExitThread) et dans une phase de fermeture d’un thread nous notifions toutes les dlls du processus pour leurs indiquer que ce thread se termine et dans cette stack nous avons :

     

    0b 0207feb4 776bc6da 77670000 00000003 00000000 ole32!DllMain+0x194 

    0c 0207fed4 7c81a352 77670000 00000003 00000000 ole32!_DllMainCRTStartup+0x52

    0d 0207fef4 7c819178 776bc692 77670000 00000003 ntdll!LdrpCallInitRoutine+0x14

    0e 0207ffa8 77e4f920 00000000 00000000 0207ffec ntdll!LdrShutdownThread+0xd2

    0f 0207ffb8 77e6482e 00000000 00000000 00000000 kernel32!ExitThread+0x2f 

     

    On se met sur la frame 0c :

     

    0:013> .frame 0c

    0c 0207fed4 7c81a352 ole32!_DllMainCRTStartup+0x52

     

    Puis on fait un DV pour afficher les paramètres :

     

    0:013> dv

         hDllHandle = 0x77670000

       dwReason = 3

       lpreserved = 0x00000000

       retcode = 3

     

    Regardons maintenant à quoi correspond ce « hDllHandle » :

     

    0:013> !lmi 0x77670000

    Loaded Module Info: [0x77670000]

             Module: ole32

       Base Address: 77670000

         Image Name: ole32.dll

       Machine Type: 332 (I386)

         Time Stamp: 45d70aa5 Sat Feb 17 15:01:09 2007

               Size: 139000

           CheckSum: 14357b

    Characteristics: 210e  perf

    Debug Data Dirs: Type  Size     VA  Pointer

                 CODEVIEW    22, 11a44c,  11984c RSDS - GUID: {DC8A079C-AE0B-4A0C-89EC-5A936EAF1F7F}

                   Age: 2, Pdb: ole32.pdb

                    CLSID     4, 11a448,  119848 [Data not mapped]

         Image Type: MEMORY   - Image read successfully from loaded memory.

        Symbol Type: PDB      - Symbols loaded successfully from symbol server.

                            Compiler: C++ - front end [13.10 bld 4035] - back end [13.10 bld 4035]

     

    Nous voyons que dans la phase de shutdown on appelle OLE32 et nous somme en attente d’un Event.

     

    En regardant les autres thread du spooler, nous pouvons voir un thread qui est dans une phase de  LdrUnloadDll (déchargement d’une dll). Mais ce thread est en attente sur une « critical section » qui est celle détenue par le thread précédent :

     

    0:013> ~18s

    eax=77ec1944 ebx=00000000 ecx=77e424de edx=03311b00 esi=7c8877a0 edi=00000000

    eip=7c8285ec esp=032cfcb8 ebp=032cfcf4 iopl=0         nv up ei pl zr na pe nc

    cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000246

    ntdll!KiFastSystemCallRet:

    7c8285ec c3              ret

    0:018> kv

    ChildEBP RetAddr  Args to Child             

    032cfcb4 7c827d0b 7c83d236 00000124 00000000 ntdll!KiFastSystemCallRet

    032cfcb8 7c83d236 00000124 00000000 00000000 ntdll!NtWaitForSingleObject+0xc

    032cfcf4 7c83d281 00000124 00000004 00000000 ntdll!RtlpWaitOnCriticalSection+0x1a3 

    032cfd14 7c839844 7c8877a0 032cfe70 032cfeac ntdll!RtlEnterCriticalSection+0xa8

    032cfe1c 77e6b1bb 02100000 032cfeac 032cfedc ntdll!LdrUnloadDll+0x35

    032cfe30 77691d0f 02100000 032cff04 77691d23 kernel32!FreeLibrary+0x41 

    032cfe3c 77691d23 032cfeb8 777965b0 00000000 ole32!CClassCache::CDllPathEntry::CFinishObject::Finish+0x2f

    032cfe50 77691afe 77671af0 00000000 00000000 ole32!CClassCache::CFinishComposite::Finish+0x1d 

    032cff04 7769182a 02702bd8 00000080 776bc944 ole32!CClassCache::CleanUpDllsForApartment+0x1d0 

    032cff30 7769174c 00000000 032cff84 777966d4 ole32!FinishShutdown+0xd7

    032cff50 776bce20 00000001 00007530 77792c30 ole32!ApartmentUninitialize+0x94

    032cff68 776f5797 032cff84 00000001 77e61c96 ole32!wCoUninitialize+0x7d

    032cff88 7768f2a2 032cffac 776bbab4 77792c30 ole32!CDllHost::WorkerThread+0xdd

    032cff90 776bbab4 77792c30 00000000 0270a1c0 ole32!DLLHostThreadEntry+0xd

    032cffac 776b1704 00000000 032cffec 77e64829 ole32!CRpcThread::WorkerLoop+0x26

    032cffb8 77e64829 0270a1c0 00000000 00000000 ole32!CRpcThreadCache::RpcWorkerThreadEntry+0x20 

    032cffec 00000000 776b16e4 0270a1c0 00000000 kernel32!BaseThreadStart+0x34

     

    Regardons quelle DLL ce thread essaie de décharger :

     

    0:018> kP

    ChildEBP RetAddr 

    032cfcb4 7c827d0b ntdll!KiFastSystemCallRet(void)

    032cfcb8 7c83d236 ntdll!NtWaitForSingleObject(void)+0xc

    032cfcf4 7c83d281 ntdll!RtlpWaitOnCriticalSection(

                      struct _RTL_CRITICAL_SECTION * CriticalSection = 0x00000124,

                      long Increment = 4)+0x1a3

    032cfd14 7c839844 ntdll!RtlEnterCriticalSection(

                      struct _RTL_CRITICAL_SECTION * CriticalSection = 0x7c8877a0)+0xa8

    032cfe1c 77e6b1bb ntdll!LdrUnloadDll(

                      void * DllHandle = 0x02100000)+0x35

    032cfe30 77691d0f kernel32!FreeLibrary(

                      struct HINSTANCE__ * hLibModule = 0x02100000)+0x41

    032cfe3c 77691d23 ole32!CClassCache::CDllPathEntry::CFinishObject::Finish(void)+0x2f

    032cfe50 77691afe ole32!CClassCache::CFinishComposite::Finish(void)+0x1d

    032cff04 7769182a ole32!CClassCache::CleanUpDllsForApartment(void)+0x1d0

    032cff30 7769174c ole32!FinishShutdown(void)+0xd7

    032cff50 776bce20 ole32!ApartmentUninitialize(

                      int fHostThread = 1)+0x94

    032cff68 776f5797 ole32!wCoUninitialize(

                      class COleTls * Tls = 0x032cff84,

                      int fHostThread = 1)+0x7d

    032cff88 7768f2a2 ole32!CDllHost::WorkerThread(void)+0xdd

    032cff90 776bbab4 ole32!DLLHostThreadEntry(

                      void * param = 0x77792c30)+0xd [

    032cffac 776b1704 ole32!CRpcThread::WorkerLoop(void)+0x26

    032cffb8 77e64829 ole32!CRpcThreadCache::RpcWorkerThreadEntry(

                      void * param = 0x0270a1c0)+0x20

    032cffec 00000000 kernel32!BaseThreadStart(

                      <function> * lpStartAddress = 0x776b16e4,

                      void * lpParameter = 0x0270a1c0)+0x34

    0:018> !lmi 0x02100000

    Loaded Module Info: [0x02100000]

             Module: HPBOID

       Base Address: 02100000

         Image Name: HPBOID.DLL

       Machine Type: 332 (I386)

         Time Stamp: 45c30dad Fri Feb 02 11:08:45 2007

               Size: 9000

           CheckSum: e266

    Characteristics: 210e 

    Debug Data Dirs: Type  Size     VA  Pointer

                 CODEVIEW    54,  1458,     858 RSDS - GUID: {6D0A74B4- DFB-4467-BA2A-27942C80B5FC}

        Image Type: MEMORY   - Image read successfully from loaded memory.

        Symbol Type: EXPORT   - PDB not found

    Load Report: export symbols

     

    Conclusion

     

    Ici le problème semble lié au module HPBOID.

     

    Résolution

     

    Nous avons dans un premier temps renommé ce composant  afin de vérifier :

    1. Si cela permettait de résoudre le problème (ce fût le cas)

    2. De s’assurer que cela n’avait pas d’impact sur le bon fonctionnement des imprimantes.

     

    Ensuite, il a fallut contacter l’éditeur de ce composant afin soit de le désinstaller sans impacter les imprimantes ou de se procurer une version mise à jour corrigeant ce problème.

     

    Bon réveillon et bonne année.

    Philippe

    Windows Core Support Escalation Engineer

  • Compilation d’articles techniques Hyper-V

    Voici une compilation des articles techniques concernant Hyper-V. La liste n’est pas exhaustive car elle n’inclue que les fiches concernant la version RTM et les problèmes et informations liés directement à Hyper-V, et j’ai pu en rater quelques unes...

    Les titres sont en anglais (compréhension oblige) mais les liens dirigent vers la page traduite automatiquement en Français (je recommande tout de même de lire les articles en Anglais pour assurer une lecture non biaisée !).

    A noter que certains articles sont en cours d’écriture, dont la fiche KB959962 (Hyper-V writer is required for backing up Hyper-V VMs with DPM) qui est prévue pour Janvier 2009.

     

    Bonne lecture !

     

    Supportabilité

    KB897615 - Support policy for Microsoft software running in non-Microsoft hardware virtualization software

    KB951041 - Supported paths for upgrading from Windows Server 2003 to Windows Server 2008

    KB954958 - Guest operating systems that are supported on a Hyper-V virtual machine

    KB957006 - Microsoft server software and supported virtualization environments

    KB957054 - Support for Microsoft Dynamics CRM 4.0 on a computer that is running Windows Server 2008 Hyper-V

    KB956893 - Support policy for Microsoft SQL Server products that are running in a hardware virtualization environment

    KB842301 - Microsoft BizTalk Server supportability on a virtual machine

    KB320220 - Microsoft support policies and recommendations for servers that are running Exchange Server in hardware virtualization environments

    KB909840 - Hardware virtualization support for SharePoint products and technologies

    KB958664 - Windows Server system software that is not supported in a Hyper-V virtual machine environment

    KB888794 - Considerations when hosting Active Directory domain controller in virtual hosting environments

    KB954418 - Sleep and hibernate power features are not available when you enable Hyper-V technology on a Windows Server 2008-based portable computer

    KB944987 - Support partners for non-Microsoft hardware virtualization software

     

    Mises à jours

     

    KB950050 - Description of the update for the release version of the Hyper-V technology for Windows Server 2008

    KB951636 - Description of the Hyper-V Language Pack for Windows Server 2008

    KB956710 - A Hyper-V update is available to increase the number of logical processors and virtual machines on a Windows Server 2008 x64-based computer

    KB952627 - Description of the Windows Vista Service Pack 1 Management Tools update for the release version of Hyper-V

    KB951308 - Increased functionality and virtual machine control in the Windows Server 2008 Failover Cluster Management console for the Hyper-V role

     

    Problèmes

     

    KB950182 - A computer that is running an x86-based version of Windows Server 2008 or an x86-based version of Windows Vista may use fewer processors than expected if the number of cores on a socket is not a power of 2

    KB956774 - A Background Intelligent Transfer Service (BITS) client cannot handle files that have paths that contain the volume GUID in Windows Server 2008 or in Windows Vista

    KB956697 - Windows Server 2008 Hyper-V VSS writer is not used during a backup job because of corrupted or invalid virtual machine configuration files

    KB950792 - When you try to enable, disable, or update Hyper-V technology, the process stops responding

    KB949222 - Virtual machines that were created on the beta version of the Hyper-V role do not start after the Hyper-V role is updated to a later version

    KB953828 - The NLB host does not converge as expected on Windows Server 2008 Hyper-V virtual machines

    KB953585 - Error message when you try to start a Hyper-V virtual machine on a Windows Server 2008-based or Windows Vista-based computer that uses the NUMA architecture: "An error occurred while attempting to change the state of virtual machine VMNAME"

    KB958829 - When Hyper-V is installed in SBS 2008 it causes the bindings for DHCP to bind to the incorrect interface

    KB960038 - You receive a "0x0000007E" Stop error on Windows Server 2008-based computers that host Hyper-V virtual machines when you use the Hyper-V writer to back up virtual machines

    KB954282 - The VMBus device does not load on a virtual machine that is running on a Windows Server 2008-based computer that has Hyper-V installed

    KB959978 - Error message when you back up a Windows Server 2003-based virtual machine on a Windows Server 2008 Hyper-V-based computer: "GetWriterStatus FAILED for Selected writer [Microsoft Hyper-V VSS Writer], writer is in state [9] [VSS_WS_FAILED_AT_FREEZE]"

    KB957967 - Stop error message on a Windows Server 2008-based computer that has the Hyper-V role installed: "STOP 0x0000001A"

    KB954281 - After you install Windows 2000 on a virtual machine that is running on a Windows Server 2008-based computer that uses Hyper-V technology, you can only create a maximum startup disk that is 127 GB

    KB958184 - Virtual machine backup operations fail in Windows Server 2008 when Hyper-V virtual machine files are saved on a volume that is mounted on a failover cluster by using a volume GUID

    KB958065 - You cannot configure a Hyper-V virtual machine by using Windows Server 2008 Failover Clustering when the virtual machine uses a storage device that is managed by a third-party clustered file system or a third-party replication solution

    KB954279 - You are not prompted for credentials after you receive an "Access Denied" error message when you try to connect to a virtual machine from the Windows Server 2008 Hyper-V MMC snap-in

    KB954280 - Error message when you try to export a virtual machine on a Windows Server 2008-based computer that uses Hyper-V: "An error occurred while attempting to export the virtual machine"

    KB954356 - After you deploy a Sysprep prepared image, the Hypervisor layer service does not start automatically in Windows Server 2008

    KB958668 - You cannot shutdown a locked Windows 2000 SP4 virtual machine in Hyper-V Manager on a server that is running Windows Server 2008

    KB959781 - Windows 2000 with Integration Services may shut down slowly while running as a guest on Server 2008 with Hyper-V

    KB960024 - Error message when you try to create a new virtual machine in Windows Vista or Windows Server 2008: "The Encountered an Error while creating a Virtual Machine"

    KB958665 - You do not receive an error message after you restore a Windows Server 2008 Hyper-V virtual machine

     

    System Center Virtual Machine Manager

     

    KB956589 - Description of the Hyper-V update for issues that may occur when you manage the Hyper-V role on the 64-bit editions of Windows Server 2008 by using SCVMM

     

    How to

     

    KB958662 - How to back up Hyper-V virtual machines from the parent partition on a Windows Server 2008-based computer by using Windows Server Backup

    KB958663 - How to move a virtual machine that is running on Microsoft Virtual Server to a Windows Server 2008 Hyper-V environment

     

    Guillaume

    Windows Core Support Escalation Engineer

  • Journée Technique d’Expertise Thématique – Windows Server 2008

    Suite au succès rencontré le 5 Mai dernier, la journée technique d’expertise thématique (JTET) consacrée à Windows Server 2008, “Windows Server 2008 - Technologie et Méthodologie : Les clés de la réussite”, sera rejouée le 20 Janvier 2009 à nos clients Premier.

    J’aurais à nouveau le plaisir d’y participer et de présenter les technologies Windows Server avec mes camarades Arnaud Lheureux, Julien Peyridieux et Jean Ragot.

     

    D’un existant sous Windows 2000 (serveurs, AD, Exchange, client, Outlook) les trois intervenants upgraderont vers les toutes dernières versions de Windows Server, de Windows Vista, d’Exchange avec les tous derniers outils de déploiement Microsoft (MDT 2008, Microsoft Deployment Toolkit), et mettront en œuvre la quasi-totalité des nouvelles technologies présentes dans ces produits en suivant la méthodologie MOF, ce dont le spécialiste méthodologies s’assurera au fil de nos opérations.

    D’une plateforme basique nous aboutirons à une plateforme représentant un condensé du savoir-faire Microsoft en matière d’architecture serveurs, le tout en suivant les principes et les règles MOF. Une plateforme transfigurée en quelques heures, des solutions neuves et efficaces mises à la disposition des utilisateurs, en bref, la vie d’une infrastructure IT en une journée.

    Agenda :Server Unleashed

    • Introduction à la situation : un existant, une cible, les principes MOF que nous suivons
    • Chaîne des composants, cartographie de l’existant
    • Upgrade Active Directory de Windows Server 2000 à Windows Server 2008 et déploiement automatisé
    • Gestion de changement (changement standard, changement majeur)
    • Mise à jour vers Exchange 2007 SP1
    • Déploiement automatisé de cluster
    • Migration client de Windows XP vers Windows Vista SP1 avec préservation des données/profils utilisateurs
    • Déploiement automatisé de RODC avec IFM sur Server Core
    • Mise en place de l’isolation de domaine
    • Déploiement de NAP
    • Gestion du niveau de service
    • Mise en place de QoS
    • Exploitation des nouveautés des stratégies de groupes
    • Déploiement des solutions Terminal Services et mise à disposition des services d’accès distants aux applications internes
    • Déploiement du 802.1x/SSO
    • Exploitation des nouveautés Active Directory
    • Mise en place des Fine-Grained Password Policy
    • Gestion d’incidents
    • CMDB
    • Hyper-V
    • Mise en place du remote access
    • Et bien d’autres choses encore… Le tout à la façon MS IT, à savoir en suivant la méthodologie MOF

     

    Comme indiqué plus haut, cette journée est réservée aux clients Premier. Pour ceux d’entre vous qui disposent d’un tel contrat, contactez votre TAM pour obtenir les modalités d’inscriptions.

    Je vous donne rendez-vous pour cette journée hyper-intensive ! Ce sera l’occasion pour vous d’appréhender les problématiques techniques qui nous mobilisent tous les jours et la façon de les anticiper.

     

    Guillaume

    Windows Core Support Escalation Engineer

  • Debugger un 100% CPU du spooler

    Dans ce post nous allons voir comment traiter un problème spécifique de 100% CPU causé par le spooler.

    Après avoir constaté via Task Manager ou Process Explorer que le processus causant cette consommation de temps processeur était bien Spoolsv.exe (spooler d’impression), nous avons pris plusieurs dumps du processus avec l’outil Adplus.

    Cette méthodologie peut être reprise pour identifier d’autres dysfonctionnements liés au spooler.

     

    Collecte de dump

    Pour cela, télécharger les « Debugging Tools » à cette adresse : http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx et les installer sur le serveur (il est possible d’installer ces outils sur une machine moins sensible puis de copier le répertoire d’installation vers le serveur).

    Après avoir installé ces outils nous avons pris des dumps du processus Spoolsv.exe via la commande suivante :

    Cscript Adplus.vbs –quiet –hang –pn spoolsv.exe –r 3 60

      • -quiet => afin de ne pas avoir à répondre aux deux messages « popup » concernant les symbols
      • -hang => vous avez le choix entre hang ou crash, dans notre cas comme nous voulons prendre des dumps sans interrompre le processus nous utilisons donc –hang.
      • -pn=> cette option permet de spécifier le nom du processus, sinon vous pouvez utiliser –p en spécifiant le PID du process.
      • -r => permet d’automatiser la prise de plusieurs dumps avec un intervalle de temps entre chaque dump, ici 3 dumps avec 60s entre chaque dump.

    Après avoir pris les dumps, nous les avons ouverts avec Windbg (fournis aussi avec les Debugging tools) :

    1. Menu Démarrer => Debugging tools for Windows => Windbg
    2. Depuis le menu File => Symbol file path entrez les paramètres suivants : SRV*C:\SYMBOLS*http://msdl.microsoft.com/download/symbols puis OK
      Il est important de disposer de symboles pour que Windbg puisse interpréter le contenu de la mémoire, de la pile, etc…On spécifie ici la source utilisée pour télécharger les symboles publics (en l’occurrence les serveurs publics Microsoft)
    3. File=> Open Crash Dump

     

    Analyse des dumps

    La première étape consiste à rechercher le thread consommant le plus de CPU :

    >!runaway

    User Mode Time

    Thread Time

    4:1144 0 days 0:00:01.312 => Le thread 4 est celui qui utilise actuellement le plus de CPU

    11:135c 0 days 0:00:00.015

    17:1714 0 days 0:00:00.000

    16:1710 0 days 0:00:00.000

    15:170c 0 days 0:00:00.000

    14:1708 0 days 0:00:00.000

    13:1704 0 days 0:00:00.000

    12:1700 0 days 0:00:00.000

    10:16fc 0 days 0:00:00.000

    9:16f8 0 days 0:00:00.000

    8:16f0 0 days 0:00:00.000

    7:16e8 0 days 0:00:00.000

    6:16ac 0 days 0:00:00.000

    5:113c 0 days 0:00:00.000

    3:15c8 0 days 0:00:00.000

    2:ff4 0 days 0:00:00.000

    1:13c 0 days 0:00:00.000

    0:148 0 days 0:00:00.000

    Nous devons donc nous positionner dans le contexte du thread :

    >~4s

    eax=0000004b ebx=00000000 ecx=00a3dea8 edx=7ffe0300 esi=00a3e008 edi=00000000

    eip=7c8285ec esp=00a3df94 ebp=00a3dfd4 iopl=0 nv up ei pl nz na pe nc

    cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000206

    ntdll!KiFastSystemCallRet:

    7c8285ec c3 ret

    On affiche la pile du thread :

    >kv

    ChildEBP RetAddr Args to Child

    00a3df90 7c82734b 77f5cd00 00a3dfe0 00010000 ntdll!KiFastSystemCallRet (FPO: [0,0,0])

    00a3df94 77f5cd00 00a3dfe0 00010000 00a3dfb4 ntdll!ZwOpenKey+0xc (FPO: [3,0,0])

    00a3dfd4 77f5cc4d 0000047c 00000000 00000000 advapi32!LocalBaseRegDeleteKeyEx+0xb0 (FPO: [Non-Fpo]) (CONV: stdcall)

    00a3dfec 77f5cc0d 0000047c 00a3e008 00a3e2c4 advapi32!LocalBaseRegDeleteKey+0x14 (FPO: [Non-Fpo]) (CONV: stdcall)

    00a3e038 7616687e 0000047c 00a3e2c4 00a3e288 advapi32!RegDeleteKeyW+0xd2 (FPO: [Non-Fpo]) (CONV: stdcall)

    00a3e048 7613e295 0000047c 00a3e2c4 008f52a8 localspl!SplRegDeleteKey+0x3d (FPO: [Non-Fpo]) (CONV: stdcall)

    00a3e288 7613e234 0000047c 000001e0 00a3e2c4 localspl!SplRegDeleteKey+0x17b (FPO: [Non-Fpo]) (CONV: stdcall)

    00a3e4d0 7613e234 00000478 0000047c 00a3e50c localspl!SplRegDeleteKey+0x126 (FPO: [Non-Fpo]) (CONV: stdcall)

    00a3e718 7613e234 00000480 00000478 00a3e754 localspl!SplRegDeleteKey+0x126 (FPO: [Non-Fpo]) (CONV: stdcall)

    00a3e960 76143a57 00000174 00000480 008f9e78 localspl!SplRegDeleteKey+0x126 (FPO: [Non-Fpo]) (CONV: stdcall)

    00a3e990 76143ac2 008f9e78 008f52a8 008f52a8 localspl!DeletePrinterIni+0x7a (FPO: [Non-Fpo]) (CONV: stdcall)

    00a3e9a8 7613f590 00958078 00000001 00000000 localspl!DeletePrinterForReal+0x2b (FPO: [Non-Fpo]) (CONV: stdcall)

    00a3e9bc 76133674 008f52a8 008f52a8 00a3f68c localspl!CleanupDeletedPrinters+0x2b (FPO: [Non-Fpo]) (CONV: stdcall)

    00a3f230 761374eb 008f52a8 00000000 008f2ab8 localspl!BuildPrinterInfo+0xee5 (FPO: [Non-Fpo]) (CONV: stdcall)

    00a3f668 761391f8 0090e8a0 00000001 00a3f68c localspl!SplCreateSpooler+0x644 (FPO: [Non-Fpo]) (CONV: stdcall)

    00a3f908 74064c44 008f2ab8 00000158 00000000 localspl!InitializePrintProvidor+0x1bc (FPO: [Non-Fpo]) (CONV: stdcall)

    00a3f930 74064915 74064cd0 00000000 00000000 spoolss!InitializeProvidor+0x89 (FPO: [Non-Fpo]) (CONV: stdcall)

    00a3ffb8 77e64829 008f1ea8 00000000 00000000 spoolss!InitializeRouter+0x25b (FPO: [Non-Fpo]) (CONV: stdcall)

    00a3ffec 00000000 01003f90 008f1ea8 00000000 kernel32!BaseThreadStart+0x34 (FPO: [Non-Fpo]) (CONV: stdcall)

    Ici on peut voir que nous essayons de faire une suppression d’une clé de registre, localspl!SplRegDeleteKey, et cela en boucle car il semble que le processus n’arrive pas à la supprimer, d’où la consommation de CPU dans le temps.

    Voyons à quoi correspond cette clé (du moins trouver l’adresse du handle qui pointe vers cette clé) avec la commande suivante :

    >Kp

    ChildEBP RetAddr

    00a3df90 7c82734b ntdll!KiFastSystemCallRet(void)

    00a3df94 77f5cd00 ntdll!ZwOpenKey(void)+0xc

    00a3dfd4 77f5cc4d advapi32!LocalBaseRegDeleteKeyEx(struct HKEY__ * hKey = 0x0000047c, struct _UNICODE_STRING * lpSubKey = 0x00000000, unsigned long samDesired = 0, unsigned long Reserved = 0)+0xb0

    00a3dfec 77f5cc0d advapi32!LocalBaseRegDeleteKey(struct HKEY__ * hKey = 0x0000047c, struct _UNICODE_STRING * lpSubKey = 0x00a3e008 "(0x1A01)")+0x14

    00a3e038 7616687e advapi32!RegDeleteKeyW(struct HKEY__ * hKey = 0x0000047c, unsigned short * lpKeyName = 0x00a3e2c4)+0xd2

    00a3e048 7613e295 localspl!SplRegDeleteKey(void * hKey = 0x0000047c, unsigned short * pszSubKey = 0x00a3e2c4, struct _INISPOOLER * pIniSpooler = 0x008f52a8)+0x3d

    00a3e288 7613e234 localspl!SplDeleteThisKey(void * hParentKey = 0x0000047c, void * hThisKey = 0x000001e0, unsigned short * pThisKeyName = 0x00a3e2c4, int bDeleteNullKey = 1, struct _INISPOOLER * pIniSpooler = 0x008f52a8)+0x17b

    00a3e4d0 7613e234 localspl!SplDeleteThisKey(void * hParentKey = 0x00000478, void * hThisKey = 0x0000047c, unsigned short * pThisKeyName = 0x00a3e50c, int bDeleteNullKey = 1, struct _INISPOOLER * pIniSpooler = 0x008f52a8)+0x126

    00a3e718 7613e234 localspl!SplDeleteThisKey(void * hParentKey = 0x00000480, void * hThisKey = 0x00000478, unsigned short * pThisKeyName = 0x00a3e754, int bDeleteNullKey = 1, struct _INISPOOLER * pIniSpooler = 0x008f52a8)+0x126

    00a3e960 76143a57 localspl!SplDeleteThisKey(void * hParentKey = 0x00000174, void * hThisKey = 0x00000480, unsigned short * pThisKeyName = 0x008f9e78, int bDeleteNullKey = 1, struct _INISPOOLER * pIniSpooler = 0x008f52a8)+0x126

    00a3e990 76143ac2 localspl!DeletePrinterIni(struct _INIPRINTER * pIniPrinter = 0x008f9e78)+0x7a

    00a3e9a8 7613f590 localspl!DeletePrinterForReal(struct _INIPRINTER * pIniPrinter = 0x00958078, int bIsInitTime = 1)+0x2b

    00a3e9bc 76133674 localspl!CleanupDeletedPrinters(struct _INISPOOLER * pIniSpooler = 0x008f52a8)+0x2b

    00a3f230 761374eb localspl!BuildPrinterInfo(struct _INISPOOLER * pIniSpooler = 0x008f52a8, int UpdateChangeID = 0)+0xee5

    00a3f668 761391f8 localspl!SplCreateSpooler(unsigned short * pMachineName = 0x0090e8a0, unsigned long Level = 1, unsigned char * pSpooler = 0x00a3f68c "", unsigned char * pReserved = 0x00000000 "")+0x644

    00a3f908 74064c44 localspl!InitializePrintProvidor(struct _PRINTPROVIDOR * pPrintProvidor = 0x008f2ab8, unsigned long cbPrintProvidor = 0x158, unsigned short * pFullRegistryPath = 0x00000000)+0x1bc

    00a3f930 74064915 spoolss!InitializeProvidor(unsigned short * pProvidorName = 0x74064cd0, unsigned short * pFullName = 0x00000000)+0x89

    00a3ffb8 77e64829 spoolss!InitializeRouter(struct RouterInitializationParams * pRouterParams = 0x008f1ea8)+0x25b

    00a3ffec 00000000 kernel32!BaseThreadStart(<function> * lpStartAddress = 0x01003f90, void * lpParameter = 0x008f1ea8)+0x34

    La commande suivante permet d’afficher la clé de registre qui ne peut être supprimée :

    >!handle 0000047c 4

    Handle 0000047c

    Name \REGISTRY\MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\bg-picklabel on bgmprint (from BG-JLP) in session 1\PrinterDriverData\Papers

    Cette clé est vraisemblablement corrompue car la tentative de suppression manuelle avec Regedit s’est avérée impossible. Le nom de la clé est peu commun et peut donc contenir des caractères null.

    La suppression via Regedit n'étant pas possible nous avons utilisé l'outil RegDelNull.exe (disponible depuis http://www.microsoft.com/technet/sysinternals/utilities/regdelnull.mspx ) via la commande : RegDelNull.exe hklm -s puis nous avons répondu « Yes » concernant la suppression de la clé « bg-picklabel on bgmprint (from BG-JLP) in session 1\PrinterDriverData\Papers »

    Un redémarrage du spooler a permis de remettre en service le service d’impression.

     

    Philippe

    Windows Core Support Escalation Engineer

  • Venez nous rencontrer aux TechDays 2009 !

    techdays09

    Hervé Chapalain aura l’occasion de présenter une session orientée debugging le Mardi 10 Février. Ne manquez pas cette session et profitez du talent d’Hervé pour découvrir le quotidien d’un ingénieur support dans l’équipe Windows Core !

    Session FRA408 - Débogage d’applications en production (Web, Service NT et autres…)

    Des problèmes de crash, de fuites mémoires, de performances, ou tout autres bogues insaisissables sur votre site Web ? Cette session est faite pour vous. En direct du centre d'escalade Européen, venez rencontrer Hervé Chapalain, qui nous propose de voir les outils et méthodologie lorsque nous rencontrons ce type de situation. De l'utilisation des symboles, des dumps et autre bonne pratiques, Hervé se propose de vous montrer le « Microsoft Windows Performance Toolkit », ainsi que quelques trucs et astuces méconnus de Windows Vista et Windows 2008.

    Pour vous mettre en bouche, la session de l’an passée Déboguer avec Visual Studio 2008.

     

    L’équipe de Support Windows Core

  • Fix it for me

    image

    Avez-vous déjà rencontré un article de base de connaissances Microsoft ou vous êtes vous déjà vu présenter une solution Windows Error Reporting (WER) et demandé pourquoi Microsoft ne pouvait pas corriger cela pour vous ?

    Aujourd'hui les articles KB et les solutions WER vous fournissent les étapes qui permettent de résoudre votre problème. Dans l’avenir nous espérons automatiser le plus de solutions et mettre en place un mécanisme qui permettra de résoudre les problèmes que vous avez avec nos produits plus rapidement et plus facilement en exécutant pour vous les actions documentées.

    C’est l’objectif de l’initiative Fix it qui est déjà implémentée dans deux articles techniques :

     

    Autre nouveauté (qui date un peu tout de même !), la possibilité de télécharger les correctifs n’étant pas disponibles sur Microsoft Updates et corrigeant des problématiques très spécifiques grâce au programme Hotfix Online Submission.

    Pour ce type de correctif, vous devriez voir ceci en haut des fiches techniques un lien symbolisé par l’image ci-dessous :

    Hotfix Online Submission

    En cliquant sur ce lien, vous serez à même de sélectionner la version qui convient à votre environnement (x86 ou x64) et le télécharger.

    Ce projet vise à rendre plus fluide la délivrance des correctifs à nos clients alors que jusqu'à présent, il fallait passer un appel au support pour ouvrir un dossier (non décompté dans les contrats de support), être contacté par un ingénieur support qui identifiait la plateforme cible, la langue, etc... pour ensuite recevoir le correctif.

    C’est plus simple non ?

     

    Guillaume

    Windows Core Support Escalation Engineer