[電子報封存 ^][< 第 3 卷,第 2 期][第 4 卷,第 2 期 >]

Systems Internals 電子報第 4 卷第 1 期

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


2002 年 1 月 7 日 - 本期內容:

  1. 社論

  2. SYSINTERNALS 最新動向

    • Sync v2.1
    • DiskExt v1.0
    • NTFSDOS v3.02
    • PsSuspend v1.2
    • PsLogList v2.2
    • PsInfo v1.2
    • PsExec v1.3
    • BgInfo v2.0
    • Process Explorer v5.2
    • Filemon v4.34 for Win64/Itanium
    • Filemon v1.1 for Linux
    • Microsoft 的 Sysinternals
  3. 內部資訊

    • 《Inside Windows 2000》,互動式 DVD
    • 在 Windows 2000/XP 內:研討會
    • Windows XP 資訊清單檔案
    • X-Box 中有哪些功能?
    • 隨機 Windows XP 統計資料
    • 新改進的 Windbg
  4. 下期内容預告

    • 使用 BootVis 來分析 Windows XP 開機程式

贊助者:WINTERNALS SOFTWARE

Sysinternals 電子報由 Winternals Software 贊助,該公司的網址為 http://www.winternals.com. Winternals Software 是一家先進的開發公司,提供諸多適用於 Windows NT/2K/XP 的進階系統工具。 他們的產品包括獲獎的 Administrator's Pak、ERD Commander 2000 和 NTFSDOS 專業版。

Winternals 自豪地宣佈 Defrag Commander 1.32 版本上市,這是最快速、最徹底的企業級磁碟重組程式。 現在,只需一個簡單的 MMC 嵌入式管理單元即可管理企業級 Windows 的磁碟重組排程,甚至不需要在 NT 或 Windows 2000 系統上安裝任何用戶端軟體。 若線上購買,10 套系統授權費僅需 $169 美元,量大從優。 請瀏覽 http://www.winternals.com/39 了解詳細資訊,或下載並免費使用 30 天。

大家好,

歡迎閱讀 Sysinternals 電子報。 本電子報目前有 34,000 名訂閱者。 請將電子報轉發給您認為可能對其內容感興趣的朋友。

微軟旗艦作業系統 Windows XP 在 8 月下旬「熱銷」。 Windows XP 是 1993 年從 Windows NT 3.1 開始的 Windows NT 最新版本,它以過去八年的技術演進和創新為基礎。 作業系統在功能和特性方面當然代表著時代尖端,有許多內容大衛·所羅門和我在 12 月的 MSDN 雜誌文章《Windows XP:Kernel Improvements Create a More Robust, Powerful and Scalable OS》中研究和發表過。 http://www.msdn.microsoft.com/msdnmag/issues/01/12/XPKernel/XPKernel.asp

而且,隨著數百萬個已安裝的 Windows NT 和 Windows 2000 系統,以及數十萬或數百萬個 Beta 測試人員,您預期 Microsoft 已調校、調整和修正 Windows XP,使其幾乎完美無瑕地執行。 畢竟,他們的廣告吹捧 XP 是「幾乎不會當機」。 我當然沒想到會遇到問題, 但我錯了。

我在整個 XP Beta 和發行候選週期中,將 Windows 2000 Professional 保留為主要系統上的作業系統。 我從 Windows 2000 開發週期瞭解到,即使在升級至最終位之後,發行候選項目也會留下偵錯十字。 當我收到組建 2600 時,最後一個版本來自 Beta 程式,我認為該採取行動了。 XP 相容性精靈只會在 Windows 2000 系統上發現次要問題 (例如我已安裝的 Partition Magic 版本不認得 XP NTFS),因此我繼續進行升級路徑。

在文字模式中執行並將安裝程式檔案安裝到我的硬碟之後,XP 安裝程式會重新開機到部分升級的 Windows XP 安裝,以在圖形模式中完成升級。 在此模式中,您可以指定地區設定和時區設定、安裝程式執行裝置偵測,以及設定網路。 一切都進行順利,直到「安裝裝置」階段。 當進度列達到大約 2/3,而安裝程式報告剩餘的時間是 34 分鐘時,安裝程式已經沒有動靜。 「XP 是你有史以來最好的東西」橫幅繼續交替出現, 右下角的閃爍小按鈕繼續旋轉, 但過了兩小時後,我仍然還需要 34 分鐘才能完成。

那時我開始擔心了。 我竭盡全力解決問題,包括重新開機,讓安裝程式再試一次,更新 BIOS,查閱 MS 知識庫 (什麼都沒找到),這樣瘋狂地嘗試了幾個小時,結果完全無效。 我終於屈服了,取消了一半 Windows 2000、一半 Windows XP 的安裝計畫,並執行 XP 的全新安裝,幾乎花了一整天重新安裝我使用的幾十個應用程式。

新 XP 安裝的情況很好。 這不是說我不曾對無法解釋的當機、GUI 的浮誇和其他奇怪的系統行為感到失望,但至少我可以保有生產力。 我知道 Beta 程式 CD 是試用 CD,當我透過 MSDN 收到它時,我必須升級為完整版本,但我預期不會有問題。

就在我中止升級後的 120 天 (試用版到期,並非巧合),我竟然感受到似曾相識的感覺,令人難以置信。 試用版到完整升級實際上會作為完整升級,而且 (您猜對了) 以還有 34 分鐘和進行了 2/3 的方式進入「安裝裝置」,安裝程式再無進展。 我的系統再度處於「安裝中」的暗黑世界,完全無法使用。 在嘗試了 120 天前試過的一切方法之後,我只能投降,再完整重新安裝一次。

然後我遇到另一個問題:MSDN XP CD 無法開機,因為它同時具有 Home 和 Professional 子目錄。 因為我只有安裝一個作業系統 (已被安裝程式損毀),我無法從 MSDN CD 執行 Win32 版安裝程式,而且因為我的系統僅支援 NTFS,我無法執行 DOS 安裝程式。 CD 也沒有提供製作安裝開機磁碟片的方法。 我記得 MSDN 訂閱者下載有 Windows XP Professional 的 ISO 映像,所以我 (使用另一個系統) 取得它,以燒錄可開機的 CD,但這一途徑由於「開機檔案傳輸管理員時發生錯誤」而挫敗。 請稍後再試一次。」來自 MSDN 網站的錯誤訊息。

我如何讓自己擺脫困境? 我已將中止升級的登錄區取代為幾個星期前建立備份的登錄區。 雖然我在重新開機後無法登入系統,因為 Windows 產品啟用表示無法驗證我的授權,但我可以開機進入安全模式,並從該處執行 MSDN CD 安裝程式。 我剛完成重新安裝應用程式,而且能夠再次擁有生產力。

我從我的遭遇 (發生了兩次) 中非常驚訝地發現: Windows XP 安裝程式沒有自 Windows 95 以來在 Windows 9x 安裝程式中就已存在的基本安全機制。 當 Windows 95、98 或 Me 安裝程式執行時,會將進度點記錄到磁片。 如果安裝程式意外中斷,它會在中斷的位置重新開機,如果它處於「安裝裝置」階段,則會略過它之前執行的最後一個驅動程式。 如此一來,如果安裝程式停止回應,您可以將系統重新開機,而安裝程式將會在停止回應點之後進行。

Windows 2000 和 XP 從 Windows 9x 行借鑒了許多不錯的功能,例如安全模式和系統還原。 我希望他們會從 Windows 9x 安裝程式借鑒一些功能。

談到升級至 XP,幽默專欄作家戴夫·巴里正在考慮跳槽:http://www.miami.com/herald/special/features/barry/2002/docs/jan06.htm 。

感謝您!

-標記

SYSINTERNALS 最新動向

SYNC V2.1

「Sync」是一個小程式,可將快取的資料排清回磁片,是 Unix 系統上的核心系統公用程式,幾年前我撰寫了適用于 Windows NT/2000/XP 的 Sync。 在退出媒體之前,確認修改已反映在可讀寫的卸載式媒體上,這是 Sync 允許您執行的動作。 當您運行您正在開發的驅動程式 (可能會損毀系統) 之前執行這個程式,也有助於減輕磁碟損壞情況。 最近有人建議,如果 Sync 能選擇在排清之後退出媒體,那麼在 v2.1 中引進,那就太好了。

下載 Sync v2.1:
http://www.sysinternals.com/ntw2k/source/misc.shtml

DISKEXT V1.0

本電子報中涵蓋的另一個磁片相關工具是 DiskExt,這是一個命令列小程式,已知磁碟區的磁碟機編號,它能告訴你組成磁碟區的磁碟分割的位置;多重分割磁碟區,包含跨越、鏡像和等量磁碟區。 DiskExt 也會報告其所列出的磁碟分割區的位置 (以它們占用的磁區表示)。

下載包含完整原始程式碼的 SDelete v1.0:
http://www.sysinternals.com/ntw2k/source/misc.shtml#diskext

NTFSDOS V3.02

NTFSDOS,在數以十萬計的使用者電腦上啟動 Sysinternals 的公用程式 (在 NTFSDOS 發行時稱為「Ntinternals」) ,允許 DOS 讀取 NTFS 磁片磁碟機。 Windows XP NTFS 磁片結構的微小變更需要調校 NTFSDOS 以取得 XP 相容性。

下載 NTFSDOS v3.02:
http://www.sysinternals.com/ntw2k/freeware/NTFSDOS.shtml

PSSUSPEND V1.2

您是否曾經想要暫時暫停網路下載、磁片搜尋或其他需要大量資源的應用程式,以便執行其他程式? 暫止是 Windows NT/2000/XP 中系統管理工具嚴重缺少的一項程式管理功能。 PsTools 工具集的最新新增項目是 PsSuspend,這是暫停和繼續進程的公用程式。 如同 PsTools 套件中的所有其他工具,PsSuspend 是命令列工具,您可以在本機系統或遠端系統下達指令。

因為 Windows NT/2000/XP 中沒有暫止進程功能 (在 XP 中有,但並未透過 WIN32 API 的形式公開),所以 PsSuspend 會使用 Win32 SuspendThread 和 ResumeThread API,暫停並恢復在目標進程中執行的執行緒。

下載 PsSuspend v1.2:
http://www.sysinternals.com/ntw2k/freeware/pssuspend.shtml
下載整個 PsTools 套件:
http://www.sysinternals.com/ntw2k/freeware/pstools.shtml

PSLOGLIST V2.2

撰寫 PsTools 套件的工具會根據使用者意見反應持續演進,而 PsLoglist 所產生的功能要求比任何其他公用程式都多。 這個最新版本引進了一些增強功能,包括能夠傾印儲存的事件記錄檔中的記錄、將單行格式分隔符號從逗號變更為其他專案 (針對事件記錄檔文字包含逗號的情況)、從指定的日期範圍傾印記錄,以及篩選事件種類(錯誤、警告或資訊)。 同樣地,PsLoglist 可以傾印本機或遠端系統事件記錄檔,並具有許多其他控制其作業的選項。

下載 PsLogList v2.2:
http://www.sysinternals.com/ntw2k/freeware/psloglist.shtml
下載整個 PsTools 套件:
http://www.sysinternals.com/ntw2k/freeware/pstools.shtml

PSINFO V1.2

PsUptime 是一個已淘汰的 PsTools 公用程式,它是一個小程式,會報告本機或遠端系統已啟動的時間長度。 這並不是說資訊沒有用處,而是更適合由相對 PsTools 更新穎的 PsInfo 來顯示。 因此,PsInfo v1.2 現在會報告系統執行時間,以及其他資訊,例如作業系統版本、處理器速度、記憶體大小、Hotfix 安裝、作業系統是否為試用版,以及 Windows XP 上 Windows 產品啟用的狀態。

下載 PsInfo v1.2:
http://www.sysinternals.com/ntw2k/freeware/psinfo.shtml
下載整個 PsTools 套件:
http://www.sysinternals.com/ntw2k/freeware/pstools.shtml

PSEXEC V1.3

PsExec 是命令列公用程式,可讓您在遠端系統上執行程式,而不需要在該系統上安裝任何軟體。 如果您執行的程式有命令列介面,則 PsExec 會為您代理該介面,讓您以互動方式執行,就像在本機執行程式一樣。 這些功能可讓 PsExec 成為方便的輕量型遠端殼層類型公用程式,並可讓您輕鬆地遠端啟用命令列程式,例如 ipconfig。

PsExec 1.3 版可讓您在遠端系統上啟動 Windows 應用程式 (與命令列相反),使其顯示在互動式桌面上。 我不確定這在哪裡有用,但我收到對這項功能的數個要求。

下載 PsExec v1.3:
http://www.sysinternals.com/ntw2k/freeware/psexec.shtml
下載整個 PsTools 套件:
http://www.sysinternals.com/ntw2k/freeware/pstools.shtml

BGINFO V2.0

如果您管理多個系統,則您聊解什麼是「系統混淆」,亦即當您走向電腦 (或切換至 KVM 上的電腦),卻忘記電腦的名稱、作業系統版本、已安裝的 Service Pack 或 IP 位址時的心態。 雖然這些資訊都可以透過各種系統管理介面存取,但取得資訊可能相當耗時。 這就是 Bryce Cogswell 的 BgInfo 的切入點:它會顯示您在桌面背景上找到最重要的系統資訊,讓您立即擁有所需的所有資訊。

這個 BgInfo 的最新更新可讓它比以往更容易設定。 您可以在登錄機碼中定義自訂文字、指定桌面背景色彩或點陣圖、找出背景上的文字等等。 不過,對於大型組織來說,最有用的是 BgInfo 能夠儲存和載入設定,甚至將其匯出至資料庫。 您可以使用其中一項功能來定義設定一次,然後在您管理的所有系統上使用這些設定。

下載 BgInfo v2.0:
http://www.sysinternals.com/ntw2k/freeware/bginfo.shtml

PROCESS EXPLORER V5.2

Process Explorer 是進程檢視器和控制公用程式,可挑選 Task Manager 離開的位置。 在其廣泛的功能清單中,Process Explorer 會顯示進程建立樹狀結構、顯示進程已開啟的控制碼、列出處理常式已載入的 DLL (和其他記憶體對應檔案),並可讓您搜尋已開啟特定檔案的進程。

Process Explorer 過去的版本同時適用于 Windows 9x 和 NT/2K/XP 系統,但只有 Process Explorer 5.2 版會顯示 Windows 9x 系統的進程 CPU 使用量資訊。 v5.2 的另一項增強功能可報告進程在進程屬性對話框中開啟的 GDI 和 USER 句柄數目,協助追蹤 Windows XP 和 2000 系統上的流失。 與大眾信念相反,即使在 Windows 2000 和 XP 上,這類資源的數目也有限:系統限制為 65,536 個使用者控制碼,且每個進程限制為 16,384 個 GDI 控制碼。

下載 Process Explorer v5.2:
http://www.sysinternals.com/ntw2k/freeware/procexp.shtml

FILEMON V4.34 FOR WIN64/ITANIUM

Microsoft 親切地從 Intel 借給我一個早期的 Itanium 方塊,這樣我就可以開始將最受歡迎的 Sysinternals 應用程式移植到 Win64/Itanium。 此方塊令人印象深刻:它有 2733 MHz 處理器和 8 GB 的記憶體。 我決定將 Filemon 作為第一個要移植的應用程式。 Filemon 包含 Win32 (現在是 Win32/64) GUI 和裝置驅動程式,因此需要兩個不同的移植工作。 有些意外的是,您在執行 Windows NT、2000 或 XP 的 32 位系統上,使用跨編譯器建置 Win64 應用程式和 64 位驅動程式。

最新版的平臺 SDK (可從 Microsoft 免費下載:http://www.microsoft.com/msdownload/platformsdk/sdkupdate/) 包含包含 64 位 Itanium 編譯器和連結器、Win64 標頭檔及 Win64 程式庫的子目錄。 我做了這個簡單的批次檔,以設定我的環境來建置 Win64 可執行檔:

@echo off
set PATH=D:\Mssdk\Bin\win64;%PATH%
set INCLUDE=D:\Mssdk\include\win64;D:\Mssdk\include\win64\crt
set LIB=D:\Mssdk\lib\ia64
echo 64-bit environment set.

請注意,您無法從 Visual Studio 建置 Win64 應用程式,而必須從命令列進行。

一些次要的轉型問題是我在編譯期間唯一遇到的問題。 接下來,我建置了驅動程式。 最新版的 DDK (不再以免費下載的形式提供) 包含已設定 IA64 驅動程式建置環境的命令提示字元快速鍵。 您只需在 64 位目標環境中建置驅動程式,就像是 32 位驅動程式一樣。

編譯器通知我,我需要更明確的一些強制轉型。 例如,Filemon 指派給作業的序號是 ULONG,編譯器不會讓我強制轉型成 PVOID,並做為內容參數傳遞至 I/O Manager 函式 IoSetCompletionRoutine。 相反地,我必須先將它強制轉型成 ULONG_PTR,然後強制轉型成 PVOID。 在任何情況下,驅動程式可以在幾分鐘內編譯完成,而不會發生錯誤。

接下來,我將 64 位應用程式和驅動程式複製到 Itanium 系統,並直接執行它。 Filemon GUI 隨即出現,然後消失了。 這表示我必須使用 Win64 偵錯工具來找出錯誤。 Win64 偵錯工具也隨附于平臺 SDK 中,您可以從 32 位或 64 位機器執行它。 它看起來像一個精簡版的 Visual Studio 偵錯工具,而且只適用于遠端模式,您可以在執行應用程式的目的電腦上安裝偵錯用戶端程式。

在逐步執行 Filemon 的程式碼半小時左右之後,我終於意識到,我的 Windows 程式需要將其 lparam 參數宣告為 LPARAM,它們原本屬於 LONG 型態,因為有些程式碼是我們在 1996 年撰寫 Filemon 的第一個版本時,從 SDK 複製回來的。 有趣的是,編譯器沒有抱怨過這個問題,但表示任何以 lparam 形式傳遞的指標都會遭到截斷。 這會顯示在 Filemon 的 WM_MEASUREITEM 處理常式中,它會將 lparam 參數解譯為結構的指標。 Filemon 在該程式碼中有錯誤。 令人驚訝的是,當我把問題修正後,Filemon 在 Itanium 上完美無瑕地運行。 移植總計時間:1 小時。

我現在正著手移植 Regmon,然後移植 DebugView。 這兩者都應該具有挑戰性,尤其是具有相當非正統驅動程式的 DebugView。

在 http://www.sysinternals.com/ntw2k/source/filemon.shtml 下載具有完整原始碼的 Filemon

FILEMON V1.1 FOR LINUX

如果您在過去幾個月中瀏覽過 Sysinternals,您可能會震驚地看到功能表列上的新專案:Linux 公用程式。 沒錯,我認為讓 Filemon 在 Linux 上執行會相當整潔。 我已經在 Windows 上使用 Borland 的 Delphi 快速應用程式開發 (RAD) 環境,所以當 Kylix 發行時 (基本上是 Delphi for Linux),我意識到 GUI 會相當直接。

剩下的問題是如何攔截檔案系統活動。 大部分的 Unix 版本 (包括 Linux) 會實作名為 ptrace() 的系統呼叫,讓進程攔截目標進程進行的所有系統呼叫。 我考慮使用 ptrace() 來監視檔案系統活動,並可能在未來修改 Filemon 以便使用,其原因日後將變得清楚,但我決定不這麼做。

使用 ptrace() 的缺點是 Filemon 必須列舉所有執行中的進程,並針對每個進程執行 ptrace()。 此外,它也必須附加至新建立的進程,而且 ptrace() 功能無法確認新進程執行的第一個系統呼叫不會被遺漏。 當追蹤的進程執行系統呼叫時,作業系統會將其封鎖,將訊號傳送至追蹤進程,並等候追蹤程式讓進程繼續。 如果您想要查看所有檔案系統活動,可能會嚴重降低效能。 最後,最大的缺點是 ptrace() 會改變被追蹤進程的行為。 追蹤這些進程時,追蹤程式是父進程,這表示被追蹤進程的實際父代將不會看到其子進程造成的通知 (通常父代能看到)。

如果我可以撰寫檔案系統篩選驅動程式 (Linux 術語中的堆疊驅動程式),例如 Windows NT/2000/XP 中的 I/O 管理員支援,但目前的 Linux 檔案系統架構不支援可堆疊檔案系統驅動程式,那就太好了。 有一個稱為 FiST 的修補程式,您可以套用以支援它 (http://www.cs.columbia.edu/~ezk/research/fist/) ,還有適用于 Linux 的追蹤工具組 (http://www.opersys.com/LTT/index.html),但兩者都需要使用者重新編譯其核心,這是我想避免的。 因此,我決定使用系統呼叫攔截驅動程式來實作監視,就像 Regmon 在 Windows 上運作一樣。

有兩個問題讓專案比在 Windows 上做同樣的事情更困難。 第一個是 Linux 之父和 Linux 核心開發主管 Linus Torvalds 不相信核心偵錯工具。 原因相當荒謬 (請參閱 http://www.lib.uaa.alaska.edu/linux-kernel/archive/2000-Week-36/0575.htm | 以閱讀 Linus 自己的解釋),這是 Linux 核心很難跟上 Windows 的幾個原因之一。 有幾個非官方核心偵錯工具存在,但它們需要您修補核心,並且需要一些功夫才能使用。 第二個問題是,Linus 不認為發布新的核心版本時,需要保證與裝置驅動程式的回溯相容性。 其後果是,任何匯出的核心 API 可能會突然變更,中斷使用 API 的現有驅動程式,並要求重新編譯新的核心。

缺少內建的核心偵錯工具意味著我透過偵錯列印語句進行偵錯 (我想學習透過 printk 的–kernel-mode prints 進行偵錯的時間,與安裝和學習核心偵錯工具一樣多),而核心 API 和資料結構的改變表示 Linux 的 Filemon 是核心相依的。 它適用于壓縮包裝的 Red Hat 7.1 和 7.2 和 SuSE Linux 7.1 和 7.2,而且可能在其他商業散發套件上運作,但我尚未設計出一種方法來隔離驅動程式與任意核心變更 (中斷早期版本的驅動程式是將核心函式的呼叫慣例從標準變更變更為快速呼叫)。

Filemon for Linux 與其 Windows 對應程式完全相同,看起來非常類似 (請參閱 Filemon for Linux 的 Filemon 頁面的螢幕擷取畫面)。 我對於針對 Linux 開發一般非核心相依檔案系統篩選器的簡單結論應該很清楚:就算不是不可能,也很困難。 相較之下,Windows NT I/O 架構從一開始就支援每個驅動程式網域中的可堆疊 (篩選) 驅動程式 (網路、檔案系統、儲存體、輸入等)。

在 http://www.sysinternals.com/linux/utilities/filemon.shtml 下載 Filemon for Linux

SYSINTERNALS AT WWW.MICROSOFT.COM

重申一下,以下是自上期電子報以來發行的 Microsoft 知識庫文章中 Sysinternals 參考内容的最新一期。 請注意,其標題中甚至有 Filemon。 知識庫中對 Sysinternals 的引用總次數達到了 31 次。 您可以在 http://www.sysinternals.com/ntw2k/info/mssysinternals.shtml 找到完整的清單

  • 安裝期間發生嚴重例外狀況錯誤訊息 http://support.microsoft.com/support/kb/articles/Q273/9/18.ASP

  • FP2000:資料庫驅動程式類型清單的檔案是空的 http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q308935

  • HOWTO:針對錯誤 1928「註冊 COM+ 應用程式時發生錯誤」進行疑難排解; http://support.microsoft.com/default.aspx?scid=kbEN-US;Q308940

  • PRB:搭配 ADO 使用 #import 時與 EOF 衝突 http://support.microsoft.com/support/kb/articles/Q166/1/12.ASP

  • PRB:呼叫 CoFreeUnusedLibraries 之後未卸載 DLL http://support.microsoft.com/support/kb/articles/Q301/3/57.ASP

  • PRB:錯誤80004005「Microsoft Jet 資料庫引擎無法開啟檔案 '(未知)'」http://support.microsoft.com/support/kb/articles/Q306/2/69.ASP

  • PRB:FileMon 顯示 DAO360.dll 無法載入 MSJet49.dll、MSJet48.dll 和其他 MSJetxx.dll 檔案 http://support.microsoft.com/support/kb/articles/Q306/3/86.ASP

  • SMS:軟體清查代理程式產生無效的分頁錯誤訊息 http://support.microsoft.com/support/kb/articles/Q302/6/51.ASP

內部資訊

《Inside Windows 2000》,互動式 DVD

如果您錯過了 INSIDE Windows 2000 的特殊發行前定價,Windows 2000 內部的互動式 DVD 教學課程,我們有好消息! 950 美元的入門價格仍可供使用,降幅超過標準單一使用者價格的 25%。 若要立即訂購,或如需 David Solomon 和 Mark Russinovich 這一令人興奮的新產品的進一步資訊,請前往 http://www.solsem.com/dvd.html. 也可以網路散發格式提供內部網路串流!

紀念日期:魯西諾維奇和所羅門再次在西雅圖和波士頓教

我們上個月在奧斯丁所舉行為期 3 天的 Windows 2000/XP 內部課程非常賣座,因此我們已經安排另外兩個供應專案:西雅圖附近的 4 月 17 日至 19 日和 6 月 12 日至 14 日在波士頓 (註冊即將開放)。 類別是以「內部 Windows 2000,第三版」為基礎,涵蓋環境子系統、系統呼叫分派、系統線程、啟動和關機、登錄內部、進程和線程排程、記憶體管理、安全性、I/O 系統、記憶體、NTFS 和快取管理員。 藉由瞭解 Windows XP 和 2000 的內部工作,您可以更有效地利用平臺,更有效率地對問題進行偵錯和疑難解答。 如需詳細資訊,請參閱 http://www.sysinternals.com/seminar.shtml

Windows XP 資訊清單檔案

Windows XP 中最明顯的變更之一是 Luna 桌面所提供的新外觀和風格。 Luna 實際上是一個「主題」,而且如果您執行的應用程式不是主題感知的應用程式 (任何未特別撰寫以利用 Windows XP 主題的應用程式),則應用程式具有較舊的 Windows 2000 樣式外觀和風格。 不過,即使沒有原始程式碼,您也能讓較舊的應用程式擁有全新的外觀。 只要為應用程式建立 XML 資訊清單檔,告知 Windows XP 載入器該應用程式想要使用 Common Control 第 6 版 DLL (comctl32.dll in %SystemRoot%\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1 df_6.0.0.0_x-ww_1382d70a),而不是 %SystemRoot%\System32 中的非主題感知版本。 以下是讓 Process Explorer v5.2 主題感知的資訊清單檔案:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly
xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
name="Process Explorer"
processorArchitecture="x86"
version="5.1.0.0"
type="win32"/>
<description>Process handle and DLL viewer</description> <dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>

變更您想要讓主題感知之應用程式的應用程式名稱、版本和描述,然後儲存檔案,使其名稱與應用程式的可執行檔相同,但附加 「.manifest」 除外,例如 procexp.exe.manifest。 如果您是應用程式的開發人員,您可以在應用程式的資源中內嵌資訊清單檔,就像使用 Process Explorer 一樣。 如需如何執行此動作的範例,請參閱 Filemon 的原始程式碼。

X-Box 中有哪些功能?

如果您最近有關注主控台遊戲世界,您一定知道 Microsoft 的新 X-Box 主控台正在執行 Windows 2000 的修改版本。 在 Microsoft 進行我們第 4 版書籍的最新 Windows XP 研究之旅時,Dave Solomon 和我從 Windows 2000/XP 開發小組瞭解到,X-Box 小組決定使用 Windows 2000 進行驅動程式支援。 做出決定後,X-Box 開發人員取得 Windows 2000 原始碼樹狀結構的複本就離開了,Windows 2000/XP 小組幾乎再也沒有聽到他們的消息。

X-Box 具有大幅修改 Windows 2000 精簡版本,可容納於區區 512 KB 記憶體中。 它已移除所有非相關的子系統 (它們原本已移除隨插即用子系統,只有在意識到驅動程式載入需要它之後才將其新增回來),只執行一個進程,而且沒有 Win32 子系統 (只有 X-Box API)。 X-Box 只有 64 MB 的實體記憶體,而且沒有虛擬記憶體支援,因此移除了 Windows 2000 記憶體和快取管理員兩個子系統。 有了如此大幅度的修改,您必須將其視為新的作業系統,而不是 Windows 2000。

您可以在 深入瞭解 X-Box、GameCube 和 PS2 內部功能 http://www.e-insite.net/ednmag/index.asp?layout=article&articleid=CA185947&pubdate=12-20-01

隨機 Windows XP 統計資料

下列統計資料由 Microsoft 在其 OEM 系統產生器的網站上發佈 (在 http://oem.microsoft.com - 您可以免費註冊),我認為您會發現其中一些有趣及/或好玩的內容。

順便說一句,Windows XP 最終版本的組建編號在 2600 年並沒有巧合下降,它有點模糊 (每次作業系統在組建實驗室中編譯時都會遞增組建編號,通常是每天一次)。 內部訊息人士說,這個數字是針對 2600 社群,一個鬆散的駭客組織 (http://www.2600.com/) 作為表明 XP 團隊對 XP 安全有信心的一則訊息。

  • 開發 Windows XP 所花費的天數:600 (12/20/99 – 8/24/01)
  • 專注的小組成員數目:5,736
  • 每位開發人員的測試人員數目:1.4
  • 專案期間出生的嬰兒數目:452
  • 受雇實習生人數:504人
  • 在 40 場「Windows 資訊會議」期間耗用的通心麵數量:6,000 磅
  • Frappuccino's® 服務次數: 86,400
  • 為西雅圖羅奈爾得·麥當勞之家籌集的資金 (當地慈善機構):200 萬美元
  • 系統還原功能的測試案例數目:160 萬
  • 自 Windows XP RC1 起執行的 Direct3D 圖形測試案例數目:43,114,143
  • 測試相容性的應用程式數目:5,500
  • 現用支援的裝置數目:12,000
  • 過去三年中散發且與 Windows XP 相容的最受歡迎的電腦應用程式百分比:90%
  • 最大數位媒體櫃測試案例中的曲目數目:31,000
  • Windows Movie Maker 所擷取之最長單一檔案的小時長度:114
  • 我們本地化的語言數目:24 個完整和 9 部分
  • 參加 10/25 發佈會的國家數目:超過 50 個國家/地區
  • 參加全球啟動活動的人數:超過 58 萬個座位... 加上由全球 5,120 個系統組建者組成的線上觀眾

新改進的 Windbg

Windbg 是 Windows NT/2000/XP 核心內建的核心偵錯支援圖形化前端。 Windbg 直到最近幾年才獲得不可靠和笨重的公正評價,但自從 Microsoft 專注于改善它以來,情況已經改變了。 最新版的 Windbg 可從 http://www.microsoft.com/ddk/Debugging/ 免費下載,相較於舊版中已經大幅改善,而且更容易使用。 有些新功能甚至連經驗豐富的 Windbg 使用者可能也不知道,還有兩個命令對嘗試診斷系統當機的系統管理員很有用。

讓最新的 Windbg 非常容易使用的功能是其對 Microsoft 符號伺服器的支援。 使用 Windbg 查看損毀傾印或偵錯應用程式時有一個問題,就是您必須安裝適用於您系統的正確偵錯符號檔。 有了 Service Pack、Hotfix,以及可能來自不同作業系統的損毀 (例如 Windows NT 與 Windows XP),這項任務可能十分艱鉅。 透過符號伺服器支援,您只需在 Windbg 符號路徑對話方塊中輸入 Microsoft 符號伺服器的 URL,Windbg 就會視需要從伺服器下載符號,並將其儲存在您指定的目錄中。 符號伺服器具有 Windows .NET Server Beta 3、Windows XP 和 XP 版本候選項目、Windows 2000 及其 Service Pack 和熱門修正、Windows NT 4、MDAC 2.1-2.7、IIS 和 ISA 的符號。

偵錯損毀傾印很有用的兩個命令是 !analyze 和 .dump。 執行 !analyze (指定 -v 參數),以根據啟發學習法取得當機的自動分析。 此命令已經相當強大,因為 Microsoft 會納入來自實際損毀的更多歷史資料,因此會變得更加準確。

.dump 命令適用于使用者模式偵錯和核心模式損毀傾印分析。 在某些伺服器環境中,特別是網頁伺服器,您可能會發現記憶體流失或其他問題,但直到原因隔離後才願意停止並重新啟動伺服器。 在 Windows XP 和 .NET Server 上,您可以使用 Windbg 附加至伺服器進程,執行 .dump 命令以產生使用者記憶體損毀傾印檔案,然後中斷連結 (使用 .detach 命令),只短暫暫停伺服器。 然後,開發人員可以擷取產生的傾印檔案,並離線進行分析。

根據預設,Windows 伺服器系統會產生全記憶體傾印,其大小與系統上存在的實體記憶體數量一樣大,因此可能非常大。 不過,您可以將傾印載入 Windbg,並使用 .dump 命令從完整傾印中產生較小的核心記憶體或小型傾印。 較小的檔案更容易交換,隔離當機原因通常只需要這些檔案。

從 http://www.microsoft.com/ddk/Debugging/ 下載最新版本的 Windbg,並尋找設定 Windbg,以從位於 http://www.microsoft.com/ddk/debugging/symbols.asp 的 Microsoft 符號伺服器取得符號的指示

下期内容預告

使用 BOOTVIS 來分析 WINDOWS XP 開機程式

為了協助他們調整 Windows XP 開機程序,Windows XP 效能小組在作業系統中檢測了關鍵點,並開發了稱為 BootVis 的工具來顯示開機追蹤。 他們讓此工具可以自由使用,真是令人驚訝。 它很容易使用,會顯示驚人的詳細資料,包括驅動程式何時初始化、磁片 I/O 發生時間和位置的相關資訊,以及服務與應用程式啟動時的相關資訊。 下一次,我會向您說明您可以在哪裡取得此工具,以及如何使用。


感謝您閱讀 Sysinternals 電子報。

發佈時間:2002 年 1 月 7 日星期一,下午 7:01,發佈者:奧托

[電子報封存 ^][< 第 3 卷,第 2 期][第 4 卷,第 2 期 >]