Condividi tramite


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

Newsletter Systems Internals Volume 3, Numero 1

http://www.sysinternals.com
Copyright (C) 2001 Mark Russinovich


18 aprile 2001 - In questo numero:

  1. EDITORIALE

  2. NOVITÀ DI SYSINTERNALS

    • PsService v1.01
    • PsFile v1.0
    • PsExec v1.11
    • HandleEx v4.0
    • DebugView v4.11
    • Inside Windows 2000, 3rd Edition
    • Numero di febbraio di Windows 2000 Magazine
    • Sysinternals in Microsoft
  3. INFORMAZIONI SU INTERNALS

    • Scelte rapide da tastiera utili
    • Messaggi di debug di PnP
    • Sentenza sulla reverse engineering
    • Nuove chiamate di sistema di Windows XP
    • Rete disconnessa
    • WinDev
    • TechEd US
  4. SVILUPPI FUTURI

    • Approfondimento sulla prelettura in Windows XP

SPONSOR: WINTERNALS SOFTWARE ~~~~

La newsletter Sysinternals è 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 Winternals Software includono FAT32 per Windows NT 4.0, NTFSDOS Professional Edition (driver NTFS di lettura/scrittura per DOS) e Remote Recover.

Winternals è orgogliosa di annunciare Defrag Commander NE versione 1.2, una soluzione per la deframmentazione in ambito aziendale facile da usare e a costi contenuti, che aggiunge il supporto per NT 4 a quelli già esistenti per Windows 95/98/Me e Windows 2000. Defrag Commander NE sfrutta i deframmentatori incorporati di Windows 2000 e Windows 95/98/Me e aggiunge il proprio potente deframmentatore per Windows NT 4. È ora possibile gestire le pianificazioni della deframmentazione nell'intera azienda Windows da un semplice snap-in MMC, senza dover installare alcun software client nei sistemi NT o Windows 2000. È possibile acquistare online una licenza per 10 sistemi a soli 169 USD e sono disponibili sconti consistenti sulle quantità. Per altre informazioni, visitare http://www.winternals.com.

Ciao a tutti.

Benvenuti alla newsletter di Sysinternals. La newsletter conta attualmente 31.500 abbonati.

Uno dei primi elementi che si notano quando si installa una versione beta di Windows XP è l'interfaccia utente riprogettata, denominata Luna. La grafica di Luna caratterizza tutti gli aspetti dell'interfaccia, dal comportamento del menu di avvio alla struttura dei menu delle applicazioni e delle finestre di dialogo. Per ottenere questa conversione totale si usa un motore basato su "temi". I temi sono descritti nei file di stile del tema (file che terminano in .msstyles) e il file del tema Luna, luna.msstyle, si trova in \Windows\Resources\Themes\Luna. Nella stessa directory è presente una sottodirectory denominata Shell, in cui si trova il file shellstyle.dll. Non è chiaro in che modo XP usi la DLL: viene caricata da Esplora risorse e contiene un foglio di stile HTML, ma non esistono esportazioni. Poiché comdlg.dll e kernel32.dll la importano e ogni applicazione riceve una copia di queste DLL, ogni processo riceve anche una copia caricata di \Windows\System32\UxTheme.DLL, la libreria client dei temi. Questa DLL esporta funzioni come IsThemeActive, IsAppThemed, GetCurrentThemeName, DrawThemeBackground e GetThemeColor.

È nel Registro di sistema che viene specificato il tema corrente e configurata la diffusione del tema. Cercando in HKEY_CURRENT_USER\Software\Microsoft\Plus!\Themes si trova una chiave denominata Apply, dove sono presenti valori come "colors" e "icons" che specificano dove deve essere attivo il tema. Nella stessa chiave la sottochiave Current include il percorso del file con estensione msstyles per il tema corrente.

Dal momento che lo "skinning", ovvero l'applicazione di interfacce personalizzate, è diventato di moda per applicazioni come WinAmp e Windows Media Player, si suppone che Microsoft pubblichi uno strumento che permetta a terzi di sviluppare i propri temi, o almeno che documenti il formato del file .msstyles e della DLL shellstyle in modo che terzi possano sviluppare editor di temi. E invece non è così. In "Microsoft Windows XP: What's in It for Developers?" (Microsoft Windows XP: cosa c'è per gli sviluppatori?), disponibile online all'indirizzo http://msdn.microsoft.com/library/default.asp?URL=/library/techart/winxpintro.htm), Microsoft chiarisce di non avere alcuna intenzione di consentire temi di terze parti:

"A prima vista, il potenziale dei vari stili di Windows XP può sembrare simile alla funzionalità delle interfacce personalizzate di applicazioni come Windows Media Player, ma vi sono delle differenze. I temi modificano lo stile grafico del sistema operativo, ma offrono un'interfaccia utente coerente con le versioni precedenti di Windows. Questo aspetto è importante perché i temi vengono applicati a livello di sistema. Le modifiche applicabili a un'interfaccia personalizzata dell'applicazione, ad esempio la rimozione di pulsanti, non sono appropriate a livello di sistema operativo. I formati dei file dei temi non sono pubblici; Microsoft mantiene il controllo della progettazione dei temi, per assicurare un'interfaccia utente coerente e garantire la continuità della progettazione. In Windows XP non sarà disponibile alcun kit per gli sviluppatori di temi".

L'argomentazione che di sicuro viene addotta a favore di questa posizione è che i temi di terze parti potrebbero in qualche modo danneggiare l'interfaccia utente e che gli utenti si rivolgerebbero all'assistenza Microsoft per chiedere aiuto. Non è chiaro perché non abbiano lo stesso timore con Windows Media Player. Esistono comunque diversi modi per applicare effetti simili a quelli dei temi al desktop e alle applicazioni. Visitare http://www.wincustomize.com/ per trovare le interfacce personalizzate desktop di Windows, come la nuova interfaccia Aqua-Soft (un'interfaccia di WindowBlinds http://www.windowblinds.net) che applica a Windows l'aspetto del desktop OS X di Apple. E data la tenacia della community di appassionati di "skinning" nel provare ad applicare interfacce personalizzate a tutto il software rilasciato, ci sono sicuramente persone che in questo momento stanno eseguendo il reverse engineering del formato del tema di Microsoft. È solo questione di tempo prima che qualcuno rilasci un editor di temi, indipendentemente dai criteri di Microsoft in materia di controllo dei temi.

Cosa farà Microsoft quando inizieranno a comparire editor di temi per Windows XP e temi di terze parti? Non resta che aspettare e vedere, ma il comportamento di Apple potrebbe rappresentare un'anticipazione. Qualche giorno fa Apple ha inviato un ordine di cessazione e desistenza nei confronti di un'azienda che sviluppa un editor di temi per Mac OS: http://www.macworld.co.uk/news/main_news.cfm?NewsID=2773. Gli sviluppatori di temi facciano attenzione.

Invitiamo a inoltrare la newsletter ad amici che potrebbero essere interessati al contenuto.

Grazie.

- Mark

NOVITÀ DI SYSINTERNALS

PSSERVICE V1.01

Il Resource Kit di NT 4 e Windows 2000 include da sempre SC, un'utilità di controllo dei servizi da riga di comando. SC consente di visualizzare e modificare lo stato e la configurazione dei servizi Win32 nei sistemi locali o remoti. PsService è un clone freeware di SC che include alcune funzionalità aggiuntive.

La prima è che PsService consente di connettersi a sistemi remoti usando credenziali utente alternative. Questo risulta utile nei casi in cui l'account da cui viene eseguito non ha privilegi amministrativi per il sistema remoto, ma si ha accesso a un account che li ha. Il secondo è la funzionalità di ricerca di PsService. Se si è mai dimenticato in quale sistema della rete viene eseguito DNS, DHCP o un altro servizio, si troverà utile la funzionalità di ricerca, perché consente di visualizzare i computer che eseguono un servizio specificandone il nome.

PsService si basa sull'API di Service Control Manager, di cui è possibile trovare la documentazione completa in Platform SDK. PsService non richiede inoltre alcuna installazione di software client.

Scaricare PsService v1.01 all'indirizzo http://www.sysinternals.com/ntw2k/freeware/psservice.shtml.

PSFILE V1.0

PsFile è uno strumento creato in risposta alle richieste di una soluzione in grado di superare le limitazioni del comando "net file" di Windows NT/2K. È possibile usare il comando predefinito "net" in NT e Windows 2000 con l'opzione "file" per elencare i file aperti da altri computer in condivisioni esportate dal sistema. Tuttavia, il comando net tronca i nomi di percorso lunghi e funziona solo nel sistema locale.

PsFile usa le stesse API (precisamente l'API "Net", documentata in Platform SDK) del comando net, ma non tronca i nomi dei file e funziona sia in locale che in remoto, senza dover installare il software client.

Scaricare PsFile v1.0 all'indirizzo http://www.sysinternals.com/pstools.htm.

PSEXEC V1.11

PsExec è un'applicazione da riga di comando per Windows NT/2K che consente di eseguire programmi in sistemi remoti. Il punto di forza di questa applicazione è la possibilità di abilitare da remoto i programmi della console, in modo da poterli eseguire in modo interattivo. Ad esempio, se si avvia il file eseguibile del prompt dei comandi (cmd.exe) in un sistema remoto usando PsExec, si dispone effettivamente di una shell remota e non è necessario installare alcun software client.

Oltre a fungere da telnet leggero, PsExec consente di abilitare in remoto le applicazioni "solo locali". IpConfig, lo strumento predefinito che mostra la configurazione di rete di un sistema, non è in grado di visualizzare la configurazione di sistemi remoti. Con PsExec, tuttavia, è possibile avviarlo in remoto e visualizzarne l'output in locale.

In alcuni casi l'account in cui viene eseguita un'applicazione è importante. L'applicazione potrebbe dover essere eseguita nell'account in modo che le modifiche al Registro di sistema o ai file vengano apportate nel contesto di sicurezza corretto. In altri casi potrebbe essere preferibile eseguire l'applicazione in un account diverso da quello in cui si esegue PsExec e altre volte potrebbe essere necessario eseguire l'applicazione remota nell'account di sistema. PsExec supporta tutte queste situazioni.

Per impostazione predefinita, PsExec esegue programmi in un contesto di sicurezza "rappresentato". Questo significa che se si esegue PsExec nell'account dell'amministratore, il processo remoto verrà eseguito nell'account dell'amministratore. A causa delle restrizioni sul diritto di rappresentazione, il processo remoto non avrà accesso alle risorse di rete del sistema remoto. Se si specifica un nome utente e una password nella riga di comando di PsExec, PsExec avvia il processo remoto nell'account alternativo e il processo remoto ha accesso a tutte le risorse di rete accessibili da tale account. Infine, un'opzione della riga di comando consente di indicare a PsExec di eseguire il processo remoto nell'account di sistema, ovvero lo stesso account in cui vengono eseguiti i servizi Win32.

Scaricare PsExec v1.11 all'indirizzo http://www.sysinternals.com/ntw2k/freeware/psexec.shtml.

HANDLEEX V4.0

HandleEx è uno strumento versatile che mostra l'elenco dei processi attivi in un computer, nonché gli handle alle risorse del sistema operativo che hanno aperto e le DLL che hanno caricato. La funzione di ricerca e la presentazione dettagliata delle proprietà dei processi, degli handle e delle DLL rendono HandleEx lo strumento perfetto per individuare i problemi di versione delle DLL, le perdite di handle e il processo che sta accedendo a un particolare file o directory.

Se si seguono gli aggiornamenti di Sysinternals, si noterà che HandleEx ha saltato due numeri di versione principali negli ultimi mesi. Il primo aggiornamento principale, la versione 3.0, ha introdotto una serie di funzionalità come le icone delle applicazioni nella visualizzazione dei processi, le descrizioni comando per tutte le voci della visualizzazione elenco, un aggiornamento molto più efficiente e una funzione di ricerca migliorata in cui è possibile fare clic sulle voci dei risultati nella finestra di dialogo di ricerca e fare in modo che HandleEx passi all'handle o alla voce DLL appropriata.

Forse le funzionalità più utili per gli sviluppatori, tuttavia, sono l'evidenziazione degli aggiornamenti e l'evidenziazione delle DLL rilocate. Per evidenziazione dell'aggiornamento si intende il comportamento di HandleEx quando si aggiorna la visualizzazione. Nuovi elementi, inclusi processi, handle o DLL caricate, che non erano presenti prima dell'aggiornamento vengono evidenziati in verde, mentre gli elementi che non esistono più sono evidenziati in rosso. Oltre a segnalare visivamente le modifiche, questo consente di individuare con chiarezza le perdite di handle in corso, poiché i nuovi handle aperti sono visualizzati in verde dopo l'aggiornamento.

L'evidenziazione handleEx rilocata-DLL è correlata alla rilocazione della DLL, il termine che descrive il comportamento del caricatore di moduli in Windows in cui non può rispettare gli sviluppatori "indirizzo di base" preferiti specificano quando compilano una DLL. Il codice generato da un linker (lo strumento usato per la fase finale della compilazione di DLL o EXE) per una DLL include riferimenti alla memoria all'interno della DLL impostati presupponendo che il caricatore rispetti l'indirizzo di base della DLL. L'intervallo di memoria nel processo di caricamento di una DLL che inizia in corrispondenza dell'indirizzo di base e supporta le dimensioni dell'immagine DLL caricata deve essere libero per consentire il caricamento della DLL all'indirizzo di base preferito. Quando l'indirizzo di base viene rispettato per diversi processi, la memoria viene utilizzata in modo più efficiente perché tutti i processi condividono la stessa memoria del codice della DLL.

Quando il caricatore non riesce a rispettare l'indirizzo di base di una DLL, ad esempio quando un altro usa già l'intervallo di indirizzi desiderato, il caricatore deve eseguire la "rilocazione", che comporta l'aggiornamento di tutti i riferimenti alla memoria all'interno della DLL in modo da rispecchiare l'indirizzo di caricamento effettivo della DLL. Oltre a rallentare, di solito in modo impercettibile, il tempo di caricamento del processo, l'immagine DLL rilocata non può essere condivisa con altri processi in cui la DLL viene caricata nell'indirizzo di base preferito. Questo significa che in effetti è presente una seconda copia della DLL che consuma memoria.

In modalità DLL è possibile selezionare l'opzione "Highlight relocated DLLs" (Evidenzia le DLL rilocate), in modo che HandleEx mostri in giallo le voci delle DLL non caricate all'indirizzo di base preferito. Gli sviluppatori possono reimpostare gli indirizzi di base della DLL per evitare le rilocazioni.

Che dire del passaggio di HandleEx alla versione 4.0? Con la versione più recente di HandleEx è possibile visualizzare tutti gli handle anche nella piattaforma Win9x/Me. È ora possibile selezionare un processo e visualizzare gli handle aperti, in modo analogo a quanto avviene quando si esegue HandleEx in WinNT/2K/XP. Non solo. Analogamente a WinNT/2K/XP, la visualizzazione delle proprietà di eventi, mutex e semafori consente di ottenere informazioni sul relativo stato (bloccato, segnalato).

Scaricare HandleEx 4.0 all'indirizzo http://www.sysinternals.com/ntw2k/freeware/handleex.shtml.

DEBUGVIEW V4.11

DebugView è un'utilità per sviluppatori che consente di acquisire l'output di debug dalle applicazioni o dai driver nel sistema locale o da uno remoto, anche da più sistemi contemporaneamente. Quest'ultima versione aggiunge la compatibilità con Windows XP Beta 2, alcune funzionalità di usabilità e una funzionalità rivolta agli sviluppatori di driver di dispositivo in WinNT/2K/XP.

La finestra di dialogo di filtro di DebugView consente di definire e escludere maschere di filtro per restringere l'output di debug che si è interessati a visualizzare. Inoltre, è possibile specificare fino a cinque filtri di evidenziazione diversi, ognuno con un colore personalizzabile. In precedenza, per progetti che richiedevano filtri diversi, era necessario immettere nuovamente i filtri ogni volta che si cambiava progetto. Con DebugView 4.11 è possibile salvare i filtri in un file per ricaricarli rapidamente. Come in precedenza, all'avvio di DebugView risultano ancora impostati i filtri attivi prima dell'ultima chiusura dell'applicazione.

A volte è necessario acquisire una traccia di output di debug per un'analisi successiva o un confronto con altre tracce. Prima della nuova versione di DebugView l'unico modo per visualizzare un file di log consisteva nel caricarlo in un editor di testo, ma questo significava che non era possibile applicare filtri utili per l'evidenziazione. È ora possibile ricaricare un file di log di DebugView in DebugView e quindi visualizzare l'output nel modo in cui è stato acquisito in origine. L'uso di più finestre DebugView consente di confrontare le tracce.

L'ultima nuova funzionalità, ovvero la registrazione in fase di avvio, integra il supporto dei dump di arresto anomalo del sistema di DebugView in NT/Windows 2000. Con il supporto dei dump di arresto anomalo di DebugView si acquisisce l'output da un driver di dispositivo e se il driver arresta in modo anomalo il sistema e i dump di arresto anomalo del sistema (completo o kernel) sono abilitati, usare DebugView per estrarre l'output di debug del driver dal dump, consentendo di visualizzare l'output del driver fino al punto dell'arresto anomalo.

La registrazione in fase di avvio consente di acquisire l'output dai driver che vengono caricati durante il processo di avvio come driver di avvio o di avvio del sistema. Il driver di DebugView acquisisce e memorizza nel buffer fino a 1 MB di output di debug durante l'avvio dopo che è stata abilitata la registrazione in fase di avvio. Dopo che il sistema è attivo, eseguendo l'applicazione DebugView l'output memorizzato nel buffer viene importato per la visualizzazione. Se il driver si arresta in modo anomalo durante l'avvio e sono abilitati i dump di arresto anomalo del sistema, il supporto dei dump di arresto anomalo del sistema di DebugView consente di visualizzare l'output generato prima dell'arresto anomalo.

Scaricare DebugView v4.11 all'indirizzo http://www.sysinternals.com/ntw2k/freeware/debugview.shtml.

INSIDE WINDOWS 2000, 3RD EDITION

Il libro ufficiale sui componenti interni di Windows 2000 è ora disponibile! Questa edizione, di cui sono coautori David Solomon (www.solsem.com) e Mark Russinovich, è più ampia del 40% rispetto alla precedente, con una nuova trattazione di reti, plug-and-play, gestione dell'alimentazione, servizi, Registro di sistema, WMI, avvio e arresto e archiviazione. Include anche un CD con diversi strumenti avanzati, non disponibili altrove, per l'analisi dei componenti interni di Windows 2000.

Se si visita la pagina Amazon.com relativa al libro, http://www.amazon.com/exec/obidos/ASIN/0735610215/o/qid%3D957490318/sr%3D8-1/ref%3Daps%5Fsr%5Fb%5F1%5F1/103-5793119-3499040/systemsinternals/107-2386425-6078131, si noterà che sono state pubblicate solo due recensioni dall'uscita del libro a settembre. Se si è acquistato il libro, si invita a condividere le proprie opinioni con altri potenziali lettori.

È possibile consultare il sommario del libro e ordinarlo ora all'indirizzo http://www.sysinternals.com/insidew2k.htm.

NUMERO DI FEBBRAIO DI WINDOWS 2000 MAGAZINE

Il numero di febbraio di Windows 2000 Magazine ospita un articolo sull'analisi dei dump di arresto anomalo del sistema di NT/Windows 2000. Nell'articolo vengono illustrate le basi della configurazione dei dump di arresto anomalo e viene spiegato in che modo il sistema operativo crea un dump di arresto anomalo con suggerimenti sui motivi per cui un dump potrebbe non essere generato. Viene quindi spiegato dove reperire i più recenti strumenti di analisi dei dump e viene illustrato l'uso di una nuova e potente utilità di Microsoft, Kanalyze. Infine, viene illustrato brevemente l'uso di un debugger del kernel per esaminare un dump. Anche se solo una piccola parte dei dump ne rivela la causa con l'analisi, le informazioni dovrebbero risultare utili.

L'articolo è disponibile online facendo clic sul collegamento all'indirizzo http://www.sysinternals.com/publ.shtml, dove è possibile trovare i collegamenti a tutte le pubblicazioni di Sysinternals.

SYSINTERNALS IN WWW.MICROSOFT.COM

Dall'ultima newsletter, Sysinternals è comparso in altri articoli della Microsoft Knowledge Base (KB), portando a 17 il totale degli articoli in cui si fa riferimento agli strumenti di Sysinternals.

  • Q274038: PRB: Errore ASP 8002801d "Library not registered" (Libreria non registrata)
    http://support.microsoft.com/support/kb/articles/Q274/0/38.ASP
    Questo articolo rimanda gli utenti a Regmon per la risoluzione degli errori di Active Server Pages.

  • Q232830: HOWTO: Determine File Handle Ownership (Determinare la proprietà degli handle di file)
    http://support.microsoft.com/support/kb/articles/Q232/8/30.ASP
    Si vuole sapere in quale processo è aperto un file? Questo articolo della Knowledge Base rimanda l'utente a HandleEx.

  • Q2163868: PRB: Access Violation During Application Setup When File In Use (Violazione di accesso durante l'installazione dell'applicazione durante l'uso del file)
    http://support.microsoft.com/support/kb/articles/Q216/3/68.ASP
    Le applicazioni di installazione di Visual Basic possono arrestarsi in modo anomalo se un file che stanno provando a copiare è in uso. HandleEx è lo strumento ideale per individuare il processo che interferisce.

  • Q286198: HOWTO: Track "Permission Denied" Errors on DLL Files (Tenere traccia degli errori di autorizzazione negata nei file DLL)
    http://support.microsoft.com/support/kb/articles/Q286/1/98.ASP
    Usando Filemon (l'articolo cita anche Regmon) è possibile sapere quale processo di un'applicazione COM o MTS riceve un errore di accesso negato.

  • Q246199: BUG: Changed Locale Settings in Extended Stored Procedure May Cause Incorrect Results (Impostazioni locali modificate nella stored procedure estesa possono causare risultati non corretti)
    http://support.microsoft.com/support/kb/articles/Q246/1/99.ASP
    Questo articolo consiglia di usare ListDLLs per sapere quale versione della libreria di runtime C è in uso in SQL Server.

  • Q196453: Troubleshooting NTVDM and WOW Startup Errors http://support.microsoft.com/support/kb/articles/Q196/4/53.ASP (Risoluzione dei problemi relativi agli errori di avvio di NTVDM e WOW) Gli utenti che riscontrano problemi all'avvio delle applicazioni a 16 bit vengono indirizzati a Filemon per sapere quali sono i file a cui il sottosistema dell'ambiente a 16 bit (NTVDM) non riesce ad accedere.

INFORMAZIONI SU INTERNALS

SCELTE RAPIDE DA TASTIERA UTILI

Molti utenti probabilmente considerano il tasto Windows sulle tastiere più recenti come un tasto che occupa spazio. Era così anche per chi scrive fino a poco tempo fa, quando mi sono imbattuto in una scorciatoia da tastiera di Windows per un'operazione che eseguo di frequente, e ora il logo del tasto si sta staccando perché lo uso spesso. Ho pensato di condividere alcune scorciatoie da tastiera che trovo utili e che funzionano in tutte le versioni di Windows.

Azione Collegamento
Avvia Gestione attività Ctrl+Maiusc+Esc
Visualizza la finestra di dialogo Proprietà del sistema Windows+Interr
Riduce a icona tutte le finestre Windows+m
Ingrandisce tutte le finestre Windows+M
Apre Risorse del computer Windows+e
Cercare un file Windows+f
Apre la finestra di dialogo Esegui Windows+r

Dopo che li ho trovati a forza di tentativi, David Solomon mi ha fatto notare che sono documentati nella Guida di Windows 2000 in un articolo sulle scelte rapide da tastiera naturale.

MESSAGGI DI DEBUG DI PNP

Se si stanno sviluppando driver plug-and-play per Windows 2000, si potrebbe rimanere sorpresi nel sapere che è possibile indurre persino la versione retail di Windows 2000 a produrre messaggi dettagliati di debug del sistema plug-and-play durante il processo di enumerazione e di caricamento dei driver. Fare in modo che il debugger del kernel si interrompa all'inizio dell'avvio del sistema e impostare la variabile interna del kernel PnpEnumDebugLevel su 2 (la maggior parte dei messaggi si attiva con un livello 1). Ecco un esempio dell'output visualizzato, che mostra il caricamento del driver swenum (driver del bus di enumerazione software) da parte della gestione PnP:

.
IopCallDriverAddDevice: Processing devnode 0xfe503208
IopCallDriverAddDevice: DevNode flags going in = 0x000019
IopCallDriverAddDevice: Will load driver
IopCallDriverAddDevice: Opening registry key Root\SYSTEM\0000
IopCallDriverAddDevice:         Class GUID is {4D36E97D-E325-11CE-BFC1-08002BE10318}
IopCallDriverAddDevice: Unable to open GUID\Properties key {4D36E97D-E325-11CE-BFC1-08002BE10318} - 0xc0000034
IopCallDriverAddDevice:         Value Service [Type 1, Len 14] @ 0xe14ee82c
IopCallDriverAddDevice:                 Service Name swenum
IopCallDriverAddDevice:                 DriverName is \Driver\swenum
IopCallDriverAddDevice:                 Driver Reference 0xff3a8af0
IopCallDriverAddDevice: Adding Services (type 0)
IopCallDriverAddDevice: Adding Services (type 1)
IopCallDriverAddDevice: Adding Services (type 2)
IopCallDriverAddDevice: Adding driver 0xff3a8af0
IopCallDriverAddDevice:         Routine returned 00000000
.

SENTENZA SULLA REVERSE ENGINEERING

Chi segue Sysinternals sa che non abbiamo accesso al codice sorgente di Windows (a parte i file di origine dei driver forniti con il DDK) e che abbiamo affrontato le complessità dell'implementazione attraverso l'uso laborioso di SoftICE e di un disassemblatore personalizzato.

Ho visto un articolo, "Reverse Engineering: Funzione necessaria o attività illegale?" (http://www.planetit.com/techcenters/docs/security/news/PIT20010123S0001)che descrive una sentenza di gennaio dal 9° Tribunale del Circuito degli Stati Uniti d'Appello in un caso tra Sony e Connectix che interesserà quelli di voi che fanno allo stesso modo. Sony ha intentato una causa contro Connectix dopo che quest'ultima aveva sviluppato la sua "Virtual Game Station", un programma che consente di eseguire i giochi della PlayStation di Sony su un PC, e il tribunale ha stabilito che Connectix era in regola con la legge quando ha effettuato il reverse engineering della PlayStation (attraverso il disassemblaggio) in modo da consentirle di sviluppare il suo emulatore.

Nonostante l'ambito della legalità del reverse engineering, soprattutto se si considerano le licenze shrink-wrap che lo vietano, sia ancora vago, questo caso è a favore del reverse engineering.

AGGIORNAMENTI DEL KERNEL DI WINDOWS XP

A differenza del passaggio tra NT 4 e Windows 2000, il kernel di Windows XP ha subito modifiche più contenute, molte delle quali finalizzate a migliorare le prestazioni. Le API del kernel disponibili per gli sviluppatori di driver si sono arricchite di oltre 200 nuove funzioni del kernel esportate, colmando alcune lacune precedenti. Ad esempio, Filemon e altri strumenti di Sysinternals ottengono il nome del processo che sta eseguendo un'operazione accedendo al blocco di ambiente del processo non documentato: in Windows XP potranno chiamare PsGetProcessImageFileName. Sono disponibili più di 30 nuove chiamate Ps per ottenere e impostare gli attributi dei processi, nuove API per l'output di debug che consentono di classificare il tipo di output e il livello di debug e una nuova chiamata di sistema per salvare gli hive del Registro di sistema. Esistono anche alcune API come ZwQueryBootOptions, ZwSetBootEntryOrder e ZwDeleteBootEntry per modificare l'equivalente di Windows XP a 64 bit di Boot.ini, che invece di essere archiviato in un file, viene archiviato nella memoria non volatile.

Tuttavia, sono state apportate modifiche più significative oltre al kernel, la maggior parte delle quali si basa su driver di periferica o sul supporto del kernel. Ad esempio, esiste un servizio di ripristino del sistema che, con l'aiuto di un driver di filtro del file system (sr.sys), tiene traccia delle modifiche apportate ai file in modo da poter ripristinare il sistema a un punto precedente. È disponibile un driver di filtro per l'archiviazione denominato volsnap.sys che, insieme ai driver del file system, può eseguire una copia temporizzata di un volume. Viene offerto un servizio di cambio utente rapido che usa il supporto dei servizi di terminale integrato nel kernel per consentire l'accesso a più utenti e il passaggio da un utente all'altro, nonché un supporto API di deframmentazione migliorato fornito dai driver del file system.

Microsoft ha pubblicato un white paper, disponibile all'indirizzo http://www.microsoft.com/hwdev/Whistler/download/Whistler_kernel.zip., che descrive molti dei miglioramenti. Esistono diversi livelli di dettaglio, che lasciano senza risposta molte domande sull'implementazione e sul comportamento, ma si tratta di una recensione complessiva abbastanza positiva. Naturalmente, per rispondere ad alcune di queste domande si possono consultare le prossime newsletter e gli articoli di Sysinternals nonché i miei articoli sulla rivista Windows 2000.

RETE DISCONNESSA

Gran parte delle mie attività di sviluppo si concentrano su applicazioni abilitate per la rete, ma in Windows 2000 non è possibile testare tali applicazioni quando si avvia un computer disconnesso (come un portatile) nella configurazione predefinita. Questo perché lo stack TCP/IP non viene attivato a meno che il sistema non rilevi una connessione di rete. Questo significa, ad esempio, che i comandi dir \\laptop\c$ (dove "laptop" è il nome del computer) e ping 127.0.0.1 non riusciranno entrambi in sistemi disconnessi. Se si dispone di un computer basato su dominio, questo può anche causare spiacevoli ritardi durante l'avvio.

Esistono due soluzioni alternative. Una consiste nell'installare la scheda loopback Microsoft, ovvero una scheda di rete virtuale installabile tramite l'Installazione guidata hardware. Il secondo è quello di disabilitare il media sense, che impedisce al sistema di rilevare la disconnessione, impostando un valore del Registro di sistema come descritto nell'articolo Q239924 della Microsoft Knowledge Base: http://support.microsoft.com/support/kb/articles/Q239/9/24.ASP. Con uno di questi approcci lo stack TCP/IP risulta attivo anche nei sistemi disconnessi, consentendo di accedere al sistema locale tramite API di rete e percorsi UNC (come \\laptop\c$).

WINDEV

Windev, la conferenza per sviluppatori Windows, si terrà quest'anno a Boston tra l'11 e il 15 giugno. Saranno presenti tutti i nomi di punta nei settori della programmazione Win32, dei sistemi e di .NET, ed è l'unica volta quest'anno che si potrà partecipare a una sessione sui componenti interni di Windows 2000 presentata sia da David Solomon (www.solsem.com) che dal sottoscritto. Il primo giorno, Dave e io terremo insieme l'esercitazione "Inside Windows 2000 Fundamentals", della durata di un giorno. Inoltre, terrò una sessione sulla programmazione dei meccanismi di comunicazione interprocesso in Windows e una sulle novità di Windows XP.

Gli abstract dei miei interventi e il collegamento al sito web di Windev sono disponibili all'indirizzo http://www.sysinternals.com/ntw2k/info/talk.shtml.

TECHED US

TechEd è la principale conferenza di Microsoft, che negli ultimi anni ha attirato 10.000 persone e registrato il tutto esaurito. Quest'anno si terrà ad Atlanta, in Georgia, dal 17 al 21 giugno e, sebbene l'attenzione sia rivolta a .NET, Microsoft mi ha invitato a tenere le presentazioni "A Tour of Sysinternals Tools" e "Introduction to Windows NT/2000 Crash Dump Analysis". Parteciperà anche David Solomon, che parlerà della gestione della memoria e dell'interno dei processi e dei thread di Windows 2000.

Per chi è in Europa, David ed io presenteremo le stesse sessioni al TechEd Europe, che si terrà a Barcellona dal 3 al 6 luglio.

È possibile visualizzare i miei abstract e seguire il collegamento alla pagina iniziale del TechEd da http://www.sysinternals.com/ntw2k/info/talk.shtml.

SVILUPPI FUTURI

APPROFONDIMENTO SULLA PRELETTURA IN WINDOWS XP

Uno dei miglioramenti più evidenti di Windows XP è la velocità di avvio. La prelettura è alla base di questo miglioramento. XP monitora l'accesso al disco durante un avvio, archiviando le informazioni da usare nell'avvio successivo in cui vengono usati i dati per caricare le applicazioni in memoria prima di farvi riferimento. La prossima volta mi addentrerò nei meccanismi di prelettura per spiegare in che modo vengono implementati da XP.


Grazie per aver letto la newsletter di Sysinternals.

Pubblicata da ottoh mercoledì 18 aprile 2001 alle 19:04

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