<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Supporto Tecnico Enterprise : Mattia Tocco</title><link>http://blogs.technet.com/itasupport/archive/tags/Mattia+Tocco/default.aspx</link><description>Tags: Mattia Tocco</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Windows Update - Tipologie di aggiornamenti: QFE/LDR e GDR</title><link>http://blogs.technet.com/itasupport/archive/2009/09/14/windows-update-tipologie-di-aggiornamenti-qfe-ldr-e-gdr.aspx</link><pubDate>Mon, 14 Sep 2009 02:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3278918</guid><dc:creator>itentblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/itasupport/comments/3278918.aspx</comments><wfw:commentRss>http://blogs.technet.com/itasupport/commentrss.aspx?PostID=3278918</wfw:commentRss><description>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Spesso quando,&amp;#160; prima dell'installazione di un pacchetto di aggiornamento, ci si sofferma a leggere l'elenco dei file che verranno aggiornati per la propria versione di sistema operativo, ci si trova davanti ad un elenco di questo tipo:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/WindowsUpdateTipologiediaggiornamentiQFE_A21F/clip_image001%5B4%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="clip_image001[4]" border="0" alt="clip_image001[4]" src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/WindowsUpdateTipologiediaggiornamentiQFE_A21F/clip_image001%5B4%5D_thumb.jpg" width="592" height="325" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Come è possibile notare dalla figura, per ciascun file che è sostituito esiste sia una versione GDR, che una versione QFE identificabili dalla colonna “Service branch”.&lt;/p&gt;  &lt;p&gt;Questo è dovuto al fatto che esistono due differenti tipologie di aggiornamenti, tipicamente definite come branch dagli sviluppatori Microsoft, che sono le General Distribution (GDR) e le Quick Fix Engineering (QFE).&lt;/p&gt;  &lt;p&gt;GDR (General Distribution) - Un binario identificato come GDR, contiene solo gli aggiornamenti di sicurezza che sono stati eseguiti sul file, includendo i cambiamenti necessari per l'update in rilascio e quelli relativi alla precedenti security hotfix che aggiornavano lo stesso file. Questo tipo di aggiornamenti vengono rilasciati attraverso Windows Update.&lt;/p&gt;  &lt;p&gt;QFE (Quick Fix Engineering) - Un binario identificato come QFE contiene sia gli aggiornamenti di sicurezza e sia gli aggiornamenti funzionali, includendo tutti i cambiamenti per l'update in rilascio e tutti quelli relativi alle precedenti security hotfix e bug hotfix. Con Windows Vista e Windows Server 2008, le QFE sono state rinominate in LDR (Limited Distribution Release).&lt;/p&gt;  &lt;p&gt;Per chiarire ulteriormente la differenza, possiamo fare riferimento al seguente schema:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/WindowsUpdateTipologiediaggiornamentiQFE_A21F/clip_image003%5B4%5D.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="clip_image003[4]" border="0" alt="clip_image003[4]" src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/WindowsUpdateTipologiediaggiornamentiQFE_A21F/clip_image003%5B4%5D_thumb.gif" width="863" height="171" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Se, dunque, per un ipotetico binario pippo.sys abbiamo installato la versione GDR – Security Hotfix #3, le correzioni introdotte con l’Hotfix #2 non saranno presenti.&lt;/p&gt;  &lt;p&gt;Alla luce di quanto appena detto, la seguente domanda sarebbe più che lecita: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;i&gt;“ho trovato l’articolo &lt;/i&gt;&lt;i&gt;KB XYZ (QFE – Hotfix #2)&lt;/i&gt;&lt;i&gt; che rispecchia esattamente il problema che io sto riscontrando, ma il numero di build indicato per I file che l’update andrà ad installare è più vecchio di quello attualmente installato sulla mia macchina attraverso l’hotfix relativa all’articolo &lt;/i&gt;&lt;i&gt;KB ABC (GDR – Security Hotfix #3)&lt;/i&gt;&lt;i&gt;. Come mai il mio problema risulta ancora presente anche dopo l’installazione della &lt;/i&gt;&lt;i&gt;KB ABC&lt;/i&gt;&lt;i&gt;?”&lt;/i&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Il problema è ancora presente perché il security update (GDR) introdotto attraverso l’articolo KB ABC, sebbene più recente in termini di build, non include la correzione rilasciata con l’articolo KB XYZ che appartiene alla branch delle QFE.&lt;/p&gt;  &lt;h6&gt;&lt;u&gt;&lt;/u&gt;&lt;/h6&gt;  &lt;h3&gt;Come identificare la versione di un binario installato&lt;/h3&gt;  &lt;h6&gt;&lt;u&gt;     &lt;br /&gt;&lt;/u&gt;&lt;/h6&gt;  &lt;h4&gt;Windows XP o Windows Server 2003&lt;/h4&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Supponiamo di voler identificare a quale branch appartiene il nostro solito file pippo.sys, possiamo seguire la seguente procedura:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Fare clic sul pulsante &lt;b&gt;Start&lt;/b&gt;, scegliere &lt;b&gt;Search.&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;Nella casella &lt;b&gt;Nome del file o parte del nome&lt;/b&gt; digitare il nome del file (pippo.sys nel nostro esempio), quindi scegliere &lt;b&gt;Search&lt;/b&gt;.&lt;/li&gt;    &lt;li&gt;Nel riquadro dei risultati della ricerca, fare clic con il pulsante destro del mouse sul file, quindi scegliere &lt;b&gt;Properties&lt;/b&gt;.&lt;/li&gt;    &lt;li&gt;Nella scheda &lt;b&gt;Version&lt;/b&gt;, fare clic su &lt;b&gt;File Version&lt;/b&gt; nell'area &lt;b&gt;Other version information&lt;/b&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Otterremo una finestra di questo tipo:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/WindowsUpdateTipologiediaggiornamentiQFE_A21F/clip_image004%5B4%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="clip_image004[4]" border="0" alt="clip_image004[4]" src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/WindowsUpdateTipologiediaggiornamentiQFE_A21F/clip_image004%5B4%5D_thumb.jpg" width="328" height="446" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Dalle seguenti due tabelle possiamo identificare a quale branch appartiene il binario e quale sarà la versione installata in automatico da Windows Update&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Windows Server 2003&lt;/b&gt;    &lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;&lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;   &lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td width="245"&gt;           &lt;p align="center"&gt;&lt;b&gt;Version&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td width="992"&gt;           &lt;p align="center"&gt;&lt;b&gt;Description&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="245"&gt;           &lt;p&gt;srv03_rtm.mmmmmm-nnnn&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="992"&gt;           &lt;p&gt;Questo formato indica che il file proviene dalla versione originale del prodotto e che non è stato aggiornato da un aggiornamento della protezione, un aggiornamento critico, un aggiornamento, un aggiornamento cumulativo, un driver, un feature pack o un hotfix. Gli aggiornamenti della protezione, gli aggiornamenti critici, gli aggiornamenti, gli aggiornamenti cumulativi, i driver e i feature pack sostituiranno il file con una versione GDR.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="245"&gt;           &lt;p&gt;srv03_spx_gdr.mmmmmm-nnnn&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="992"&gt;           &lt;p&gt;Questo formato indica che il file proviene da un aggiornamento della protezione, un aggiornamento critico, un aggiornamento, un aggiornamento cumulativo, un driver o un feature pack e che non è stato aggiornato da un hotfix. Si tratta della build basata su SP&lt;i&gt;x&lt;/i&gt;. Gli aggiornamenti della protezione, gli aggiornamenti critici, gli aggiornamenti, gli aggiornamenti cumulativi, i driver e i feature pack sostituiranno il file con una versione GDR.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="245"&gt;           &lt;p&gt;srv03_spx_rtm.mmmmmm-nnnn&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="992"&gt;           &lt;p&gt;Questo formato indica che il file proviene da SP&lt;i&gt;x&lt;/i&gt; e non è stato aggiornato da un aggiornamento della protezione, un aggiornamento critico, un aggiornamento, un aggiornamento cumulativo, un driver, un feature pack o un hotfix. Gli aggiornamenti della protezione, gli aggiornamenti critici, gli aggiornamenti, gli aggiornamenti cumulativi, i driver e i feature pack sostituiranno il file con una versione GDR.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="245"&gt;           &lt;p&gt;srv03_spx_qfe.mmmmmm-nnnn&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="992"&gt;           &lt;p&gt;Questo formato indica che il file proviene da un hotfix. Si tratta della build basata su SP&lt;i&gt;x&lt;/i&gt;. Gli aggiornamenti della protezione, gli aggiornamenti critici, gli aggiornamenti, gli aggiornamenti cumulativi, i driver e i feature pack sostituiranno il file con una versione hotfix che include anche la correzione GDR.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;   &lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;&lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Windows XP&lt;/b&gt;    &lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;&lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;   &lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td width="245"&gt;           &lt;p align="center"&gt;&lt;b&gt;Version&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td width="992"&gt;           &lt;p align="center"&gt;&lt;b&gt;Description&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="245"&gt;           &lt;p&gt;xpclient.mmmmmm-nnnn&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="992"&gt;           &lt;p&gt;Questo formato indica che il file proviene dalla versione originale del prodotto e che non è stato aggiornato da un aggiornamento della protezione, un aggiornamento critico, un aggiornamento, un aggiornamento cumulativo, un driver, un feature pack o un hotfix. Gli aggiornamenti della protezione, gli aggiornamenti critici, gli aggiornamenti, gli aggiornamenti cumulativi, i driver e i feature pack sostituiranno il file con una versione GDR.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="245"&gt;           &lt;p&gt;xpsp_spx_gdr.mmmmmm-nnnn&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="992"&gt;           &lt;p&gt;Questo formato indica che il file proviene da un aggiornamento della protezione, un aggiornamento critico, un aggiornamento, un aggiornamento cumulativo, un driver o un feature pack e che non è stato aggiornato da un hotfix. Gli aggiornamenti della protezione, gli aggiornamenti critici, gli aggiornamenti, gli aggiornamenti cumulativi, i driver e i feature pack sostituiranno il file con una versione GDR.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="245"&gt;           &lt;p&gt;xpspx.mmmmmm-nnnn&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="992"&gt;           &lt;p&gt;Questo formato indica che il file proviene da un hotfix. Gli aggiornamenti della protezione, gli aggiornamenti critici, gli aggiornamenti, gli aggiornamenti cumulativi, i driver e i feature pack sostituiranno il file con una versione hotfix che include anche la correzione GDR.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="245"&gt;           &lt;p&gt;xpspxrtm.mmmmmm-nnnn&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="992"&gt;           &lt;p&gt;Questo formato indica che il file proviene da SPx e non è stato aggiornato da un aggiornamento della protezione, un aggiornamento critico, un aggiornamento, un aggiornamento cumulativo, un driver, un feature pack o un hotfix. Gli aggiornamenti della protezione, gli aggiornamenti critici, gli aggiornamenti, gli aggiornamenti cumulativi, i driver e i feature pack sostituiranno il file con una versione GDR.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="245"&gt;           &lt;p&gt;xpclnt_qfe.mmmmmm-nnnn&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="992"&gt;           &lt;p&gt;Questo formato indica che il file proviene da un hotfix. Gli aggiornamenti della protezione, gli aggiornamenti critici, gli aggiornamenti, gli aggiornamenti cumulativi, i driver e i feature pack sostituiranno il file con una versione hotfix che include anche la correzione GDR.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="245"&gt;           &lt;p&gt;xpsp.mmmmmm-nnnn&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="992"&gt;           &lt;p&gt;Questo formato indica che il file proviene da un hotfix pre-SP3. Per poter installare questo file è necessario disporre del Service Pack 2. Gli aggiornamenti della protezione, gli aggiornamenti critici, gli aggiornamenti, gli aggiornamenti cumulativi, i driver e i feature pack sostituiranno il file con una versione hotfix che include anche la correzione GDR.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;   &lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;&lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;Nell’esempio riportato sopra, la versione è: &lt;b&gt;srv01_sp2_rtm-070216-1710&lt;/b&gt; ovvero il file è stato installato con il service pack 2. Un eventuale aggiornamento sostituirà il binario con la relativa versione GDR.&lt;/p&gt;  &lt;h4&gt;Windows Vista o Windows Server 2008&lt;/h4&gt;  &lt;p&gt;Analogamente a quanto visto in precedenza, supponiamo di voler determinare la versione del driver Win32k.sys:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Fare clic sul pulsante &lt;b&gt;Start&lt;/b&gt; e dal &lt;b&gt;Search &lt;/b&gt;immettere il nome del file (Win32k.sys nel nostro caso)&lt;/li&gt;    &lt;li&gt;Nel riquadro dei risultati della ricerca, fare clic con il pulsante destro del mouse sul file, quindi scegliere &lt;b&gt;Properties&lt;/b&gt;.&lt;/li&gt;    &lt;li&gt;Identificare la voce &lt;b&gt;File&lt;/b&gt; &lt;b&gt;Version&lt;/b&gt;, nella scheda &lt;b&gt;Details&lt;/b&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Otterremo un risultato di questo tipo:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/WindowsUpdateTipologiediaggiornamentiQFE_A21F/clip_image005%5B4%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="clip_image005[4]" border="0" alt="clip_image005[4]" src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/WindowsUpdateTipologiediaggiornamentiQFE_A21F/clip_image005%5B4%5D_thumb.jpg" width="327" height="446" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Per identificare la versione, possiamo fare riferimento alla seguente tabella:   &lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;&lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p align="center"&gt;   &lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td width="132"&gt;           &lt;p&gt;&lt;b&gt;Version&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td width="274"&gt;           &lt;p&gt;&lt;b&gt;Product&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="66"&gt;           &lt;p&gt;&lt;b&gt;Level&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="104"&gt;           &lt;p&gt;&lt;b&gt;Service Branch&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td width="132"&gt;           &lt;p&gt;6.0.600 &lt;b&gt;0 &lt;/b&gt;. &lt;b&gt;16 &lt;/b&gt;&lt;i&gt;xxx &lt;/i&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td width="274"&gt;           &lt;p&gt;Windows Vista&lt;/p&gt;         &lt;/td&gt;          &lt;td width="66"&gt;           &lt;p&gt;RTM&lt;/p&gt;         &lt;/td&gt;          &lt;td width="104"&gt;           &lt;p&gt;GDR&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td width="132"&gt;           &lt;p&gt;6.0.600 &lt;b&gt;0 &lt;/b&gt;. &lt;b&gt;20 &lt;/b&gt;&lt;i&gt;xxx &lt;/i&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td width="274"&gt;           &lt;p&gt;Windows Vista &lt;/p&gt;         &lt;/td&gt;          &lt;td width="66"&gt;           &lt;p&gt;RTM&lt;/p&gt;         &lt;/td&gt;          &lt;td width="104"&gt;           &lt;p&gt;LDR&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td width="132"&gt;           &lt;p&gt;6.0.600 &lt;b&gt;1 &lt;/b&gt;. &lt;b&gt;18 &lt;/b&gt;&lt;i&gt;xxx &lt;/i&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td width="274"&gt;           &lt;p&gt;Windows Vista and Windows Server 2008 &lt;/p&gt;         &lt;/td&gt;          &lt;td width="66"&gt;           &lt;p&gt;SP1&lt;/p&gt;         &lt;/td&gt;          &lt;td width="104"&gt;           &lt;p&gt;GDR&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td width="132"&gt;           &lt;p&gt;6.0.600 &lt;b&gt;1 &lt;/b&gt;. &lt;b&gt;22 &lt;/b&gt;&lt;i&gt;xxx &lt;/i&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td width="274"&gt;           &lt;p&gt;Windows Vista and Windows Server 2008 &lt;/p&gt;         &lt;/td&gt;          &lt;td width="66"&gt;           &lt;p&gt;SP1&lt;/p&gt;         &lt;/td&gt;          &lt;td width="104"&gt;           &lt;p&gt;LDR&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td width="132"&gt;           &lt;p&gt;6.0.600 &lt;b&gt;2 &lt;/b&gt;. &lt;b&gt;18 &lt;/b&gt;&lt;i&gt;xxx &lt;/i&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td width="274"&gt;           &lt;p&gt;Windows Vista and Windows Server 2008 &lt;/p&gt;         &lt;/td&gt;          &lt;td width="66"&gt;           &lt;p&gt;SP2&lt;/p&gt;         &lt;/td&gt;          &lt;td width="104"&gt;           &lt;p&gt;GDR&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td width="132"&gt;           &lt;p&gt;6.0.600 &lt;b&gt;2 &lt;/b&gt;. &lt;b&gt;22 &lt;/b&gt;&lt;i&gt;xxx &lt;/i&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td width="274"&gt;           &lt;p&gt;Windows Vista and Windows Server 2008 &lt;/p&gt;         &lt;/td&gt;          &lt;td width="66"&gt;           &lt;p&gt;SP2&lt;/p&gt;         &lt;/td&gt;          &lt;td width="104"&gt;           &lt;p&gt;LDR&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;   &lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;&lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;Nel nostro esempio la versione è 6.0.6000.22416. Questo è dunque un file di Windows Vista ed appartiene alla branch GDR.&lt;/p&gt; &lt;u&gt;&lt;/u&gt;  &lt;h3&gt;Come forzare l'installazione di una versione QFE/LDR&lt;/h3&gt;  &lt;h4&gt;Windows XP o Windows Server 2003&lt;/h4&gt;  &lt;p&gt;Attraverso lo switch &lt;b&gt;/B&lt;/b&gt; possiamo specificare la branch da cui l’update verrà installato, che sostituisce la scelta predefinita che sarebbe stata effettuata dall’update.exe    &lt;br /&gt;Questo significa che se di default il programma di update installerebbe il binario dal branch GDR, noi possiamo forzare l’installazione della relativa QFE.    &lt;br /&gt;Esempio, per una hotfix relativa al service pack 2 possiamo digitare:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;WindowsServer2003.WindowsXP-KB999999-x64-ENU.exe /b:SP2QFE&lt;/b&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Questo farà in modo che venga installata la versione QFE dell’hotfix specificata.   &lt;br /&gt;Lo switch /B non può essere utilizzato per installare la versione GDR di un binario che appartiene già al ramo QFE.    &lt;br /&gt;L’unico modo per tornare alla branch GDR, partendo da una QFE, è quello di rimuovere tutti gli update QFE o installare l’ultimo service pack disponibile.&lt;/p&gt;  &lt;h4&gt;Windows Vista o Windows Server 2008&lt;/h4&gt;  &lt;p&gt;Possiamo seguire I seguenti passi per forzare l’installazione di una LDR in Windows Vista e Windows Server 2008:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;b&gt;C:\&amp;gt; Expand -f:* &lt;i&gt;&amp;lt;path del file .msu relativo all’update&amp;gt; &amp;lt;folder che conterrà l’espansione del file msu&amp;gt;&lt;/i&gt;&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;&lt;b&gt;C:\&amp;gt; Expand -f:* &lt;i&gt;&amp;lt;path del file KB#.cab contenuto nella cartella di espansione del file msu&amp;gt; &amp;lt;folder che conterrà l’espansione del cab&amp;gt;&lt;/i&gt;&lt;/b&gt;&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;C:\&amp;gt; pkgmgr /ip /m:&lt;i&gt;&amp;lt;folder che conterrà l’espansione del cab&amp;gt;&lt;/i&gt;&lt;/b&gt; &lt;b&gt;\update-bf.mum&lt;/b&gt;&lt;/li&gt; &lt;/ol&gt; &lt;u&gt;&lt;/u&gt;  &lt;h3&gt;Riferimenti utili&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Branching out       &lt;br /&gt;&lt;/strong&gt;&lt;b&gt;&lt;a href="http://blogs.technet.com/mrsnrub/archive/2009/05/18/branching-out.aspx"&gt;http://blogs.technet.com/mrsnrub/archive/2009/05/18/branching-out.aspx&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;What is the difference between general distribution and limited distribution releases?&lt;/b&gt;&lt;a href="http://blogs.msdn.com/windowsvistanow/archive/2008/03/11/what-is-the-difference-between-general-distribution-and-limited-distribution-releases.aspx"&gt;       &lt;br /&gt;http://blogs.msdn.com/windowsvistanow/archive/2008/03/11/what-is-the-difference-between-general-distribution-and-limited-distribution-releases.aspx&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Description of the contents of Windows XP Service Pack 2 and Windows Server 2003 software update packages       &lt;br /&gt;&lt;/b&gt;&lt;a href="http://support.microsoft.com/kb/824994"&gt;http://support.microsoft.com/kb/824994&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/itasupport/pages/mattia-tocco.aspx"&gt;Mattia Tocco&lt;/a&gt;    &lt;br /&gt;Senior Support Engineer     &lt;br /&gt;Microsoft Enterprise Platform Support&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3278918" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/itasupport/archive/tags/Windows+Team/default.aspx">Windows Team</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Mattia+Tocco/default.aspx">Mattia Tocco</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Windows+Update/default.aspx">Windows Update</category></item><item><title>DPM 2007 – Script per impostare una tape come free</title><link>http://blogs.technet.com/itasupport/archive/2009/07/13/dpm-2007-script-per-impostare-una-tape-come-free.aspx</link><pubDate>Mon, 13 Jul 2009 02:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3256145</guid><dc:creator>itentblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/itasupport/comments/3256145.aspx</comments><wfw:commentRss>http://blogs.technet.com/itasupport/commentrss.aspx?PostID=3256145</wfw:commentRss><description>&lt;p&gt;L'obiettivo di questo articolo è quello di fornire uno script, per marcare una tape come free, prima che la relativa data di retention sia trascorsa.&lt;/p&gt;  &lt;p&gt;DPM non consente, infatti, di effettuare questa operazione da interfaccia grafica. Tuttavia, potrebbe essere necessario in particolari scenari, esempio durante una fase di test, recuperare un tape marcandolo come free.&lt;/p&gt;  &lt;p&gt;A tal fine, prendiamo in considerazione il seguente script che andrà salvato con estensione &lt;strong&gt;.ps1&lt;/strong&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font size="2" face="Courier New"&gt;----------------------------- Start of Script --------------------------------&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Courier New"&gt;param ([string] $DPMServerName, [string] $LibraryName, [string[]] $TapeLocationList)&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Courier New"&gt;if((&amp;quot;-?&amp;quot;,&amp;quot;-help&amp;quot;) -contains $args[0])        &lt;br /&gt;{         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Write-Host &amp;quot;Usage: ForceFree-Tape.ps1 [[-DPMServerName] &amp;lt;Name of the DPM server&amp;gt;] [-LibraryName] &amp;lt;Name of the library&amp;gt; [-TapeLocationList] &amp;lt;Array of tape locations&amp;gt;&amp;quot;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Write-Host &amp;quot;Example: Force-FreeTape.ps1 -LibraryName &amp;quot;My library&amp;quot; -TapeLocationList Slot-1, Slot-7&amp;quot;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; exit 0         &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Courier New"&gt;if (!$DPMServerName)        &lt;br /&gt;{         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $DPMServerName = Read-Host &amp;quot;DPM server name: &amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; if (!$DPMServerName)        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Write-Error &amp;quot;Dpm server name not specified.&amp;quot;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; exit 1         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }         &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Courier New"&gt;if (!$LibraryName)        &lt;br /&gt;{         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $LibraryName = Read-Host &amp;quot;Library name: &amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; if (!$LibraryName)        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Write-Error &amp;quot;Library name not specified.&amp;quot;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; exit 1         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }         &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Courier New"&gt;if (!$TapeLocationList)        &lt;br /&gt;{         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $TapeLocationList = Read-Host &amp;quot;Tape location: &amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; if (!$TapeLocationList)        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Write-Error &amp;quot;Tape location not specified.&amp;quot;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; exit 1         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }         &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Courier New"&gt;if (!(Connect-DPMServer $DPMServerName))        &lt;br /&gt;{         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Write-Error &amp;quot;Failed to connect To DPM server $DPMServerName&amp;quot;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; exit 1         &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Courier New"&gt;$library = Get-DPMLibrary $DPMServerName | where {$_.UserFriendlyName -eq $LibraryName}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Courier New"&gt;if (!$library)        &lt;br /&gt;{         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Write-Error &amp;quot;Failed to find library with user friendly name $LibraryName&amp;quot;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; exit 1         &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Courier New"&gt;foreach ($media in @(Get-Tape -DPMLibrary $library))        &lt;br /&gt;{         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; if ($TapeLocationList -contains $media.Location)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if ($media -is [Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.LibraryManagement.ArchiveMedia])&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; foreach ($rp in @(Get-RecoveryPoint -Tape $media))         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Get-RecoveryPoint -Datasource $rp.Datasource | Out-Null&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Write-Verbose &amp;quot;Removing recovery point created at $($rp.RepresentedPointInTime) for tape in $($media.Location).&amp;quot;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Remove-RecoveryPoint -RecoveryPoint $rp -ForceDeletion -Confirm:$false         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Write-Verbose &amp;quot;Setting tape in $($media.Location) as free.&amp;quot;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Set-Tape -Tape $media -Free         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Write-Error &amp;quot;The tape in $($media.Location) is a cleaner tape.&amp;quot;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }         &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2" face="Courier New"&gt;----------------------------- End of Script --------------------------------&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/itasupport/pages/mattia-tocco.aspx"&gt;Mattia Tocco&lt;/a&gt;    &lt;br /&gt;Senior Support Engineer     &lt;br /&gt;Microsoft Enterprise Platform Support&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3256145" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/itasupport/archive/tags/Windows+Team/default.aspx">Windows Team</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Mattia+Tocco/default.aspx">Mattia Tocco</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Data+Protection+Manager+2007/default.aspx">Data Protection Manager 2007</category></item><item><title>DPM 2007 - Drive visualizzati come Standalone drive</title><link>http://blogs.technet.com/itasupport/archive/2009/07/06/dpm-2007-drive-visualizzati-come-standalone-drive.aspx</link><pubDate>Mon, 06 Jul 2009 02:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3256140</guid><dc:creator>itentblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/itasupport/comments/3256140.aspx</comments><wfw:commentRss>http://blogs.technet.com/itasupport/commentrss.aspx?PostID=3256140</wfw:commentRss><description>&lt;p&gt;Lo scopo di questo post è quello di fornire le informazioni per risolvere una potenziale problematica relativa ai drive di una library esposti da Data Protection Manager 2007.&lt;/p&gt;  &lt;p&gt;Potrebbe capitare che, in seguito all'installazione di una library sul nostro server DPM 2007, i relativi drive siano visualizzati come Standalone Drives:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/DataProtectionManager2007Drivevisualizza_7E50/clip_image002_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/DataProtectionManager2007Drivevisualizza_7E50/clip_image002_thumb.jpg" width="583" height="435" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;La prima cosa che dobbiamo verificare è il modo in cui sono visualizzati i drive e la library in Device manager:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/DataProtectionManager2007Drivevisualizza_7E50/clip_image003_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="clip_image003" border="0" alt="clip_image003" src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/DataProtectionManager2007Drivevisualizza_7E50/clip_image003_thumb.jpg" width="570" height="404" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Questo è un tipico caso in cui i driver della library non sono installati correttamente e dunque la library è visualizzata come &amp;quot;Unknown Medium Changer&amp;quot; e potenzialmente anche i drive non sono riconosciuti correttamente.&lt;/p&gt;  &lt;p&gt;Occorrerà dunque richiedere al vendor i driver corretti,&amp;#160; portandosi in una situazione coerente come quella riportata nella seguente figura:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/DataProtectionManager2007Drivevisualizza_7E50/clip_image004_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/DataProtectionManager2007Drivevisualizza_7E50/clip_image004_thumb.jpg" width="541" height="404" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Se anche dopo aver installato l'hardware in maniera corretta ed aver effettuato un rescan dalla console DPM, o se questo fosse stato già installato correttamente in precedenza, si continuano a visualizzare i drive come standalone, verificare se la library che si sta utilizzando è tra quelle certificate per DPM.   &lt;br /&gt; A tal fine sarà possibile utilizzare il seguente link:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;System Center Data Protection Manager 2007 Tested Hardware       &lt;br /&gt;&lt;/b&gt;&lt;a href="http://technet.microsoft.com/it-it/dpm/cc678583(en-us).aspx"&gt;http://technet.microsoft.com/it-it/dpm/cc678583(en-us).aspx&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Se il problema ancora persiste, una volta accertato che la nostra library è tra quelle testate per Data Protection Manager 2007, possiamo effettuare un remapping dei drive.&lt;/p&gt;  &lt;p&gt;Per eseguire questa procedura, accertarsi che:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Il servizio DPMLA dovrà essere arrestato&lt;/li&gt;    &lt;li&gt;Occorrerà rimuovere tutte le tape dai vari drive&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Eseguire i seguenti task:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Effettuare un backup del file &lt;i&gt;&amp;lt;DPM Installation path&amp;gt;&lt;/i&gt;\Config\&lt;b&gt;DPMLA.xml &lt;/b&gt;ed eliminarlo&lt;/li&gt;    &lt;li&gt;Rigenerarlo attraverso il tool:&amp;#160; &lt;i&gt;&amp;lt;DPM Installation path&amp;gt;&lt;/i&gt;\Bin\&lt;b&gt;DriveMappingTool.exe&lt;/b&gt;&lt;/li&gt;    &lt;li&gt;Aprire la console DPM ed eseguire un rescan&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/DataProtectionManager2007Drivevisualizza_7E50/clip_image006_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/DataProtectionManager2007Drivevisualizza_7E50/clip_image006_thumb.jpg" width="845" height="305" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;L'esecuzione del tool fallirà se eseguito per un drive standalone, restituendo il seguente errore:&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/DataProtectionManager2007Drivevisualizza_7E50/clip_image008_2.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/DataProtectionManager2007Drivevisualizza_7E50/clip_image008_thumb.gif" width="857" height="162" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;La procedura sopra esposta è documentata al seguente link:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;Remapping Tape Drives       &lt;br /&gt;&lt;/b&gt;&lt;u&gt;&lt;a href="http://technet.microsoft.com/en-us/library/bb795782.aspx"&gt;http://technet.microsoft.com/en-us/library/bb795782.aspx&lt;/a&gt;&lt;/u&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/itasupport/pages/mattia-tocco.aspx"&gt;Mattia Tocco&lt;/a&gt;    &lt;br /&gt;Senior Support Engineer     &lt;br /&gt;Microsoft Enterprise Platform Support&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3256140" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/itasupport/archive/tags/Windows+Team/default.aspx">Windows Team</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Mattia+Tocco/default.aspx">Mattia Tocco</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Data+Protection+Manager+2007/default.aspx">Data Protection Manager 2007</category></item><item><title>Memoria Paged e NonPaged Pool – Come risolvere un memory leak</title><link>http://blogs.technet.com/itasupport/archive/2009/05/18/memoria-paged-e-nonpaged-pool-come-risolvere-un-memory-leak.aspx</link><pubDate>Mon, 18 May 2009 02:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3239803</guid><dc:creator>itentblg</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.technet.com/itasupport/comments/3239803.aspx</comments><wfw:commentRss>http://blogs.technet.com/itasupport/commentrss.aspx?PostID=3239803</wfw:commentRss><description>&lt;P&gt;In questo post vedremo come risolvere un leak di memoria e identificare il driver responsabile. &lt;BR&gt;Vi consiglio di leggere il post &lt;STRONG&gt;&lt;A href="http://blogs.technet.com/itasupport/archive/2009/05/11/memoria-paged-e-nonpaged-pool-come-identificare-un-memory-leak.aspx" target=_blank mce_href="http://blogs.technet.com/itasupport/archive/2009/05/11/memoria-paged-e-nonpaged-pool-come-identificare-un-memory-leak.aspx"&gt;Memoria Paged e NonPaged Pool – Come identificare un memory leak&lt;/A&gt;&lt;/STRONG&gt; per verificare che effettivamente siamo in presenza di un leak di memoria.&lt;/P&gt;
&lt;H3&gt;Utilizzare il PoolMon&lt;/H3&gt;
&lt;P&gt;L’allocazione di una quantità di byte in una delle memorie Pool utilizza un &lt;STRONG&gt;sistema di tagging&lt;/STRONG&gt;. Un TAG è un identificativo di quattro byte associato ad ogni porzione di memoria Pool allocata.&lt;/P&gt;
&lt;P&gt;Il TAG viene specificato da un driver, durante l’allocazione della memoria, attraverso la routine &lt;A href="http://msdn.microsoft.com/en-us/library/ms796989.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms796989.aspx"&gt;ExAllocatePoolWithTag&lt;/A&gt;. I seguenti tre parametri, devono essere specificati durante la chiamata a questa routine:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;PoolType&lt;/STRONG&gt;: Il tipo di memoria Pool da allocare (Paged o NonPaged) &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;NumberofBytes&lt;/STRONG&gt;: Il numero di byte da allocare con la richiesta &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;TAG&lt;/STRONG&gt;: il Pool TAG, rappresentato attraverso quattro caratteri ASCII &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;L’obiettivo dei Pool TAG è quello di fornire un meccanismo, che attraverso degli identificatore potenzialmente univoci, consenta di stabilire quali driver stanno allocando la memoria. Inoltre, durante la fase di sviluppo di un driver, i TAG sono utili per poter differenziare le diverse tipologie di allocazione, rendendo più selettiva un’eventuale investigazione attraverso il tool &lt;A href="http://support.microsoft.com/kb/244617" mce_href="http://support.microsoft.com/kb/244617"&gt;&lt;STRONG&gt;Driver Verifier&lt;/STRONG&gt;&lt;/A&gt;.&lt;/P&gt;
&lt;H3&gt;Identificare il TAG e byte allocati&lt;/H3&gt;
&lt;P&gt;Per poter verificare quanti byte sono allocati da un determinato TAG occorrerà utilizzare il tool &lt;B&gt;poolmon.exe&lt;/B&gt;, che è possibile recuperare dalla cartella \Support\Tools del CD d’installazione del Sistema Operativo.&lt;/P&gt;
&lt;P&gt;Questo tool consente di ottenere un report di tutti i TAG della Paged e Non Paged Pool con i relativi byte allocati. &lt;BR&gt;In Windows Server 2003 il Pool tagging è già abilitato, mentre in Windows Server 2000 e Windows XP è necessario abilitarlo attraverso il tool Gflags.exe presente sempre nella cartella \Support\Tools del supporto di installazione, o modificando le opportune chiavi di registro.&lt;/P&gt;
&lt;P&gt;Per maggiori informazioni sull'utilizzo di questo tool potete consultare l’articolo &lt;A href="http://support.microsoft.com/kb/177415" target=_blank mce_href="http://support.microsoft.com/kb/177415"&gt;How to use Memory Pool Monitor (Poolmon.exe) to troubleshoot kernel mode memory leaks&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;La seguente immagine illustra un esempio di output relativo al poolmon:&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/image008_2.jpg" mce_href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/image008_2.jpg"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: block; FLOAT: none; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: auto; BORDER-LEFT-WIDTH: 0px; MARGIN-RIGHT: auto" title=image008 border=0 alt=image008 src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/image008_thumb.jpg" width=521 height=392 mce_src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/image008_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P align=center&gt;FIG 1 - Output del tool Poolmon.exe&lt;/P&gt;
&lt;P&gt;I campi fondamentali per la nostra analisi sono evidenziati in rosso:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Tag&lt;/STRONG&gt;&lt;EM&gt;: Rappresenta il TAG che identifica l'allocazione.&lt;/EM&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Type&lt;/STRONG&gt;&lt;EM&gt;: Specifica se la memoria è stata allocata in Paged (Paged) o Nonpaged (Nonp) pool.&lt;/EM&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Bytes&lt;/STRONG&gt;&lt;EM&gt;: Quantità di memoria allocata, in bytes, per il corrispondente TAG&lt;/EM&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Possiamo, dunque, utilizzare i seguenti passi per raccogliere l'output del poolmon in una finestra temporale di nostro interesse:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Copiare il file "&lt;B&gt;PoolMon.exe&lt;/B&gt;" in "C:\PoolMon", inserendo nella stessa cartella il tool &lt;B&gt;sleep.exe&lt;/B&gt; &lt;/LI&gt;
&lt;LI&gt;Aprire una &lt;B&gt;console dei comandi &lt;/B&gt;da "Start" --&amp;gt; "All programs" --&amp;gt; "Accessories" --&amp;gt; "Command Prompt" &lt;/LI&gt;
&lt;LI&gt;Spostare il prompt in &lt;B&gt;C:\PoolMon&lt;/B&gt; &lt;/LI&gt;
&lt;LI&gt;Per avere una lettura dei dati ogni 15 minuti (per 2 giorni circa), digitare il seguente comando: &lt;BR&gt;&lt;FONT face="Courier New"&gt;&lt;STRONG&gt;for /l %i in (1,1,200) do ( poolmon -n log-%i.txt &amp;amp;&amp;amp; sleep 900000 )&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;Nella cartella "&lt;B&gt;C:\PoolMon&lt;/B&gt;" verranno creati i vari file di log. &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Il tool &lt;B&gt;sleep.exe&lt;/B&gt; utilizzato è fornito in allegato al presente post.&lt;/P&gt;
&lt;H3&gt;Determinare la frequenza di campionamento&lt;/H3&gt;
&lt;P&gt;Sleep.exe richiede un parametro che indica il &lt;STRONG&gt;periodo d'attesa in millisecondi&lt;/STRONG&gt; tra due esecuzioni del ciclo for. &lt;BR&gt;Nell’esempio di script riportato sopra, abbiamo il parametro 900’000 che è ottenuto moltiplicando: 15 minuti * 60 secondi * 1000 millisecondi per ottenere una pausa tra una lettura e l’altra di &lt;STRONG&gt;15 minuti&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;Considerando i 200 cicli impostati ogni 15 minuti, abbiamo un &lt;STRONG&gt;campionamento di circa 2 giorni&lt;/STRONG&gt; calcolato da: 15 minuti/campione * 200 campioni = 3000 minuti totali / 60 = 50 ore totali / 24 = 2,08 giorni.&lt;/P&gt;
&lt;P&gt;Possiamo modificare il numero di cicli e la frequenza di campionamento in base alla rapidità del leak che abbiamo identificato.&lt;/P&gt;
&lt;P&gt;Al termine del periodo di monitoring, avremo dunque &lt;STRONG&gt;200 file di testo&lt;/STRONG&gt;, che iniziano con log1.txt fino a&amp;nbsp; log200.txt nel nostro esempio.&lt;/P&gt;
&lt;P&gt;Copiando questi dati in un foglio Excel ed ordinandoli in base al tipo (Nonp o Paged) e in ordine decrescente rispetto ai byte allocati, saremo in grado di determinare la variazione di allocazione dei TAG in funzione del tempo, identificando quali, in particolare, stanno occupando di più.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image006_2.jpg" mce_href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image006_2.jpg"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: block; FLOAT: none; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: auto; BORDER-LEFT-WIDTH: 0px; MARGIN-RIGHT: auto" title=clip_image006 border=0 alt=clip_image006 src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image006_thumb.jpg" width=534 height=246 mce_src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image006_thumb.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P align=center&gt;FIG 2 - Schermata di Excel per l'ordinamento dei TAG.&lt;/P&gt;
&lt;H3&gt;Analizzare i log&lt;/H3&gt;
&lt;P&gt;Avremo risultati di questo tipo:&lt;/P&gt;
&lt;H4&gt;NonPaged Pool&lt;/H4&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=2 width=401&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width=133 align=middle&gt;
&lt;P&gt;NonPaged - Log 1&lt;/P&gt;&lt;/TD&gt;
&lt;TD width=133 align=middle&gt;
&lt;P&gt;NonPaged - Log 10&lt;/P&gt;&lt;/TD&gt;
&lt;TD width=133 align=middle&gt;
&lt;P&gt;NonPaged - Log 20&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=133&gt;&lt;A href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image002_2.jpg" mce_href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image002_2.jpg"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=clip_image002 border=0 alt=clip_image002 src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image002_thumb.jpg" width=249 height=250 mce_src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image002_thumb.jpg"&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=133&gt;&lt;A href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image002%5B5%5D.jpg" mce_href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image002%5B5%5D.jpg"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=clip_image002[5] border=0 alt=clip_image002[5] src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image002%5B5%5D_thumb.jpg" width=255 height=249 mce_src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image002%5B5%5D_thumb.jpg"&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=133&gt;&lt;A href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image002%5B7%5D.jpg" mce_href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image002%5B7%5D.jpg"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=clip_image002[7] border=0 alt=clip_image002[7] src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image002%5B7%5D_thumb.jpg" width=248 height=251 mce_src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image002%5B7%5D_thumb.jpg"&gt;&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;H4&gt;Paged Pool&lt;/H4&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=2 width=401&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width=133 align=middle&gt;
&lt;P&gt;Paged - Log 1&lt;/P&gt;&lt;/TD&gt;
&lt;TD width=133 align=middle&gt;
&lt;P&gt;Paged - Log 10&lt;/P&gt;&lt;/TD&gt;
&lt;TD width=133 align=middle&gt;
&lt;P&gt;Paged - Log 20&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=133&gt;&lt;A href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image002%5B10%5D.jpg" mce_href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image002%5B10%5D.jpg"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=clip_image002[10] border=0 alt=clip_image002[10] src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image002%5B10%5D_thumb.jpg" width=245 height=188 mce_src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image002%5B10%5D_thumb.jpg"&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=133&gt;&lt;A href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image002%5B12%5D.jpg" mce_href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image002%5B12%5D.jpg"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=clip_image002[12] border=0 alt=clip_image002[12] src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image002%5B12%5D_thumb.jpg" width=251 height=190 mce_src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image002%5B12%5D_thumb.jpg"&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=133&gt;&lt;A href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image002%5B14%5D.jpg" mce_href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image002%5B14%5D.jpg"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=clip_image002[14] border=0 alt=clip_image002[14] src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image002%5B14%5D_thumb.jpg" width=241 height=192 mce_src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image002%5B14%5D_thumb.jpg"&gt;&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;TABLE cellSpacing=0 cellPadding=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width=12&gt;&lt;/TD&gt;
&lt;TD width=274&gt;&lt;/TD&gt;
&lt;TD width=17&gt;&lt;/TD&gt;
&lt;TD width=274&gt;&lt;/TD&gt;
&lt;TD width=15&gt;&lt;/TD&gt;
&lt;TD width=274&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;/TD&gt;
&lt;TD width=274&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;/TD&gt;
&lt;TD width=274&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;/TD&gt;
&lt;TD width=274&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;Come possiamo notare è evidente un notevole incremento del TAG &lt;B&gt;Pipo&lt;/B&gt; per la Nonpaged pool. &lt;BR&gt;Analizzando anche i restanti log abbiamo infatti il seguente andamento:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image020_2.jpg" mce_href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image020_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: block; FLOAT: none; MARGIN-LEFT: auto; BORDER-TOP: 0px; MARGIN-RIGHT: auto; BORDER-RIGHT: 0px" title=clip_image020 border=0 alt=clip_image020 src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image020_thumb.jpg" width=521 height=267 mce_src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image020_thumb.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P align=center&gt;FIG 3 - Andamento della Nonpaged pool allocata dal TAG Pipo.&lt;/P&gt;
&lt;P&gt;Come è possibile notare è presente un leak sul TAG Pipo. Ora che abbiamo identificato il TAG che sta alla base del memory leak, come possiamo identificarne il driver corrispondente?&lt;/P&gt;
&lt;H3&gt;Identificare il driver&lt;/H3&gt;
&lt;P&gt;L’elenco di tutti i TAG utilizzati per le allocazioni nella memoria Pool sono disponibili nel file &lt;I&gt;&lt;STRONG&gt;Pooltag.txt&lt;/STRONG&gt; &lt;BR&gt;&lt;/I&gt;Questo file contiene l’identificativo di tutti i componenti Kernel-mode e driver rilasciati con i Sistemi Operativi Windows.&lt;/P&gt;
&lt;P&gt;E’ disponibile per il download e l’installazione all’interno dei &lt;A href="http://www.microsoft.com/whdc/devtools/debugging/default.mspx" target=_blank mce_href="http://www.microsoft.com/whdc/devtools/debugging/default.mspx"&gt;&lt;STRONG&gt;Debugging Tools for Windows&lt;/STRONG&gt;&lt;/A&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx" target=_blank mce_href="http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx"&gt;Debugging Tools for Windows 32-bit Version&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.microsoft.com/whdc/devtools/debugging/install64bit.mspx" target=_blank&gt;Debugging Tools for Windows 64-bit Version&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Un esempio del contenuto del file Pooltag.txt è riportato di seguito:&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P align=left&gt;&lt;FONT face="Courier New"&gt;8042 - i8042prt.sys - PS/2 kb and mouse &lt;BR&gt;AdSv - vmsrvc.sys&amp;nbsp;&amp;nbsp; - Virtual Machines Additions Service &lt;BR&gt;ARPC - atmarpc.sys&amp;nbsp; - ATM ARP Client &lt;BR&gt;ATMU - atmuni.sys&amp;nbsp;&amp;nbsp; - ATM UNI Call Manager &lt;BR&gt;ACPI - acpi.sys&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - ACPI &lt;BR&gt;Afd? - afd.sys&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - AFD objects &lt;BR&gt;AfdA - afd.sys&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Afd EA buffer&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Se il TAG che causa il leak di memoria non è contenuti nell’elenco, vi consiglio di effettuare una ricerca nella nostra &lt;STRONG&gt;Knowledge Base&lt;/STRONG&gt;, in modo da verificare la presenza di eventuali problemi conosciuti e installare la relativa hotfix.&lt;/P&gt;
&lt;P&gt;Se invece, come nel caso del nostro esempio, il TAG non è Microsoft non sarà presente nell'elenco. &lt;BR&gt;In questo caso possiamo utilizzare il comando &lt;B&gt;findstr&lt;/B&gt;, valido per ciascuna versione di Windows, che potrà essere eseguito come indicato di seguito:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Aprire una &lt;B&gt;console dei comandi &lt;/B&gt;da "Start" --&amp;gt; "All programs" --&amp;gt; "Accessories" --&amp;gt; "Command Prompt"&lt;/LI&gt;
&lt;LI&gt;Spostarsi nella cartella&lt;B&gt; %systemroot%\system32\drivers&lt;/B&gt;&lt;/LI&gt;
&lt;LI&gt;Digitare il comando &lt;BR&gt;&lt;FONT face="Courier New"&gt;&lt;STRONG&gt;findstr /m /l &amp;lt;tag&amp;gt; *.sys&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;Verificare l'output restituito dal comando&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;In questo screenshot è evidenziata la ricerca per il TAG Pipo:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image022_2.jpg" mce_href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image022_2.jpg"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: block; FLOAT: none; MARGIN-LEFT: auto; BORDER-TOP: 0px; MARGIN-RIGHT: auto; BORDER-RIGHT: 0px" title=clip_image022 border=0 alt=clip_image022 src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image022_thumb.jpg" width=443 height=79 mce_src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedeNonPagedPoolComerisolvereun_EE09/clip_image022_thumb.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Come possiamo notare è restituito il driver corrispondente al TAG specificato “Pipo”.&lt;/P&gt;
&lt;P&gt;In questo caso occorrerà verificare un'eventuale versione aggiornata del driver Pippo.sys, o eventualmente contattare il fornitore del software segnalando la problematica.&lt;/P&gt;
&lt;H3&gt;Conclusione&lt;/H3&gt;
&lt;P&gt;Alla luce di quanto visto fino ad ora, se stiamo evidenziando un leak di memoria sul nostro sistema potremo identificarne la potenziale causa attraverso i seguenti passi:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Monitorare i byte allocati da ciascun TAG durante una finestra temporale adeguata al nostro leak, attraverso il tool &lt;STRONG&gt;poolmon.exe&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;Evidenziare eventuali &lt;STRONG&gt;allocazioni&lt;/STRONG&gt; che variano proporzionalmente al tempo in &lt;STRONG&gt;costante crescita&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;Stabilire su che &lt;STRONG&gt;tipo di pool&lt;/STRONG&gt; è presente il leak (Paged o Nonpaged)&lt;/LI&gt;
&lt;LI&gt;Stabilire il &lt;STRONG&gt;driver associato &lt;/STRONG&gt;al TAG che sta causando il leak&lt;/LI&gt;
&lt;LI&gt;Ricercare eventuali &lt;STRONG&gt;problemi noti&lt;/STRONG&gt;, o analizzare la problematica con il &lt;STRONG&gt;fornitore &lt;/STRONG&gt;del driver&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/itasupport/pages/mattia-tocco.aspx" mce_href="http://blogs.technet.com/itasupport/pages/mattia-tocco.aspx"&gt;Mattia Tocco&lt;/A&gt; &lt;BR&gt;Senior Support Engineer &lt;BR&gt;Microsoft Enterprise Platform Support&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3239803" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/itasupport/attachment/3239803.ashx" length="16896" type="application/octet-stream" /><category domain="http://blogs.technet.com/itasupport/archive/tags/Windows+Team/default.aspx">Windows Team</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Mattia+Tocco/default.aspx">Mattia Tocco</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.technet.com/itasupport/archive/tags/NT+Kernel+Architecture/default.aspx">NT Kernel Architecture</category></item><item><title>Memoria Paged e NonPaged Pool – Come identificare un memory leak</title><link>http://blogs.technet.com/itasupport/archive/2009/05/11/memoria-paged-e-nonpaged-pool-come-identificare-un-memory-leak.aspx</link><pubDate>Mon, 11 May 2009 02:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3236896</guid><dc:creator>itentblg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/itasupport/comments/3236896.aspx</comments><wfw:commentRss>http://blogs.technet.com/itasupport/commentrss.aspx?PostID=3236896</wfw:commentRss><description>&lt;p&gt;In questo post vedremo come identificare le problematiche legate ad un esaurimento di due specifiche &lt;a href="http://blogs.technet.com/itasupport/archive/2008/12/15/kernel-memory-overview.aspx" target="_blank"&gt;risorse Kernel&lt;/a&gt;: Paged Pool e NonPaged Pool.     &lt;br /&gt;Vi consiglio di leggere il post di &lt;a href="http://blogs.technet.com/itasupport/pages/fabio-lavatelli.aspx" target="_blank"&gt;Fabio Lavatelli&lt;/a&gt; per una visione esaustiva della memoria: &lt;b&gt;&lt;a href="http://blogs.technet.com/itasupport/archive/2008/12/15/kernel-memory-overview.aspx" target="_blank"&gt;Kernel Memory Overview&lt;/a&gt;.&lt;/b&gt;&lt;/p&gt;  &lt;h3&gt;Memoria Paged e NonPaged Pool&lt;/h3&gt;  &lt;p&gt;All’avvio del computer, il &lt;strong&gt;Memory Manager&lt;/strong&gt; crea dinamicamente due memorie pool di dimensione fissa per tutto il periodo in cui il Sistema Operativo rimane attivo: queste due pool sono conosciute come &lt;b&gt;Paged Pool&lt;/b&gt; e &lt;b&gt;NonPaged Pool&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;Le dimensioni di queste pool, determinate all'avvio, dipendono da una &lt;strong&gt;serie di fattori&lt;/strong&gt;: alcuni di questi possono essere modificati attraverso specifiche chiavi di registry, mentre altri dipendono dall’hardware specifico del computer, come la quantità di &lt;strong&gt;memoria fisica&lt;/strong&gt;.&lt;/p&gt;  &lt;div&gt;Entrambe le pool possono raggiungere un &lt;strong&gt;valore massimo teorico&lt;/strong&gt; dipendente dall’architettura del sistema operativo:&lt;/div&gt;  &lt;table border="0" cellspacing="0" cellpadding="0" width="577" align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td width="96"&gt;         &lt;p align="center"&gt;&lt;b&gt;Tipo Pool&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td width="284"&gt;         &lt;p align="center"&gt;&lt;b&gt;Sistemi a 32-Bit (x86)&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td width="195"&gt;         &lt;p align="center"&gt;&lt;b&gt;Sistemi a 64-Bit (x64)&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="97"&gt;         &lt;p align="center"&gt;NonPaged&lt;/p&gt;       &lt;/td&gt;        &lt;td width="284"&gt;         &lt;p align="left"&gt;256 MB (Windows 2000, XP e 2003)            &lt;br /&gt;128 MB (Con opzione /3GB abilitata al boot)&lt;/p&gt;       &lt;/td&gt;        &lt;td width="195"&gt;         &lt;p align="center"&gt;128 GB&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td width="98"&gt;         &lt;p align="center"&gt;Paged&lt;/p&gt;       &lt;/td&gt;        &lt;td width="284"&gt;         &lt;p align="left"&gt;491,875 MB (Windows 2000 e Windows XP) 650,000 MB (Windows Server 2003)&lt;/p&gt;       &lt;/td&gt;        &lt;td width="195"&gt;         &lt;p align="center"&gt;128GB&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Nel caso sia abilitata l’&lt;strong&gt;opzione /3GB&lt;/strong&gt; nel file boot.ini la dimensione massima teorica della &lt;strong&gt;NonPaged Pool è dimezzata&lt;/strong&gt;. Questo è dovuto alla gestione nel Sistema Operativo della &lt;a href="http://blogs.technet.com/itasupport/archive/2008/12/15/kernel-memory-overview.aspx" target="_blank"&gt;memoria virtuale&lt;/a&gt;: sono dedicati 3 Gigabyte alla parte applicativa e solo 1 Gigabyte alla parte kernel.&lt;/p&gt;  &lt;p&gt;I Sistemi Operativi a 64 bit (x64) presentano limiti di memoria virtuale superiori di diversi ordini di grandezza rispetto a sistemi a 32 bit (x86), perciò un'eventuale saturazione della memoria disponibile avverrebbe in tempi più elevati.&lt;/p&gt;  &lt;p&gt;La sostanziale differenza tra le due tipologie di pool, come evidenzia il nome, è che la Paged Pool può essere &lt;strong&gt;paginata su disco&lt;/strong&gt;, mentre la NonPaged Pool è sempre &lt;strong&gt;residente in memoria&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;I &lt;strong&gt;driver&lt;/strong&gt; utilizzano la NonPaged Pool per tutte quelle operazioni eseguite ad un &lt;strong&gt;Interrupt Request Level&lt;/strong&gt; (IRQL) troppo elevato per ammettere paginazione.     &lt;br /&gt;L'IRQL definisce la priorità a cui il processore sta operando, maggiori informazioni sono disponibili nel seguente articolo: &lt;a href="http://www.microsoft.com/whdc/driver/kernel/IRQL.mspx" target="_blank"&gt;Scheduling, Thread Context, and IRQL&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Eventi SRV 2019 e 2020&lt;/h3&gt;  &lt;p&gt;Nel caso in cui un driver abbia un funzionamento anomalo, potrebbe allocare memoria Pool senza mai rilasciarla arrivando alla saturazione di tutto lo spazio a disposizione: questo fenomeno è chiamato &lt;strong&gt;memory leak&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;In questo tipo di scenario, generalmente troviamo nel Log degli Eventi di Sistema i seguenti 2 eventi specifici.    &lt;br /&gt;L'&lt;strong&gt;evento 2019&lt;/strong&gt; si riferisce all'esaurimento della &lt;strong&gt;NonPaged pool&lt;/strong&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;Type: Error        &lt;br /&gt;Date: &amp;lt;date&amp;gt;         &lt;br /&gt;Time: &amp;lt;time&amp;gt;         &lt;br /&gt;Event ID: &lt;strong&gt;&lt;font color="#ff0000"&gt;2019&lt;/font&gt;&lt;/strong&gt;         &lt;br /&gt;Source: Srv         &lt;br /&gt;User: N/A         &lt;br /&gt;Computer: &amp;lt;ComputerName&amp;gt;         &lt;br /&gt;Details: The server was unable to allocate from the &lt;font color="#ff0000"&gt;&lt;strong&gt;system&lt;/strong&gt; &lt;strong&gt;NonPaged pool&lt;/strong&gt;&lt;/font&gt; because the pool was empty. &lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Mentre l'&lt;strong&gt;evento 2020&lt;/strong&gt; riguarda l'esaurimento della &lt;strong&gt;Paged Pool&lt;/strong&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;Type: Error        &lt;br /&gt;Date: &amp;lt;date&amp;gt;         &lt;br /&gt;Time: &amp;lt;time&amp;gt;         &lt;br /&gt;Event ID: &lt;strong&gt;&lt;font color="#ff0000"&gt;2020&lt;/font&gt;&lt;/strong&gt;         &lt;br /&gt;Source: Srv         &lt;br /&gt;User: N/A         &lt;br /&gt;Computer: &amp;lt;ComputerName&amp;gt;         &lt;br /&gt;Details: The server was unable to allocate from the &lt;strong&gt;&lt;font color="#ff0000"&gt;system Paged pool&lt;/font&gt;&lt;/strong&gt; because the pool was empty&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;In alcuni scenari specifici di memory leak, gli eventi 2019 e 2020 non sono presenti nel Registro Eventi, ma sono loggati molti errori &lt;strong&gt;333 - &lt;/strong&gt;&lt;strong&gt;Application Popup&lt;/strong&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;Type: Error        &lt;br /&gt;Date: &amp;lt;date&amp;gt;         &lt;br /&gt;Time: &amp;lt;time&amp;gt;         &lt;br /&gt;Event ID: &lt;strong&gt;&lt;font color="#ff0000"&gt;333&lt;/font&gt;&lt;/strong&gt;         &lt;br /&gt;Source: Application Popup         &lt;br /&gt;User: N/A         &lt;br /&gt;Computer: &amp;lt;ComputerName&amp;gt;         &lt;br /&gt;Details: An &lt;strong&gt;&lt;font color="#ff0000"&gt;I/O operation initiated by the Registry failed unrecoverably&lt;/font&gt;&lt;/strong&gt;. The Registry could not read in, or write out, or flush, one of the files that contain the system's image of the Registry&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Maggiori informazioni riguardo questo scenario sono spiegati nel post &lt;a href="http://blogs.technet.com/itasupport/archive/2008/11/17/analizzare-l-evento-application-popup-333.aspx" target="_blank"&gt;Analizzare l’evento “Application Popup 333”&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Analizzare un Memory Leak&lt;/h3&gt;  &lt;p&gt;Il &lt;strong&gt;comportamento&lt;/strong&gt; del Sistema Operativo in presenza di un memory leak è imprevedibile: si possono registrare &lt;strong&gt;hang&lt;/strong&gt;, &lt;strong&gt;crash&lt;/strong&gt; di applicazioni o &lt;strong&gt;BlueScreen&lt;/strong&gt; (bugcheck 0x0000041 MUST_SUCCEED_POOL_EMPTY).&lt;/p&gt;  &lt;div&gt;Il &lt;strong&gt;performance monitor&lt;/strong&gt; permette di verificare lo stato della Memoria Pool con i seguenti &lt;strong&gt;counter&lt;/strong&gt;:&lt;/div&gt;  &lt;div align="center"&gt;   &lt;table border="0" cellspacing="0" cellpadding="0" width="630" align="center"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="bottom" width="209"&gt;           &lt;p align="center"&gt;&lt;b&gt;Counter&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="bottom" width="419"&gt;           &lt;p align="center"&gt;&lt;b&gt;Description&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="bottom" width="209"&gt;           &lt;p align="left"&gt;Memory\Paged Pool Bytes&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="bottom" width="419"&gt;           &lt;p align="left"&gt;Indica il numero di byte allocati nella Paged Pool di sistema&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="209"&gt;           &lt;p align="left"&gt;Memory\Non Paged Pool Bytes&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="419"&gt;           &lt;p align="left"&gt;Indica il numero di byte allocati nella NonPaged Pool di sistema&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;p&gt;Il grafico seguente illustra un andamento tipo di un &lt;strong&gt;memory leak&lt;/strong&gt; relativo alla NonPaged Pool:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedPooleNonPagedPoolComeidentif_84DF/clip_image002_2.gif"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedPooleNonPagedPoolComeidentif_84DF/clip_image002_thumb.gif" width="563" height="394" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt;FIG 1 - Andamento tipico di un memory leak relativo alla NonPaged Pool.&lt;/p&gt;  &lt;p&gt;La NonPaged Pool allocata, indicata in MegaByte, è al di sotto del valore massimo teorico di 256 MB, ma presenta un &lt;strong&gt;andamento crescente&lt;/strong&gt; che indica un tipico caso in cui un driver non stia rilasciando la memoria allocata.&lt;/p&gt;  &lt;p&gt;La &lt;strong&gt;crescita&lt;/strong&gt; può essere variabile in funzione del tempo, e per questo la &lt;strong&gt;finestra temporale&lt;/strong&gt; di monitoring dovrà essere modulata proporzionalmente alla rapidità del leak.&lt;/p&gt;  &lt;p&gt;Il grafico seguente illustra un altro andamento tipo di &lt;strong&gt;saturazione di memoria&lt;/strong&gt; relativo alla NonPaged Pool:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedPooleNonPagedPoolComeidentif_84DF/clip_image002%5B5%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="clip_image002[5]" border="0" alt="clip_image002[5]" src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/MemoriaPagedPooleNonPagedPoolComeidentif_84DF/clip_image002%5B5%5D_thumb.gif" width="564" height="346" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p align="center"&gt;FIG 2 - Andamento variabile relativo alla NonPaged Pool.&lt;/p&gt;  &lt;p&gt;L’andamento non risulta crescente, ma può indicare ugualmente la presenza di problemi dovuti al raggiungimento del limite massimo di memoria Pool disponibile. In questa situazione non abbiamo un vero e proprio memory leak, ma una saturazione della NonPaged Pool che richiede un &lt;strong&gt;tuning manuale &lt;/strong&gt;di specifiche chiavi di &lt;strong&gt;registry&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;I due andamenti riportati valgono per &lt;strong&gt;entrambe le tipologie di memoria Pool&lt;/strong&gt; anche se i limiti più stringenti e che presentano più problemi sono relativi alla memoria NonPaged Pool.&lt;/p&gt;  &lt;p&gt;Nei successivi post vedremo nel dettaglio come approfondire e risolvere:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Problemi di memory leak &lt;/li&gt;    &lt;li&gt;Problemi di saturazione della memoria &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/itasupport/pages/mattia-tocco.aspx"&gt;Mattia Tocco&lt;/a&gt;     &lt;br /&gt;Senior Support Engineer     &lt;br /&gt;Microsoft Enterprise Platform Support&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3236896" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/itasupport/archive/tags/Mattia+Tocco/default.aspx">Mattia Tocco</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.technet.com/itasupport/archive/tags/NT+Kernel+Architecture/default.aspx">NT Kernel Architecture</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Pool+Memory/default.aspx">Pool Memory</category></item><item><title>Analizzare l’evento “Application Popup 333”</title><link>http://blogs.technet.com/itasupport/archive/2008/11/17/analizzare-l-evento-application-popup-333.aspx</link><pubDate>Mon, 17 Nov 2008 03:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3150310</guid><dc:creator>itentblg</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.technet.com/itasupport/comments/3150310.aspx</comments><wfw:commentRss>http://blogs.technet.com/itasupport/commentrss.aspx?PostID=3150310</wfw:commentRss><description>&lt;p&gt;In questo mio primo post vorrei parlarvi di un evento, che sotto determinate condizioni, è possibile riscontrare nel Registro Eventi del proprio server: l’&lt;b&gt;Application Popup 333&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;Come prima cosa cerchiamo di capire a cosa si riferisce questo evento. &lt;/p&gt;  &lt;p&gt;Partiamo con l’indicare che il relativo source è l’Application Popup, che ci notifica negli eventi di sistema che un’operazione di I/O iniziata dal registro è fallita. In particolare questo componente non è stato capace di leggere, scrivere o fare il flush su disco di determinate informazioni, che andranno dunque perse. Negli eventi di sistema vedremo una serie di segnalazioni come queste:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/AnalizzareleventoApplicationPopup333_A2C0/image%5B1%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image_thumb[1][1]" border="0" alt="image_thumb[1][1]" src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/AnalizzareleventoApplicationPopup333_A2C0/image_thumb%5B1%5D%5B1%5D_d37bc840-cab3-4516-b82c-b3481c3e16f2.png" width="371" height="409" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Sottolineo una serie perché in seguito al presentarsi del primo di questi eventi, circa ogni 5 secondi il sistema memorizzerà una nuova notifica, fino a quando non verrà effettuato un reboot della macchina.&lt;/p&gt;  &lt;p&gt;In generale non possiamo determinare gli effetti della mancata scrittura o lettura del registro, ma questi saranno sicuramente circoscritti al componente che ha richiesto l’operazione. I sintomi che accompagnano questo evento, se presenti, sono differenti a seconda della causa che lo genera. &lt;/p&gt;  &lt;p&gt;Tipici scenari possono riguardare hangs del sistema, risorse insufficienti per il completamento di un servizio richiesto, database SQL che si stoppano o che eseguono le query lentamente, o più in generale eventi legati alle performance del sistema operativo. &lt;/p&gt;  &lt;p&gt;Questo evento è stato introdotto con Windows Server 2003 Service Pack 1 ed è possibile trovarlo sia su sistemi x86 che x64.&lt;/p&gt;  &lt;p&gt;Terminata questa breve introduzione, passiamo all’analisi di quelle che possono essere le cause che portano a questo evento. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Il disco&lt;/b&gt; che sta ospitando il sistema operativo ha un carico di lavoro molto elevato, o ha dei problemi hardware, evidenziando una lunga coda di operazioni che attendono per essere eseguite. Possiamo avere questa circostanza sia su sistemi x86 che x64. &lt;/li&gt;    &lt;li&gt;Esaurimento delle &lt;b&gt;risorse lato Kernel&lt;/b&gt;: Non Paged Pool Memory (Evento SRV 2020 nel registro di sistema), Paged Pool Memory (Evento SRV 2019 nel registro di sistema) o Page Table Entries (PTE). Questa problematica riguarda, salvo eventi particolari, sistemi x86, a causa delle limitazioni dettate dall’architettura a 32 bit. &lt;/li&gt;    &lt;li&gt;Un &lt;b&gt;filter driver&lt;/b&gt; sta impedendo flush su disco del registri. Questo può accadere sia in sistemi x86, che x64. &lt;/li&gt;    &lt;li&gt;E’ stato concesso il privilegio “&lt;b&gt;Lock system pages in memory&lt;/b&gt;” ad un account user. Questo può succedere sia in sistemi x86, che x64. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Abbiamo elencato le ipotetiche cause del nostro evento 333, ma come facciamo a rimuoverlo?!&lt;/p&gt;  &lt;p&gt;Dipende dal particolare scenario alla base del problema, analizziamo singolarmente le varie casistiche:&lt;/p&gt;  &lt;h4&gt;&lt;strong&gt;Problemi legati al disco&lt;/strong&gt;&lt;/h4&gt;  &lt;p&gt;Per identificare questo tipo di problematica possiamo configurare i performance monitor forniti dal sistema operativo per l’analisi del nostro disco fisico. La prima grandezza che ci fornisce un’idea di come il nostro disco sta rispondendo alle operazioni richieste è la &lt;b&gt;Current Disk Queue Length&lt;/b&gt;. Questo valore dovrebbe essere tipicamente non superiore a 1 per un disco, o più in generale non superiore a n per sistemi di memorizzazione costituiti da n dischi, come le varie tipologie di RAID. Occorre sollevare un’eccezione per le SAN, dove questo valore può essere falsato dalla metodologia di archiviazione utilizzata dall’hardware a disposizione e dunque eventuali anomalie riscontrate vanno sempre discusse con l’OEM.&lt;/p&gt;  &lt;p align="center"&gt;&amp;#160;&lt;a href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/AnalizzareleventoApplicationPopup333_A2C0/image3_thumb_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image3_thumb" border="0" alt="image3_thumb" src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/AnalizzareleventoApplicationPopup333_A2C0/image3_thumb_thumb.png" width="636" height="398" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt; FIG. 1 – Disco con valori della Current Queue Length anomali&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/AnalizzareleventoApplicationPopup333_A2C0/image6_thumb%5B4%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image6_thumb[4]" border="0" alt="image6_thumb[4]" src="http://blogs.technet.com/blogfiles/itasupport/WindowsLiveWriter/AnalizzareleventoApplicationPopup333_A2C0/image6_thumb%5B4%5D_thumb.png" width="636" height="398" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="center"&gt; FIG. 2 – Disco con valori della Current Queue Length normali&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;La figura 2 ci mostra un esempio un disco che sta eseguendo senza problemi le richieste di I/O derivanti dall’attività del sistema operativo. Dalla figura 2, invece, è possibile osservare un disco che sta accodando le richieste di I/O, introducendo dunque delle potenziali problematiche. E’ possibile suddividere le cause che possono portare ad una situazione come quella illustrata nella figura 1, in due sottogruppi:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Problemi strettamente legati all’hardware (Controller o unità disco) &lt;/li&gt;    &lt;li&gt;Sovraccarico delle operazioni su disco &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Consideriamo la prima casistica, il disco sta accodando delle richieste a causa di problemi hardware. L’accodamento è dunque causato da una lentezza da parte del sistema si storage nell’eseguire le richieste. Un altro counter, che affiancato alla Current Disk Queue Length, ci può evidenziare questa tipologia di problema è il &lt;b&gt;Disk Response Time&lt;/b&gt;. Il tempo di risposta può variare a seconda delle specifiche del disco, ma in generale un tempo superiore ai 30ms dovrebbe essere investigato. Se i contatori esposti sembrano evidenziare un problema legato al sistema di storage, occorrerà aggiornare firmware e driver del controller ed eventualmente controllare i dischi attraverso i tool di hardware monitoring.&lt;/p&gt;  &lt;p&gt;La seconda casistica riguarda un’eccessiva attività su disco. Un altro counter, che associato al Disk Queue Length, ci può evidenziare questo tipo di situazione è il I/O Data bytes/sec dell’oggetto Process. Occorrerà per prima cosa evidenziare eventuali processi che stanno eseguendo un’elevata attività di I/O e verificare se questo risulta in linea con i ruoli e le attività quotidiane del server. Se non si riscontrassero anomalie legate al binomio ruoli/attività disco, occorrerà effettuare un bilanciamento del carico su più dischi o server, ed eventualmente spostare il file di paging su un disco differente da quello di sistema.&lt;/p&gt;  &lt;h4&gt;&lt;strong&gt;Esaurimento delle risorse kernel&lt;/strong&gt;&lt;/h4&gt;  &lt;p&gt;Tratteremo nel dettaglio la gestione di questa problematica nei prossimi post, partiamo comunque col dire che le tre grandezze che entrano in gioco in questo tipo e sono la Non Paged Pool Memory, la Paged Pool Memory e le Free Page Table Entries. Possiamo verificare questi valori attraverso i relativi contatori dell’oggetto memory. In particolare le soglie che dobbiamo tenere come riferimento, per sistemi Windows Server 2000 e 2003, sono le seguenti:&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="5" align="center"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top"&gt;&lt;b&gt;Non Paged Pool Memory (NPP)&lt;/b&gt;&lt;/td&gt;        &lt;td valign="top"&gt;&lt;b&gt;&amp;lt;&lt;/b&gt; &lt;b&gt;256&lt;/b&gt; MB ( &lt;b&gt;128&lt;/b&gt; MB in sistemi con lo switch &lt;b&gt;/3GB&lt;/b&gt; abilitato )&lt;b&gt;&amp;#160;&lt;/b&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;b&gt;Paged Pool Memory (PP)&lt;/b&gt;&lt;/td&gt;        &lt;td valign="top"&gt;&lt;b&gt;&amp;lt;&lt;/b&gt; &lt;b&gt;650&lt;/b&gt; MB (&lt;b&gt;491.875&lt;/b&gt; per Windows 2000 e Windows XP)&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;b&gt;Free Page Table Entries (PTE)&lt;/b&gt;&lt;/td&gt;        &lt;td valign="top"&gt;&lt;b&gt;&amp;gt; 5.000&lt;/b&gt; (Sotto questo valore il comportamento del sistema è imprevedibile)&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;L’esaurimento della Non Paged Pool Memory e Non Paged Pool Memory, è solitamente accompagnato dagli eventi d’errore 2019 e 2020 nei system events.&lt;/p&gt;  &lt;p&gt;Se riscontriamo che la PP,o la NPP, si stanno avvicinando alle soglie indicate, occorrerà effettuare una specifica analisi per capire quale driver sta causando l’esaurimento della risorsa. Come anticipato tratteremo questo tipo di analisi in un articolo separato. In generale possiamo comunque investigare su problemi conosciuti di esaurimento della memoria, riguardanti i driver di terze parti attualmente installati sul nostro server. E’ buona norma mantenere sempre i driver dei vari prodotti, aggiornati all’ultima versione disponibile.&lt;/p&gt;  &lt;p&gt;Per quanto riguarda le PTEs, occorrerà effettuare la seguente distinzione:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Switch /3GB abilitato nel boot.ini        &lt;br /&gt;&lt;/strong&gt;In questo caso la memoria virtuale dedicata al sistema operativo si riduce da 2 a 1 GBytes, riducendo così anche lo spazio libero per le PTE. In questo particolare caso possiamo intervenire con lo switch /USERVA, come indicato nel seguente articolo:       &lt;br /&gt;KB 316739       &lt;br /&gt;How to use the /userva switch with the /3GB switch to tune the User-mode space to a value between 2 GB and 3 GB       &lt;br /&gt;&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;316739"&gt;http://support.microsoft.com/default.aspx?scid=kb;EN-US;316739&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;In questo modo possiamo modificare la soglia tra i 3Gbyte della memoria virtuale user e il Gbyte della memoria virtuale dedicata al kernel.       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Switch /3GB disabilitato nel boot.ini        &lt;br /&gt;&lt;/strong&gt;In questo caso potremmo avere un leak di PTE, che possiamo analizzare attraverso l’impostazione del Track PTE ed un tool di debugging. Anche questa specifica problematica, verra trattata nell’articolo dedicato alle risorse kernel. &lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;&lt;strong&gt;Filter driver&lt;/strong&gt;&lt;/h4&gt;  &lt;p&gt;E’ doveroso premettere che rimuovendo o disabilitando un filter driver senza capire l’impatto sul sistema, potremmo riscontrare comportamenti inaspettati, come hang o blue screen. Esempi di applicativi che possono utilizzare dei filter driver includono: Anti-virus software, Backup Software, software di gestione volumi, software di criptazione/decriptazione dati etc.&lt;/p&gt;  &lt;p&gt;Il metodo più semplice per determinare i filter driver, di terze parti, installati sulla nostra macchina è utilizzare la nostra utility MPS Report, che consente di raccogliere queste informazioni. Possiamo seguire dunque i seguenti passi:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Download del tool MPSRPT_SETUPPerf.exe dal link &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=cebf3c7c-7ca5-408f-88b7-f9c79b7306c0&amp;amp;DisplayLang=en"&gt;Microsoft Product Support Reporting Tools page&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;Eseguire il file MPSRPT_SETUPPerf.EXE scaricato. &lt;/li&gt;    &lt;li&gt;Terminata l’esecuzione, la durata media è di circa 15min, è possibile analizzare il file PStat.txt, estraendolo dal file .CAB creato dal tool. Tramite questo file possiamo verificare tutti i filter / kernel drivers con le relative date. Verificare eventuali versioni non aggiornata, o eventuali versioni che hanno già problemi riconosciuti dal vendor. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;E’ importante che, prima di effettuare qualsiasi operazione di disabilitazione o rimozione, venga effettuato il controllo sulla disponibilità da parte del vendor di eventuali versioni aggiornate.&lt;/p&gt;  &lt;h4&gt;&lt;strong&gt;Lock system pages in memory&lt;/strong&gt;&lt;/h4&gt;  &lt;p&gt;In sistemi a 64bit, come descritto precedentemente, la probabilità di avere valori preoccupanti per le PTEs è assai inferiore rispetto a sistemi x86. Tuttavia, abbiamo visto nella nostra attività quotidiana, eventi 333 capitare ugualmente anche in sistemi x64, dovuti a questo motivo.&lt;/p&gt;  &lt;p&gt;Un workaround per questo comportamento in sistemi x64 con 4GB, o meno, di memoria RAM è costituito dai seguenti passi:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Cliccare su Start --&amp;gt; Run &lt;/li&gt;    &lt;li&gt;Digitare Secpol.msc e premere OK &lt;/li&gt;    &lt;li&gt;Espandere &amp;quot;Local Policies&amp;quot; e cliccare su &amp;quot;User Rights Assignment&amp;quot; &lt;/li&gt;    &lt;li&gt;Doppio click su &amp;quot;Lock pages in memory&amp;quot; &lt;/li&gt;    &lt;li&gt;Evidenziare eventuali user accounts elencati e cliccare su &amp;quot;Remove&amp;quot; &lt;/li&gt;    &lt;li&gt;Premere su OK, una volta rimossi tutti gli user account &lt;/li&gt;    &lt;li&gt;Riavviare il sistema &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Di default il sistema operative non fornisce questo diritto a nessun account. Il privilegio “Lock pages in memory” è fornito all’account utilizzato per i servizi SQL in SQL 2005 RTM/SP1 Enterprise Edition installato su sistemi a 32bit. Se state utilizzando SQL Enterprise in un servers x86, con più di 4GB di RAM, questo privilegio è necessario. Per cercare di ridurre l’occorrenza degli eventi 333 nel sistema, occorrerà verificare che l’account che si sta utilizzando per I servizi SQL, sia utilizzato solo per SQL. Per sistemi x64 possiamo rimuovere tutti gli utenti elencati.&lt;/p&gt;  &lt;p&gt;Bene questo è tutto per questo post. Come potete vedere le cause per l’evento 333 sono svariate e spesso correlate a problemi con alcuni driver o configurazioni: vi consiglio dunque di visitare regolarmente la nostra &lt;a href="http://support.microsoft.com/" target="_blank"&gt;Microsoft Knowledge base&lt;/a&gt; per verificare le nuove pubblicazioni e gli ultimi aggiornamenti disponibili.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/itasupport/pages/mattia-tocco.aspx" target="_blank"&gt;Mattia Tocco&lt;/a&gt;     &lt;br /&gt;Senior Support Engineer     &lt;br /&gt;Microsoft Enterprise Platforms Support&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3150310" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/itasupport/archive/tags/Windows+Team/default.aspx">Windows Team</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Mattia+Tocco/default.aspx">Mattia Tocco</category><category domain="http://blogs.technet.com/itasupport/archive/tags/Performance/default.aspx">Performance</category></item></channel></rss>