1999 年 4 月 14 日 - 此问题:

  1. 系统内部机制的新增功能

    • 9x Windows的 VolumeID
    • EFSDump
    • Compaq Alpha 的 ListDL
    • "在启动过程中,第 2 部分"
    • 我四月Windows NT杂志文章
    • 没有信用额度,其到期时间
    • 非新内容
  2. INTERNALS 新闻

    • Win2K 驱动程序验证程序
    • 使用 Y2K 测试Boot.ini
  3. 即将提供哪些功能

    • Win2K 中的排队旋转锁
    • Tokenmon

发起人:NALS 软件

系统内部信息新闻稿由 TheNalnals Software 赞助,网址为 http://www.winternals.com. TheNalnals Software 是适用于 Windows NT/2K 的高级系统工具的领先开发人员和提供商。 功能包括适用于 Windows NT 4.0 的 FAT32、ERD Commander (Windows NT) 和 NTRecover。

大家好,

欢迎参加系统内部信息通讯的第一个发行者。 我高兴地说,该新闻稿自一天前发布以来已经获得了 1000 名订阅者。

我在新闻稿中的目标是及时提供有关系统内部信息中显示的新实用工具和文章的信息,此外,在系统内部网站上提供没有适当论坛的 Windows 内部信息。 如果对新闻稿有任何意见或建议,请随时将意见或建议mark@...。此外,请将新闻稿转发给你知道可能感兴趣的任何人。 有关订阅、取消订阅或修改订阅的说明在新闻稿末尾提供。

谢谢!

-Mark

系统内部机制的新增功能

适用于 WINDOWS 9X 的 VOLUMEID

尽管 Windows NT 和 Windows 9x 允许使用"label"命令更改逻辑驱动器或软盘上的标签,但是,它们无法更改在格式化驱动器时任意分配的卷 ID。 已在系统内部站点上Windows NT的 VolumeID 程序已移植到 Windows 9 倍。 通过此小程序,你可以将硬盘驱动器和软盘上的卷 ID 更改为所需的任何数据。

VolumeID 使用 API,使应用程序能够直接读取和写入逻辑驱动器,在 Win9x 上,物理驱动器 (软盘) 文件系统。 在 Windows NT/2K VolumeID 使用常规 ReadFile 和 WriteFile 访问原始驱动器数据 - 其技巧是指定要访问的卷的名称。 可以在 Q100027 一文的 Windows NT/2K 下了解如何从Microsoft 知识库或逻辑驱动器。 若要Windows 9 倍的逻辑驱动器访问权限,可以将代码基于本文 Q174569 Microsoft 知识库中提供的示例代码。 如果需要在 Windows 9x 上从应用程序执行直接软盘驱动器访问,请使用 MSDN 中介绍的 Win32 IOCTL VWIN32_DIOC_DOS_INT13。

在 下载 VolumeID http://www.sysinternals.com/misc.htm.

EFSDUMP

Windows 2000 年将是 Microsoft 的内置文件加密技术(即 加密文件系统)。 EFS 中有许多用于操作加密文件的新 API,包括一个 QueryUsersOnEncryptedFile,可用于查看哪些用户已注册有权访问加密文件,以及哪些用户已注册为这些文件的恢复代理。 我已编写一个称为 EFSDump 的小程序,可用于轻松查看系统中加密文件的此信息。

虽然我的主题是 EFS API,但自 4 月 MSDN 发布以来,有许多新 API 尚未记录,在 Windows 2000 发布周期的这一后期阶段,这一点非常麻烦。 最值得注意的是,OpenEncryptedFileRaw、ReadFileEncryptedRaw、WriteFileEncryptedRaw 和 CloseEncryptedFileRaw (都由 Win2K 的 ADVAPI32.DLL) 导出,目前均未记录。 希望备份加密文件的任何应用程序都需要使用这些 API,这意味着,Microsoft 仅将有关这些 API 的信息传递给选定合作伙伴,或者备份软件公司必须努力在 Microsoft 最终公开记录其产品时,才将其产品开市。 有一件事是确定的,Windows 2000 的 NTBACKUP 程序的开发人员已有权访问 API 文档:Win2K Beta 3 的 NTBACKUP 正在使用 API。

如果对 EFS 内部机制感兴趣,请务必在 Windows NT 杂志的"NT Internals"列中查看即将推出的 EFS 6/7 Windows NT系列。 本文准确描述了 FEK (文件加密密钥) 和用户 EFS 密钥的存储位置、NTFS、EFS 驱动程序和 LSASRV (本地安全机构子系统服务器) 执行加密过程的方式,当然,还介绍了解密的工作原理。

在 下载包含完整源代码的 EFSDump http://www.sysinternals.com/misc.htm.

COMPAQ ALPHA 的 LISTDLLS

系统内部部门中可用于 Alpha 的实用程序数不断增加。 最新的新增功能是 ListDL,它是一个命令行实用工具,可用于查看正在运行的过程的 DLL 信息。 通过"我的 HandleEx"工具,你可以查看此信息,以及进程已打开的 (文件、进程、线程、同步对象) 的句柄信息,但 HandleEx 是 GUI 工具,因此它并不总是方便 (因此它不能在批处理文件(例如) )中运行。

是否想知道典型系统内部实用工具的 x86 版本下载与相应 Alpha 版本的下载比率? 它大约是 20:1,它密切跟踪行业对已安装 Alpha NT 用户群的估计,即占总 NT 市场的 5%。

可以下载 ListDL 和其他 Alpha 端口,包括 HandleEx,网址为 http://www.sysinternals.com/alpha.htm.

"在启动过程中,第 2 部分"

我 1 月从 Windows NT 杂志的"NT 内部"列现在可以通过 Windows NT 杂志网站在线获得。 可以在"发布"页上的"系统内部"找到指向它以及第 1 部分和较旧的"NT 内部"列的链接: http://www.sysinternals.com/publ.htm.

我的 4 月 WINDOWS NT 杂志文章

此外,请务必查看我 4 月版《Windows NT 杂志》中的功能文章"Linux 和 Enterprise"。 我揭示有关 Linux 2.2 内核和网络服务器应用程序 ("企业"应用程序) 的几个关键问题,这些问题最终会阻止此版本的 Linux 内核与 NT 和其他 UNIX 变体在性能方面相互竞争。

没有信用额度(其到期时间)

在相关说明中,你可能听说过最近发布的 D.H. Brown (一家分析) Linux 作为企业操作系统的功能。 结果发现,该报表的作者严重"借用"了某人在 1 月向 Linux 内核 Usenet 新闻组公开发布的电子邮件。 如果你有权访问报表并阅读讨论 Linux 和多处理器的 (44 和 45) 页 (则报表未公开发布 - 必须购买该报表,获取一个详细的总和) ,然后在 Deja News 上阅读我的电子邮件,你将看到一个直接的并行,向下到小的详细信息。

非 SO-NEW 内容

我使用新闻稿的这一部分来介绍你可能不知道的"系统内部"站点的最新更改,并/或提供有关实用工具(而不是站点上提供的内容)的信息。 例如,几周前我们发布了 Filemon v4.1。 此版本的 Filemon 能够监视 Windows NT/2K 下的命名管道和邮件槽活动。 支持此功能所需的代码的增强功能相对较小,因为命名管道和 Mailslot 作为文件系统驱动程序实现。 繁琐的 (是) I/O 控制命令 (I/O 控制命令) 这些特殊文件系统支持,以便 Filemon 可以显示它们。 可以下载 Filemon (,它适用于 Windows NT/2K,Windows 9x) http://www.sysinternals.com/filemon.htm.

若要详细了解 Filemon 在内部的工作方式,请参阅我的 Windows NT 年 2 月杂志"NT 内部"列,标题为"NT 实用工具内部"。 本文介绍如何使用 Filemon、Regmon、NTFSDOS、NewSID 和 HandleEx,并介绍它们如何工作。

INTERNALS 新闻

WINDOWS 2000 驱动程序验证程序

Windows 2000 Beta 3 引入了一种非常强大的设备驱动程序开发辅助工具,称为驱动程序验证程序。 此工具与内核中的代码一起工作,以获得对驱动程序的控制,并练习它以以前不可能的方式遵守内核模式规则。 到目前为止,Buggy 设备驱动程序是许多认为 NT 是不稳定的操作系统的人中信誉最重要的贡献,此工具旨在通过帮助驱动程序编写者在用户之前找到其 bug 来修复该信誉。

几种类型的细微问题可以使它通过随意驱动程序测试 (是在严格的上市时间约束下执行的最常见的测试类型) 甚至会经历严重的压力测试。 一种常见的驱动程序问题是,驱动程序在"提升的 IRQL"位置访问分页内存, (中断优先级) 。 如果驱动程序访问的内存恰好在访问时实际存在 (该内存尚未分页到分页文件) ,则非法访问不会受到任何影响。 将违反此规则的驱动程序释放到用户及其要显示的约束的通配符中,从而导致蓝屏崩溃。

另一种常见的驱动程序编程错误是,开发人员编写代码时假设分页内存和/或非分页内存始终可用,即不检查分配返回值。 如果池耗尽,并且驱动程序收到 NULL 缓冲区地址,则驱动程序会以蓝屏方式取消引用系统。 尽管池耗尽是极少数情况,但不应为系统管理员提供蓝屏。 相关的内存 bug 是缓冲区溢出或不足,其中驱动程序在分配的缓冲区之外读取或写入。

驱动程序验证程序通过使用驱动程序加载时的相应验证程序内核函数 KeRaiseIrqlKeAcquireSpinLock (VerifierKeRaiseIrqlVerifierKeAcquireSpinLock 、) 替换对在驱动程序中操作 IR (QL 的所有函数(例如) )的调用来解决 IRQL 问题。 每当 IRQL 提升至 或更高时,验证程序代码都会调用内部内存管理器函数 ,以强制所有分页数据 DISPATCH_LEVELMmTrimAllPageableSystemMemory() 从物理内存不足。 因此,当驱动程序中断不从 或更高版本访问可分页数据或代码的 IRQL 规则时,内存管理器将检测尝试访问不存在的页面并引发 DISPATCH_LEVEL 蓝屏。 这使开发人员可以在驱动程序离开门之前快速捕获这些类型的 bug,因为他们可以调试故障并查看其驱动程序位于故障堆栈上。

驱动程序验证程序完成内存使用情况测试,并修补要验证的驱动程序的导入表,以便驱动程序调用验证程序内存函数,而不是标准内核版本。 例如,对 的 ExAllocatePool 调用将替换为对 的调用 VerifierAllocatePool 。 验证程序使用两种技术来帮助开发人员快速查找内存 bug。 第一种是它使用特殊的内存池,其中保护页 (保护页是无效的页面,) 位于缓冲区末尾之后。 此外,在缓冲区之前分配缓冲区的页面部分将填充签名。 会立即检测到超出缓冲区末尾的页面内的溢出,因为它们将导致防护页上的非法页面错误。 当驱动程序释放内存时,由验证程序检测到涉及对缓冲区前面的数据进行修改的不足,因为签名将更改。

对于始终需要非空池的驱动程序,通过使用其 "内存错误注入" 的验证程序,将会欺骗其生成崩溃。 可以将验证程序配置为随机失败驱动程序的池分配。

驱动程序验证程序检查的其他错误类型有很多种,包括 IRP (i/o 请求数据包) 一致性和系统和驱动程序代码页的只读保护。

如果你是一个设备驱动程序开发人员,你将自己、你的公司和 NT 社区使用验证程序进行测试。 请注意,当你有权访问驱动程序验证程序时,还应测试与 Win2K 兼容的 NT 4.0 驱动程序, (大多数开发人员会在 4) 月晚些时候通过 MSDN 的 "

有关驱动程序验证程序的详细信息,请参阅 https://docs.microsoft.com/windows-hardware/drivers/devtest/driver-verifier

BOOT.INI 的 Y2K 测试

如果经常检查系统内部网站,则可能已注意到新的 Win2K 未记录 BOOT.INI 交换机,/YEAR。 我没有在网站上提到,NT 4.0 Service Pack 4 还支持该开关。 使用此开关,你可以在 NT 系统上欺骗 NT 和所有软件,以为这是一个不同的年份。 例如,/年 = 2001 会使系统认为它是2001而不是1999。 因此,交换机非常适合于在任何级别的软件中测试 Y2K 问题,并使用它而不是通过时钟小程序手动重置 BIOS 时钟 (,例如) ,这是因为更改是临时的,并且仅当你启动到其 BOOT.INI 行中存在交换机的安装时才处于活动状态。 这样就可以轻松地创建特殊的 Y2K 安装,只需从 BOOT.INI 获取现有引导行,复制它并添加/年开关即可。

即将推出的内容

几周后会预计接下来的新闻稿。 接下来,我将在下一次介绍有关排队旋转锁的旋转锁,这是 Windows 2000 的一种新类型的用于全局旋转锁。 下面是 Windows 2000 中存在的全局旋转锁:

  • KiDispatcherLock:计划程序数据库锁
  • KiContext-SwapLock:踏板交换锁
  • MmPfnLock:物理页面框架数据库锁
  • MmSystemSpaceLock:内核模式地址空间锁
  • CcMasterSpinLock:缓存管理器的全局旋转锁
  • CcVacbSpinLock:缓存管理器的映射数组锁

Windows 2000 内核在 KeAcquireQueuedSpinLock、KeReleaseQueuedSpinLock) 中使用排队的旋转 (锁,而不是使用常规的内核旋转 (KeAcquireSpinLock,KeReleaseSpinLock) 作为 NT 4.0 的全局锁定。 这些锁有一些有趣的属性,可将 Smp 上的总线活动降到最低。 下一次,我将告诉您如何实现排队旋转锁。

系统内部的 Tokenmon,还有另一个监视工具。 Tokenmon 将显示有关系统上所有与令牌相关的活动的详细信息,包括登录名、注销、权限的使用和模拟。


感谢您阅读系统内部新闻稿。

7:16 1999 年4月14日发布的星期三,ottoh

[新闻稿存档 ^][Volume 1,Number 2 ]

[新闻稿存档 ^][Volume 1,Number 2 ]

系统内部新闻稿卷1,第1号

http://www.sysinternals.com