Al momento sei offline in attesa che la connessione Internet venga ristabilita

Come utilizzare la funzionalità di pool speciale per isolare i danni del pool

Il supporto per Windows XP è terminato

Il supporto Microsoft per Windows XP è terminato l'8 aprile 2014. Questa modifica ha interessato gli aggiornamenti software e le opzioni di sicurezza. Ulteriori informazioni su come continuare a essere protetti.

Il supporto per Windows Server 2003 è terminato il 14 luglio 2015.

Microsoft ha sospeso il supporto per Windows Server 2003 in data 14 luglio 2015. Questa modifica ha interessato gli aggiornamenti software e le opzioni di sicurezza. Ulteriori informazioni su come continuare a essere protetti.

IMPORTANTE: il presente articolo è stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l’obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre è perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilità per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualità della traduzione.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 188831
Sommario
Danni pool possono causare molti di più evasiva problemi con danni di Windows NT. Pool si verifica quando una modalità kernel componente scrive nella memoria all'esterno dell'area del pool allocata. Scrivendo memoria oltre il limite della propria area allocata, è probabile che un'altra area di memoria allocata, eventualmente appartiene a un altro componente, viene sovrascritto. Il danno può causare problemi, ad esempio schermate blue completamente non correlati aree di codice. È un componente in modalità kernel lettura oltre l'area allocata anche causare problemi.

Se è causato dall'attrezzatura originale Driver di produttori (OEM) o problemi di Windows, sono problemi di danneggiamento del pool alcuni dei più difficili da individuare. In genere, tutte le operazioni che possono essere visualizzate un analisi del dump di arresto anomalo del sistema sono il sintomo del problema effettivo, ad esempio un'area dati sempre danneggiati e che causano problemi in un blocco di codice completamente indipendente. Fino ad oggi, era praticamente impossibile individuare il segmento di codice che danneggia la memoria.

A questo punto può essere identificato l'origine del danneggiamento del pool con l'istruzione danni pool. Una nuova utilità di gestione della memoria ovvero è incluso in Windows NT 4.0 Service Pack 4 (SP4), Windows 2000, denominata Pool speciale Windows XP, Windows Server 2003, Windows Vista e Windows Server 2008. L'utilità di Pool speciale identifica il componente in modalità kernel che è di danneggiare i dati del pool per iscritto all' memoria di fuori dell'area allocata.

Nota. Regolazione della memoria non è applicabile a Windows Vista e Windows Server 2008. Tuttavia la funzionalità di pool speciale si applica per tali prodotti.
Informazioni
Importante. Questa sezione, metodo o attività contiene la procedura per modificare il Registro di sistema. Tuttavia, potrebbero verificarsi seri problemi se si modifica il Registro di sistema in modo errato. Pertanto, assicurarsi di seguire attentamente i passaggi. Per maggiore protezione, eseguire il backup del Registro di sistema prima di modificarlo. In questo modo, è possibile ripristinare il Registro di sistema se si verifica un problema. Per ulteriori informazioni su come eseguire il backup e ripristinare il Registro di sistema, fare clic sul numero dell'articolo riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base:
322756 Come eseguire il backup e ripristinare il Registro di sistema in Windows


L'utilità di Pool speciale Alloca due pagine di memoria virtuale per ogni allocazione di memoria richiesta tramite ExAllocatePoolWithTag che corrisponde ai criteri seguenti:
  • La richiesta di allocazione deve essere di dimensioni minori di allocazione massima che possono essere contenuti in un pool di paging.
  • La richiesta deve corrispondere alla specifica PoolTag nel Registro di sistema.
Per il rilevamento di sovraccarico del pool, la prima pagina viene utilizzata per contenere l'allocazione alla fine della pagina. La seconda pagina è una pagina di protezione. Per pool sottocarico il rilevamento, la prima pagina è guard page. È seguito da un pagina che contiene l'allocazione all'inizio della pagina.

Rilevamento di sovraccarico è probabilmente il più utilizzato. Per il rilevamento di sovraccarico, il richiesta di allocazione è posizionato alla fine della prima pagina eseguendo il backup di dimensione richiesta dalla fine della pagina. La dimensione di allocazione viene arrotondata fino a un limite di 8 byte. Una chiave di criterio, le dimensioni e le informazioni sui pool sono scrivere l'intestazione con i primi otto byte della prima pagina. Il modello viene inoltre distribuita in tutta la pagina. Poiché l'allocazione è posizionato in corrispondenza di più vicino al limite di 8 byte, può essere fino a sette slop byte che seguono il allocazione. Il modello viene scritti anche i byte di slop dopo il allocazione.

La seconda pagina è guard page. Guard page è costituito da una speciale tabella voce PTE (page) che è contrassegnata con nessun accesso protezione. Contrassegnando questa seconda pagina con la protezione Nessun accesso, qualsiasi codice tentativo di lettura o scrittura oltre la fine della prima pagina immediatamente causa violazione di accesso che restituisce un errore Stop 0x0000001E o di Stop 0x0000000A. In questo modo, un eventuale debug del sistema per trovare l'esatta istruzione che provoca danni di pool.

Come controllo di backup per intercettare i trasgressori scrivere oltre la fine dell'allocazione ma non oltre la fine della pagina, la slop byte alla fine dell'allocazione vengono convalidati durante la richiesta di pool di supporti liberi (ExFreePoolWithTag). Slop byte vengono confrontati con il motivo della intestazione di allocazione per determinare se tutti gli elementi viene sovrascritto nell'area slop byte. Se la verifica non funziona, un errore irreversibile 0x00000001A si verifica.

Questo controllo non troveranno necessariamente il blocco esatto di codice che causa danni del pool. Tuttavia, può essere utile per identificare il componente che provoca il danno.

Per attivare l'utilità di Pool speciale, aggiungere il chiavi e valori al Registro di sistema seguenti:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management


Nome del valore: PoolTag
Tipo di dati: REG_DWORD
Dati: Maschera di tag pool | Maschera di dimensioni di allocazione | 0
La maschera di tag del pool è l'ID del tag di pool che contiene la definizione della maschera caratteri di pool in cui si desidera inserire nel pool speciale. Questa maschera deve essere specificato in formato esadecimale in ordine inverso. Questa maschera può contenere anche "?" per mascherare un singolo carattere o "*" alla maschera da qui fino alla fine del tag. Ad esempio, per monitorare tutti i pool di un tag di pool che inizia con "Nt", specificare "2A744E" (senza virgolette), che rappresenta "* tN".

Il tabella che segue sono elencati altri esempi.
   Pool to monitor   Character representation   Pool tag mask   ----------------------------------------------------------                  All pools         "*"                        0x2A   N??s              "s??N"                     0x733F3F4E				
Specifica di allocazione dimensione maschera colloca le allocazioni di pool di una dimensione specificata in un pool speciale. Viene inoltre specificato in formato esadecimale. Ad esempio, se sono posizionate in tutte le allocazioni di 32 byte nel pool speciale specificare 0x20.

Quando viene specificato zero (0x0), l'utilità di Pool speciale non è inizializzato. Inoltre, l'utilità di Pool speciale non inizializzato se il valore del Registro di sistema PoolTag non è definito nel Registro di sistema.
Nome del valore: PoolTagOverruns
Tipo di dati: REG_DWORD
Dati: 1 | 0
1 indica che i sovraccarichi di allocazione del pool vengono rilevati per il tag specificato. L'allocazione è situato alla fine della pagina e la protezione pagina segue.

0 indica che vengono rilevate sottocarichi di allocazione del pool per la tag. L'allocazione si trova all'inizio della pagina e guard page precede la pagina contenente l'allocazione.

Esempi comuni di utilizzo per la creazione di queste due chiavi di registro sarebbe come segue:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\ Memory Management


Nome del valore: PoolTag
Tipo di dati: REG_DWORD
Dati: 0x2A

Nome del valore: PoolTagOverruns
Tipo di dati: REG_DWORD
Dati: 1


Nota. Per Windows NT Terminal Server 4.0, è necessario disattivare KStackPool Quando si utilizza un pool speciale. A tale scopo, aggiungere il seguente valore del Registro di sistema:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management


Nome del valore:EnableKStackPool
Tipo di dati: REG_DWORD
Dati: 0

1 - Pool KStack sempre attivato
2 - Pool KStack attivata per i computer dotati di 256 MB o superiore memoria (impostazione predefinita)
Se non si effettua questa modifica sul terminale Computer server con 256 MB di memoria, potrebbe essere visualizzato "STOP 0x00000078 (PHASE0_EXCEPTION) "messaggi di errore.


Nota. La funzionalità di Pool speciale potrebbe non funzionare in Windows Server 2003 se vi sono voci della tabella pagine speciali insufficienti (PTE). Questo problema si verifica in genere su utente singolo server terminal che contengono più di 1 GB di RAM e che hanno i valori di ottimizzazione di gestione memoria del computer impostate sui valori predefiniti. Questo problema si verifica nelle versioni a 64 bit di Windows Server 2003.

Un'analisi di file di immagine della memoria del problema potrebbe contenere le seguenti informazioni:
*** Virtual Memory Usage *** Physical Memory: 1015660 ( 4062640 Kb) Page File: \??\C:\Pagefile1\pagefile.sys Current: 4193280Kb Free Space: 4180856Kb Minimum: 4193280Kb Maximum: 4193280Kb Available Pages: 552680 ( 2210720 Kb) ResAvail Pages: 932179 ( 3728716 Kb) Locked IO Pages: 347 ( 1388 Kb) Free System PTEs: 187166 ( 748664 Kb) Free NP PTEs: 32765 ( 131060 Kb) Free Special NP: 117228 ( 468912 Kb) Modified Pages: 106 ( 424 Kb) Modified PF Pages: 98 ( 392 Kb) NonPagedPool Usage: 6599 ( 26396 Kb) NonPagedPool Max: 65536 ( 262144 Kb) PagedPool 0 Usage: 10697 ( 42788 Kb) PagedPool 1 Usage: 1240 ( 4960 Kb) PagedPool 2 Usage: 1239 ( 4956 Kb) PagedPool 3 Usage: 1265 ( 5060 Kb) PagedPool 4 Usage: 1231 ( 4924 Kb) PagedPool Usage: 15672 ( 62688 Kb) PagedPool Maximum: 90112 ( 360448 Kb) Shared Commit: 3866 ( 15464 Kb) Special Pool: 511 ( 2044 Kb) <-- very smallShared Process: 5205 ( 20820 Kb) PagedPool Commit: 15672 ( 62688 Kb) Driver Commit: 2091 ( 8364 Kb) Committed pages: 439832 ( 1759328 Kb) Commit limit: 2023823 ( 8095292 Kb)0: kd> dd nt!MmSpecialPoolRejected l8 8057afe0 00000000 00000000 00b2e59a 00000000 <-- A DWORD value of 3 causes special pool PTE's shortage.8057aff0 00000000 00000000 00000000 000000008057afd8 nt!MiSpecialPoolFirstPte = 0xc022af788057afd4 nt!MiSpecialPoolLastPte = 0xc022af78
Per verificare il problema, la dimensione del Pool speciale che viene allocata dall'analisi. In questo caso, il problema si verifica perché i seguenti valori PTE pool speciale sono uguali:
  • MiSpecialPoolFirstPte
  • MiSpecialPoolLastPte
Questo problema può verificarsi anche se il valore della voce del Registro di sistema MmSpecialPoolRejected è di tre o più grande.

Per aggirare questo problema, configurare il valore della voce del Registro di PagedPoolSize su un valore che è minore della dimensione del pool di paging è consentita. Ad esempio, impostare la voce del Registro di sistema di PagedPoolSize su un valore 256 MB. Se si desidera configurare un valore più grande, è possibile utilizzare l'utilità Performance Monitor per determinare i requisiti del computer per un grande pool di paging.

È possibile utilizzare i seguenti valori per la voce di registro PagedPoolSize:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
Per Windows Server 2003 senza service pack:

Nome del valore: PagedPoolSize
Tipo di dati: REG_DWORD
Dati: 10000000
Base: esadecimale

Per Windows Server 2003 con Service Pack 1 (SP1):

Nome del valore: PagedPoolSize
Tipo di dati: REG_DWORD
Dati: FFFFFFFF
Base: esadecimale

Nota. Dopo aver apportato le modifiche del Registro di sistema descritti in questo articolo, riavviare il computer affinché le modifiche abbiano effetto.

Se Dopo aver attivato la funzionalità di Pool speciale, il computer si blocca (si blocca) e viene visualizzato un messaggio di errore su schermo blu durante l'avvio, riavviare il computer utilizzando l'opzione ultima configurazione sicuramente funzionante. L'attivazione della funzionalità Pool speciale non viene scritta all'ultima nota bene Voce di configurazione nel Registro di sistema solo dopo un accesso riuscito.
corruzione del pool

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 188831 - Ultima revisione: 04/19/2013 14:18:00 - Revisione: 0.1

Microsoft Windows 2000 Server, Microsoft Windows 2000 Advanced Server, Microsoft Windows XP Professional, Microsoft Windows Server 2003, Standard Edition (32-bit x86), Microsoft Windows Server 2003, Enterprise Edition (32-bit x86), Microsoft Windows Server 2003 Service Pack 2, Windows Vista Home Premium, Windows Vista Enterprise, Windows Vista Ultimate, Windows Vista Service Pack 2, Windows Server 2008 Standard, Windows Server 2008 Enterprise, Windows Server 2008 Datacenter, Windows Server 2008 Service Pack 2, Windows 7 Home Premium, Windows 7 Enterprise, Windows 7 Professional, Windows 7 Ultimate, Windows 7 Service Pack 1, Windows Server 2008 R2 Standard, Windows Server 2008 R2 Enterprise, Windows Server 2008 R2 Datacenter, Windows Server 2008 R2 Service Pack 1

  • kbenv kbhowto kbqfe kbmt KB188831 KbMtit
Feedback
://c1.microsoft.com/c.gif?DI=4050&did=1&t=">=1&t=">