Condividi tramite


[Archivio newsletter ^] [< Volume 2, Numero 1] [Volume 2, Numero 3 >]

Newsletter Systems Internals Volume 2, Numero 2

http://www.sysinternals.com
Copyright © 2000 Mark Russinovich


27 marzo 2000 - In questo numero:

  1. EDITORIALE

    • Mark è coautore di "Inside Windows 2000, 3rd Ed." con David Solomon
  2. NOVITÀ DI SYSINTERNALS

    • PsKill v1.03, PsList v1.12
    • Junction v1.0
    • ElogList v1.0
    • NTFrob v1.6a
    • GetSid v1.1
    • HandleEx v2.23
    • Regmon v4.24, Filemon v4.28
    • AutoRuns v1.0
    • NT 4. Editor ACL
    • Magliette SysInternals
    • Più SysInternals su microsoft.com
    • Rubriche di Internals di marzo/aprile
    • Notizie quasi recenti
  3. INFORMAZIONI SU INTERNALS

    • Punti di analisi
    • Tabella degli handle del kernel
    • Impossibile avviare uno o più driver
    • Brevetti correlati a Microsoft NT
  4. SVILUPPI FUTURI

    • TdiMon

SPONSOR: WINTERNALS SOFTWARE

La newsletter Systems Internals è sponsorizzata da Winternals Software, presente sul Web all'indirizzo http://www.winternals.com. Winternals Software è il principale sviluppatore e provider di strumenti avanzati di sistemi per Windows NT/2K. I prodotti di Winternals Software includono FAT32 per Windows NT 4.0, ERD Commander Professional Edition (funzionalità avanzata del disco di avvio per Windows NT), e Remote Recover.

NtfsDOS Professional e NTFS di Winternals Software per Win98 forniscono l'accesso completo in lettura e scrittura alle unità NTFS da DOS, Windows 95 e Windows 98. NTFSDOS Pro offre funzionalità di "disco di avvio" su singolo floppy in Windows NT/2K. Con NTFSDOS Pro è possibile eliminare driver con bug, aggiornare i file ed eseguire operazioni generali di manutenzione del file system su unità NTFS da un disco floppy di avvio DOS. NTFS per Win98 consente di accedere in modo trasparente alle unità NTFS da Windows 95 e Windows 98. È possibile condividere con facilità applicazioni e file tra NT e Win9x in unità NTFS nell'ambiente a doppio avvio. Entrambe le utilità hanno anche funzionalità Chkdsk NTFS incorporate. Una versione gratuita di sola lettura di NTFSDOS Pro è disponibile all'indirizzo http://www.sysinternals.com/ntfspro.htm e una versione gratuita di sola lettura di NTFS per Win98 è disponibile all'indirizzo http://www.sysinternals.com/ntfs98.htm.

Ciao a tutti.

Benvenuti nella newsletter di Systems Internals. La newsletter conta attualmente 20.000 abbonati. La crescita dell'elenco è stata enorme negli ultimi due mesi con oltre 6.000 nuovi abbonati! Continuare a condividere la newsletter con i propri amici.

Sono lieto di annunciare che sono coautore di "Inside Windows 2000, 3rd Edition" con Dave Solomon (http://www.solsem.com). Se si è interessati agli eventi interni di Windows NT, quasi certamente si conoscerà "Inside Windows NT, 2nd Edition" di Dave (Microsoft Press). Il rilascio di Windows 2000 ha portato una serie di modifiche al kernel NT e ai componenti circostanti, alcune grandi e altre piccoli, e queste modifiche hanno reso necessaria una revisione del libro di Dave.

In un certo senso, Dave e io abbiamo lavorato a "Inside Windows 2000" in modo indipendente negli ultimi tre anni, tenendo il passo con le modifiche introdotte da Microsoft in Windows 2000 nella sua evoluzione da NT 5.0 Beta 1 a Windows 2000 build 2195. In realtà stavo lavorando da tempo alla stesura del mio libro "Windows NT Internals", ma quando si è presentata l'opportunità di collaborare con Dave all'aggiornamento di un libro di così alta qualità e di contribuire alla stesura del punto di vista ufficiale di Microsoft su Windows 2000 Internals, non ho potuto lasciarmela sfuggire.

La decisione di scrivere insieme il libro è piuttosto recente, quindi abbiamo trascorso gli ultimi due mesi a unire le nostre ricerche, i nostri appunti e i nostri articoli. Per ragioni totalmente indipendenti, viviamo a soli venti minuti l'uno dall'altro in un angolo remoto del Connecticut. La nostra vicinanza ci ha permesso di alternare le giornate di lavoro a casa l'uno dell'altro e di recente abbiamo trascorso molte notti a ricercare e discutere su oscuri dettagli del funzionamento interno di Windows 2000. All'indirizzo http://www.sysinternals.com/inspic.jpg. c'è una foto di me e Dave che lavoriamo a casa sua

Un aspetto insolito della nostra collaborazione è che Dave ha accesso completo al codice sorgente di Windows 2000, mentre io no (non ho mai avuto accesso ad alcun codice sorgente di Windows al di fuori di quello pubblicamente disponibile in Device Driver Kit e in Installable File System Kit). Dave capisce le cose esaminando i file del codice sorgente, mentre io analizzo gli elenchi prodotti dal mio disassembler personalizzato ed esploro gli aspetti più profondi di Windows 2000 in sistemi live con il debugger in modalità kernel SoftICE di NuMega. Di conseguenza, ognuno di noi apporta prospettive uniche e in più di un'occasione abbiamo utilizzato congiuntamente le nostre rispettive risorse per rispondere insieme a domande difficili.

Non solo stiamo aggiornando il libro originale per riflettere le modifiche apportate a Windows 2000, ma stiamo anche aggiungendo oltre il 30% di contenuti nuovi, tra cui diversi nuovi capitoli. Gli argomenti introdotti nel nuovo libro includono l'avvio, l'arresto, gli arresti anomali del sistema, la gestione dell'archiviazione, i meccanismi interni dei servizi, i meccanismi interni del Registro di sistema e WMI. Questa revisione include anche un CD-ROM contenente uno snapshot del sito Web di SysInternals e vari strumenti che ho scritto appositamente per il libro. Uno di questi strumenti, LiveKd, consente di eseguire il debugger del kernel i386kd in un sistema live, il che semplifica l'esplorazione delle parti interne del kernel senza il fastidio di cavi seriali e più computer. Senza dubbio questo libro aggiunge informazioni tecniche e approfondimenti significativi alle già solide basi del suo predecessore.

Quando sarà disponibile il libro? Dave e io andremo a Redmond la settimana del 4 aprile per ricevere i commenti finali di revisione tecnica da parte degli sviluppatori del kernel di Windows 2000 e Microsoft Press ha dichiarato che il libro sarà disponibile a luglio. Naturalmente pubblicherò le notizie aggiornate nella newsletter.

Grazie.

- Mark

NOVITÀ DI SYSTEMS INTERNALS

PSKILL V1.03, PSLIST V1.12

PsList è un'utilità che consente di visualizzare informazioni dettagliate sui processi attivi di un sistema locale o remoto, mentre PsKill consente di terminare i processi in un sistema locale o remoto. Queste utilità hanno una sintassi della riga di comando simile, in cui è possibile specificare un nome computer facoltativo nel formato "\\computer". Se si include un nome utente con un nome computer, gli strumenti consentono di accedere al computer specificato con un account utente diverso da quello da cui si eseguono gli strumenti. Queste ultime versioni offrono un modo alternativo per immettere la password negli ambienti in cui si eseguono gli strumenti davanti ad altre persone e non si desidera esporre le password. Ora, se si include un account computer come opzione, ma si omette la password, viene richiesto di immettere la password e l'input non viene visualizzato sullo schermo.

Scaricare PsKill v1.03 all'indirizzo http://www.sysinternals.com/pskill.htm.
Scaricare PsList v1.12 all'indirizzo http://www.sysinternals.com/pslist.htm.

JUNCTION V1.0

Una forma di collegamento simbolico è finalmente arrivata in Windows sotto forma di giunzioni NTFS di Windows 2000. Le giunzioni sono collegamenti simbolici alle directory e Windows 2000 Resource Kit include uno strumento, linkd, che consente di creare ed eliminare le giunzioni. Purtroppo, un'installazione di base di Windows 2000 non include alcuno strumento per la creazione di giunzioni e la documentazione di Platform SDK non documenta adeguatamente i reparse point. Queste carenze mi hanno spinto a implementare Junction, uno strumento che non solo consente di creare le giunzioni, ma anche di eseguire query sui file e di visualizzare le informazioni sul relativo reparse point se ne hanno uno. Per aiutare gli sviluppatori che vogliono implementare i propri strumenti di reparse point, ho pubblicato il codice sorgente completo di Junction. Per altre informazioni sulle giunzioni e sul modo in cui Windows 2000 le implementa, vedere la sezione sui reparse point più avanti nella newsletter.

Scaricare Junction v1.0 con il codice sorgente completo all'indirizzo http://www.sysinternals.com/misc.htm.

ELOGLIST V1.0

Windows 2000 Resource Kit include uno strumento denominato ELogDump che consente di eseguire il dump dei record da un registro eventi nel computer locale o remoto. ELogList è un clone di ElogDump che consente anche di specificare un nome e una password di account facoltativi per accedere ai registri eventi di un computer da un account diverso da quello da cui si esegue lo strumento. ElogList è utile per eseguire il dump dei registri eventi da file batch o per acquisire i record dei registri eventi in file di testo che è possibile importare in fogli di calcolo per la conservazione o l'analisi dei record.

Scaricare ElogList v1.0 all'indirizzo http://www.sysinternals.com/eloglist.htm.

NTFROB V1.6A

NTFrob è un'applet che offre un maggiore controllo sui quanti (giri) in primo piano e in background che l'utilità di pianificazione di Windows NT assegna ai thread rispetto a quanto consentito dalla scheda Prestazioni dell'applet del pannello di controllo Sistema. L'uso di quanti più brevi può migliorare la velocità di risposta delle applicazioni interattive, mentre i quanti più lunghi sono più adatti a carichi di lavoro server a esecuzione prolungata. NTFrob continua a tenere il passo con i nuovi Service Pack con la versione più recente, ovvero la versione 1.6a. La versione 1.6a funziona in tutte le versioni rilasciate di NT 4.0 fino al Service Pack 6a, ad eccezione del Service Pack 6 (Microsoft ha ritirato il Service Pack 6 poco dopo il rilascio a causa di un bug significativo). Presto sarà disponibile una versione di NTFrob che funziona su Win2K.

Scaricare NTFrob v1.6a all'indirizzo http://www.sysinternals.com/ntfrob.htm.

GETSID V1.1

Se si amministra un ambiente in cui la clonazione semplifica le attività di implementazione, probabilmente si sarà interessati a GetSid. GetSid è simile allo strumento di Windows NT Resource Kit con lo stesso nome, ma SysInternals GetSid consente di ottenere SID non solo per gli account utente, ma anche per i computer. Poiché GetSid funziona tra le reti senza richiedere l'installazione di software client, è possibile usare facilmente GetSid per verificare che i computer nella rete non subiscano problemi di SID duplicati che accompagnano la clonazione.

Scaricare GetSid v1.1 all'indirizzo http://www.sysinternals.com/misc.htm.
Per informazioni sul problema dei SID duplicati, vedere http://www.sysinternals.com/newsid.htm.

REGMON V4.24, FILEMON V4.28

Oltre a visualizzare i nomi dei processi che eseguono attività sui file o sul Registro di sistema, questi aggiornamenti di Regmon e Filemon mostrano anche gli identificatori dei processi. Questo miglioramento consente di distinguere gli accessi ai file e al Registro di sistema tra più processi con lo stesso nome.

Un altro miglioramento presente in queste versioni consente di eseguire Regmon e Filemon da sessioni remote di servizi terminal Win2K (anziché dalla console). Le applicazioni ottengono questo supporto perché le GUI controllano il numero di versione del sistema operativo e, se in esecuzione in Win2K, specificano il prefisso "\\.\Global\" al nome usato nella chiamata a CreateFile quando aprono l'oggetto dispositivo del componente driver. In un ambiente dei servizi terminal i nomi dei driver di dispositivo assegnati ai relativi oggetti vengono archiviati nello spazio dei nomi globale (console), uno spazio dei nomi che per impostazione predefinita non è visibile nelle sessioni remote. Le sessioni remote hanno ognuna uno spazio dei nomi locale. Il prefisso "Global" indica al gestore oggetti Win2K che il gestore oggetti deve eseguire ricerche dei nomi nello spazio dei nomi globale, anziché nello spazio dei nomi della sessione in cui ha origine la ricerca.

Scaricare Regmon v4.24 all'indirizzo http://www.sysinternals.com/regmon.htm.
Scaricare Filemon v4.28 all'indirizzo http://www.sysinternals.com/filemon.htm.

AUTORUNS V1.0

Se si dispone di una configurazione tipica, ogni volta che si avvia il sistema e si esegue l'accesso a vari componenti, ad esempio Esplora risorse, vengono visualizzate le chiavi e le cartelle del Registro di sistema oscurate e vengono eseguiti automaticamente i programmi a cui si fa riferimento. David Solomon presenta un elenco di tutte le posizioni in cui sono specificati i file di esecuzione automatica nel suo seminario "Windows 2000 Internals" (http://www.solsem.com) e Bryce Cogswell ha preso l'elenco e scritto AutoRuns, un programma che consente di visualizzarne il contenuto. Quasi certamente si rimarrà sorpresi dai programmi nascosti che vengono eseguiti a propria insaputa.

Scaricare AutoRuns v1.0 all'indirizzo http://www.sysinternals.com/misc.htm.

HANDLEEX V2.23

La versione più recente di HandleEx aggiunge una serie di nuovi miglioramenti all'usabilità dell'interfaccia utente, come la possibilità di premere CTRL+TAB tra la vista superiore e quella inferiore. Ma soprattutto, HandleEx si integra ora con l'interfaccia della finestra di dialogo dell'editor di sicurezza di Win2K, mostra quali sono i file mappati in memoria aperti da un processo e visualizza la maschera di accesso concessa per gli handle aperti.

Quando si passa alla visualizzazione basata sugli handle, HandleEx presenta i file che un processo ha aperto tramite handle. Nella vista DLL HandleEx mostra i file che un processo ha caricato come moduli e, con l'aggiunta del supporto per i file mappati in memoria, HandleEx elenca i file che un processo ha mappato tramite le API per i file mappati in memoria di Win32. Poiché WinNT e Win2K non consentono di eliminare i file che i processi hanno mappato, il supporto di HandleEx per i file mappati in memoria consente di determinare quale processo impedisce di eliminare un file a causa di una mappatura in sospeso.

Scaricare HandleEx v2.23 all'indirizzo http://www.sysinternals.com/handleex.htm.

EDITOR ACL NT 4

A proposito di editor di sicurezza, Microsoft documenta le nuove API della finestra di dialogo dell'editor di sicurezza di Win2K nelle ultime versioni di Platform SDK. Tuttavia, le API degli editor NT 4 sono sempre state non documentate e rimangono così. Gli editor NT 4 sono quelli usati quando si modificano le autorizzazioni della chiave del Registro di sistema in Regedt32 e le autorizzazioni per i file NTFS in Esplora risorse.

Ho determinato le interfacce dell'editor di sicurezza NT 4 quando ho aggiunto la funzionalità di modifica della sicurezza degli oggetti al nostro strumento WinObj e ho usato le stesse interfacce per aggiungere modifiche di sicurezza a HandleEx. Ho finalmente deciso di pubblicare la mia documentazione in modo da poter aggiungere funzionalità native dell'editor di sicurezza alle versioni NT 4 delle proprie applicazioni.

Ottenere la documentazione dell'editor ACL di NT 4 all'indirizzo http://www.sysinternals.com/acledit.htm.
Scaricare WinObj all'indirizzo http://www.sysinternals.com/winobj.htm.

MAGLIETTE SYSINTERNALS

Se ti piacciono le informazioni tecniche e le utilità che ottieni in SysInternals, dillo al mondo indossando una maglietta di SysInternals. Le magliette sono in 100% cotone Hanes Beef-T' s, sono stampate in colori vivaci sia avanti che dietro e costano solo 14,95 dollari. Inoltre, 5 dollari di ogni vendita vanno all'American Cancer Society.

Per vedere e ordinare le magliette di SysInternals, visitare il sito http://www.sysinternals.com/tshirt.htm.

PIÙ SYSINTERNALS SU WWW.MICROSOFT.COM

Sono orgoglioso di poter affermare che il numero di articoli della Microsoft Knowledge Base che rimandano gli utenti agli strumenti di SysInternals continua a crescere. Ecco l'elenco delle aggiunte recenti che ho rilevato.

  • Q243583 PRB: Mib.bin causa l'esito negativo dell'installazione di Visual Studio http://support.microsoft.com/support/kb/articles/Q243/5/83.ASP
    Questo articolo consiglia l'uso di Filemon per rilevare gli errori di installazione di Visual Studio.

  • Q242131 HOWTO: visualizzare un elenco di processi con file aperti http://support.microsoft.com/support/kb/articles/Q242/1/31.ASP
    Microsoft consente agli utenti di ottenere HandleEx, un'utilità che mostra i file aperti dai processi.

  • Q232060 HOWTO: Guida alla risoluzione dei problemi di installazione di MDAC http://support.microsoft.com/support/kb/articles/q232/0/60.asp
    DLLView e HandleEx sono al centro dell'attenzione in questo articolo, che indica agli utenti di usare gli strumenti per individuare i processi che hanno DLL di Microsoft Data Access Component, in modo da poterli terminare prima di reinstallare MDAC.

  • Q245068 ERRMSG: accesso negato. Non si dispone di autorizzazioni o il file è in uso http://support.microsoft.com/support/kb/articles/q245/0/68.asp?lng=eng& sa=allkb
    NtHandle viene nuovamente citato in questo articolo, che spiega come determinare quale processo ha un file in uso quando si verifica un errore di eliminazione.

  • Q247957 SAMPLE: uso di DUPS.EXE per risolvere i problemi di compatibilità delle DLL http://support.microsoft.com/support/kb/articles/q247/9/57.asp
    Questo articolo fa riferimento a ListDLLs, DllView e HandleEx come strumenti che consentono di tenere traccia dei problemi di versione delle DLL.

Non solo SysInternals è stato citato in tutti questi nuovi articoli della Knowledge Base, ma Rick Anderson, l'autore dell'utilità DUPS presentata nell'ultimo articolo della Knowledge Base, fa riferimento a ListDLL nel suo articolo di MSDN News, "The End of DLL Hell". È possibile visualizzare l'articolo online in Microsoft qui: http://www.msdn.microsoft.com/isapi/msdnlib.idc?theURL=/library/techart/DLLdanger1.htm. L'attenzione che ListDLLs ha ricevuto in seguito a questo articolo mi ha spinto a portarlo su Windows 9x, quindi la versione 2.21 funziona su Windows 9x, Windows NT e Windows 2000.

Scaricare ListDLLs v2.21 all'indirizzo http://www.sysinternals.com/listdlls.htm.

RUBRICHE DI INTERNALS DI MARZO/APRILE

Nei numeri di marzo e aprile di Windows 2000 Magazine c'è la mia rubrica "Internals" in due parti sulla gestione dell'archiviazione di Windows NT e Windows 2000. Nella prima parte della serie descrivo il partizionamento dei dischi di NT 4, la configurazione avanzata dei volumi, l'assegnazione delle lettere di unità e l'architettura di archiviazione dei driver di dispositivo.

Nella seconda parte, invece, parlo delle modifiche di archiviazione presenti in Win2K, tra cui i nuovi driver di dispositivo per la gestione dell'archiviazione, il partizionamento dinamico dei dischi, il supporto per volumi avanzati che non richiedono riavvii per la riconfigurazione e i meccanismi di assegnazione delle lettere di unità di Win2K.

INFORMAZIONI SU INTERNALS

REPARSE POINT

Per qualche motivo le persone si entusiasmano sempre per i trucchi del file system e Windows 2000 ne include diversi nuovi. Prima di Windows 2000, tutti i file system Microsoft non avevano una funzionalità familiare agli utenti UNIX: il collegamento simbolico. I collegamenti simbolici consentono di creare un file o una directory che faccia riferimento a un altro file o directory in un'altra posizione nello spazio dei nomi del file system. Quando un'applicazione accede a un collegamento, accede effettivamente alla destinazione del collegamento. Ad esempio, se il collegamento C:\drivers fa riferimento alla directory C:\winnt\system32\drivers, un riferimento al nome file C:\drivers\ntfs.sys viene risolto in C:\winnt\system32\drivers\ntfs.sys.

NTFS versione 5, la revisione NTFS inclusa in Windows 2000, supporta un meccanismo denominato reparse point. Un reparse point è un blocco di dati associati a un file o a una directory che contiene un "tag" e le informazioni definite dal driver responsabile della gestione dei reparse point con tale tag. Microsoft definisce diversi tag predefiniti, inclusi i tag delle giunzioni e dei punti di montaggio. Quando NTFS rileva un reparse point durante la ricerca di un nome file, interrompe la ricerca e restituisce il codice STATUS_REPARSE al chiamante. I driver di filtro del file system e I/O Manager controllano i codici reparse che corrispondono al relativo tag e reagiscono in diversi modi. I reparse point della gestione dell'archiviazione gerarchica (HSM, Hierarchical Storage Management) indicano i file che il sottosistema HSM ha spostato nella risorsa di archiviazione remota (come un nastro); il driver del filtro di archiviazione remota (RsFilter.sys), ad esempio, estrae in modo trasparente i dati del file dalla risorsa di archiviazione remota, rimuove il reparse point e consente di riprovare la ricerca del file.

Un driver di filtro può anche modificare il nome del file aperto. I tag dei punti di montaggio rappresentano i punti di montaggio dei volumi e consentono di collegare tra loro i volumi all'interno dei relativi spazi dei nomi. È quindi possibile montare un volume contenente i documenti del progetto nella directory \projects dell'unità C:. Questa operazione organizza i dati del file system e consente di evitare di usare lettere di unità di tipo DOS.

Le giunzioni sono simili ai punti di montaggio, ma invece di collegare una directory a un volume, collegano le directory ad altre directory. Sono il supporto per i collegamenti simbolici di NTFS. A questo punto probabilmente ci si chiede perché Microsoft non ha incluso collegamenti simbolici basati su file. La risposta è che i collegamenti simbolici potrebbero causare problemi con le applicazioni Win32 esistenti.

Sebbene esistano molti comportamenti tipici delle applicazioni che potrebbero causare risultati imprevisti quando si usano file che sono in realtà collegamenti simbolici, l'eliminazione di un collegamento simbolico con un programma che non riconosce il collegamento è un esempio semplice. Si consideri un file archiviato in una posizione centrale a cui fanno riferimento diversi collegamenti simbolici. Un utente che elimina uno dei collegamenti probabilmente intende semplicemente eliminare il collegamento e non il file stesso. Tuttavia, se il programma non è a conoscenza dei collegamenti simbolici, non rileverà che il file è effettivamente un collegamento e richiede il comportamento desiderato. I problemi diventano più gravi quando un'applicazione crea file correlati a quello a cui fa riferimento tramite un collegamento: i file correlati devono essere archiviati nella directory in cui si trova la destinazione del collegamento o nella directory in cui risiede il collegamento simbolico?

Microsoft si è trovata ad affrontare un problema difficile e sono sicuro che esistono applicazioni che eseguono manipolazioni di file ancora più complesse che si bloccherebbero anche se si riuscisse a trovare una soluzione alternativa ai problemi che ho menzionato. Per questo motivo, penso che sia improbabile che vedremo mai collegamenti simbolici basati su file in Windows.

TABELLA DEGLI HANDLE DEL KERNEL

Gestione oggetti Win2K ha introdotto un nuovo tipo di tabella degli handle che migliora le prestazioni di determinati tipi di driver di dispositivo. Alcuni driver devono aprire gli handle per gli oggetti di sistema mentre sono in esecuzione nel contesto di sicurezza di un processo utente. I driver di dispositivo possono ignorare i controlli di sicurezza durante l'apertura degli oggetti, pertanto devono adottare misure per prevenire una falla di sicurezza che si verifica quando creano un handle per un oggetto sensibile nella tabella degli handle di un processo senza privilegi. I driver NT 4 per evitare i problemi di sicurezza devono accodare gli elementi di lavoro ai thread di lavoro eseguiti nel contesto del processo di sistema oppure usare l'API KeAttachProcess per passare alla tabella degli handle e allo spazio degli indirizzi del processo di sistema. Entrambe queste alternative possono compromettere le prestazioni, soprattutto se il driver deve eseguirle frequentemente.

La soluzione di Win2K a questo problema è costituita da un nuovo flag che un driver può passare in una struttura OBJECT_ATTRIBUTES quando apre un oggetto e ottiene un handle. Il flag non è documentato in DDK, ma è definito nel file di intestazione NTDEF.H come OBJ_KERNEL_HANDLE. Quando Gestione oggetti ha aperto l'oggetto specificato e crea un handle da restituire al chiamante, verifica se questo flag è presente. In tal caso, crea l'handle in una tabella degli handle denominata 'ObpKernelHandleTable' invece che nella tabella degli handle del processo attualmente in esecuzione. Gli handle restituiti da Gestione oggetti ai chiamanti che richiedono gli handle del kernel hanno il bit alto impostato, quindi tutti gli handle del kernel hanno valori maggiori di 0x80000000.

Ogni volta che a Gestione oggetti viene passato un handle, ad esempio in una chiamata a ObReferenceObjectByHandle, in cui deve convertire un handle in un puntatore all'oggetto sottostante dell'handle, verifica se il riferimento all'handle è un riferimento in modalità kernel e se è impostato il bit alto dell'handle. Per i riferimenti che corrispondono a questi criteri, Gestione oggetti cerca l'handle nella tabella degli handle del kernel anziché nella tabella degli handle del processo attualmente in esecuzione. Di conseguenza, un driver che fa riferimento agli handle del kernel per gli oggetti sicuri evita di subire un calo delle prestazioni e di causare problemi di sicurezza.

IMPOSSIBILE AVVIARE UNO O PIÙ DRIVER

Ecco un'interessante curiosità di Windows NT/2K. Quando durante l'avvio viene visualizzata una finestra di dialogo che indica che "Uno o più driver non sono stati avviati", è Service Control Manager (SCM) che determina e visualizza la finestra di dialogo.

Come fa SCM a sapere che un driver non è stato avviato? SCM analizza la chiave del Registro di sistema HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services durante l'inizializzazione, cercando i driver di dispositivo con valori Start che specificano che vengono avviati come driver di avvio o di avvio del sistema. Quando trova una voce, apre lo spazio dei nomi di Gestione oggetti e verifica se il nome del driver di dispositivo è presente nella directory \Drivers. Quando un driver di dispositivo viene avviato correttamente, I/O Manager inserisce l'oggetto driver nella directory \Drivers, quindi quando SCM non riesce a trovare il nome presuppone che il driver non sia stato avviato correttamente. È possibile visualizzare il contenuto della directory \Drivers usando WinObj.

Scaricare WinObj all'indirizzo http://www.sysinternals.com/winobj.htm.

I brevetti software sono stati oggetto di grande attenzione negli ultimi tempi. Sembra che l'Ufficio brevetti e marchi degli Stati Uniti stia concedendo brevetti anche alle "innovazioni" più ovvie e che le aziende stiano approfittando della politica liberale sui brevetti per bloccare la tecnologia chiave per il loro uso esclusivo. Microsoft non è nuova al gioco dei brevetti, ma ciò che molti non sanno è che Microsoft possiede brevetti per diverse idee chiave sviluppate con Windows NT. Ecco un elenco dei brevetti relativi al kernel che ho scoperto sul sito Web IBM Patent Server:

"Sistema per l'esecuzione di operazioni asincrone su file richieste da thread eseguibili mediante l'elaborazione di messaggi di completamento con diversi thread di coda e il controllo del completamento da parte dei thread eseguibili"
http://www.patents.ibm.com/details?pn=US05758184__

Questo brevetto copre le idee fondamentali alla base del meccanismo di sincronizzazione avanzato di NT chiamato porte di completamento. Le porte di completamento consentono ai processi di attendere in modo efficiente l'I/O su molti oggetti diversi e usano il supporto dell'utilità di pianificazione di Windows NT/2000 per consentire ai thread associati a una porta di completamento di utilizzare efficacemente un multiprocessore.
Per altre informazioni sulle porte di completamento, vedere http://www.sysinternals.com/comport.htm.

"Rappresentazione server di processi client in un sistema operativo per computer basato su oggetti"
http://www.patents.ibm.com/details?&p n10=US05187790

La rappresentazione è una potente funzionalità del modello di sicurezza di Windows NT/2000 che consente a un thread del server di adottare temporaneamente il contesto di sicurezza di un thread del client quando il server esegue attività per conto del client. Ciò consente al server di sfruttare facilmente il modello di sicurezza di Windows NT/2000 quando accede a oggetti protetti per un client. È un approccio intelligente, anche se non del tutto ovvio, alla sicurezza distribuita, di cui Microsoft detiene il brevetto.

"Sistema e metodo di creazione di oggetti attendibili in un sistema operativo per computer basato su oggetti"
http://www.patents.ibm.com/details?&p n10=US05057996

"Sistema di creazione condizionale di oggetti con diversi puntatori di oggetti per l'accesso a un set di oggetti di struttura dati"
http://www.patents.ibm.com/details?&p n10=US05129083

"Sistema e metodo di trasferimento di contenitori di oggetti in un sistema operativo per computer basato su oggetti"
http://www.patents.ibm.com/details?&p n10=US05129084

"Sistema e metodo di gestione degli oggetti temporanei in un sistema operativo per computer basato su oggetti"
http://www.patents.ibm.com/details?&p n10=US05136712

"Sistema e metodo di trasferimento di oggetti in un sistema operativo per computer basato su oggetti"
http://www.patents.ibm.com/details?&p n10=US05297283

Gestione oggetti di Windows NT/2000 implementa uno spazio dei nomi non dissimile dallo spazio dei nomi VFS (Virtual File System) presente nelle implementazioni UNIX. Alcuni dei brevetti ottenuti da Microsoft per Gestione oggetti sembrano davvero brevetti sulla progettazione orientata agli oggetti e molti sembrano sovrapporsi. Tuttavia, non sono un avvocato specializzato in brevetti, quindi questo potrebbe essere solo il mio modesto punto di vista.

Se si esaminano i brevetti, si trovano i nomi di diversi sviluppatori del kernel di Windows NT, tra cui David Cutler. È interessante notare che alcuni dei brevetti sono stati ottenuti per Digital Equipment Corp di Maynard, MA, da sviluppatori NT quando lavoravano su VMS, ma il processo di brevetto ha richiesto così tanto tempo che i brevetti li riportano come residenti a Redmond, WA.

SVILUPPI FUTURI

TDIMON

Avete mai desiderato osservare l'attività di rete TCP e UDP in tempo reale e sapere esattamente quali processi la stanno eseguendo? Continuate a seguire TdiMon, una potente aggiunta al toolkit di monitoraggio SysInternals.


Grazie per aver letto la newsletter Systems Internals.

Pubblicato da ottoh lunedì 27 marzo 2000 alle 19:09

[Archivio newsletter ^] [< Volume 2, Numero 1] [Volume 2, Numero 3 >]