2000年6月14日-此问题:

  1. 编辑

  2. SYSINTERNALS 上的新增功能

    • Regmon v 4.25
    • ListDlls v 2.22
    • TDImon v1。0
    • Autoruns.exe 1.1 版
    • LDMDump v1。0
    • 4月/6 月内部列
  3. 内部信息

    • Windows NT 生成历史记录
    • Windows NT/2000 计时器分辨率
    • 重新映射键盘
    • 保险箱系统内存映射
    • 隐藏 Windows 98 文件系统日志记录
    • WinDev ' 00 西
  4. 即将推出的内容

    • "Secure" Windows 98 注册表项

赞助商: WINTERNALS 软件

系统内部新闻稿由 Winternals Software 赞助,网址为: http://www.winternals.com. Winternals Software 是高级系统工具的领先开发人员和提供商,适用于 Windows NT/2K。 Winternals 软件产品包括 FAT32 for Windows NT 4.0,ERD Commander Professional Edition (用于 Windows NT) 和远程恢复的高级启动磁盘功能。

新发布的 TCPView Pro 允许你监视 Windows NT 4.0、Windows 2000 和 Windows 95/98 系统上的 tcp/ip 活动。 与 Windows ((如 netstat) )附带的内置 tcp/ip 监视工具不同,TCPView Pro 会显示与每个 tcp/ip 地址相关联的进程,从而可以轻松确定哪个应用程序负责特定的连接和活动。 TCPView Pro 提供动态视图和静态视图。 静态视图显示当前打开的本地 IP 地址、与每个终结点关联的进程,以及终结点连接到的远程 IP 地址。 动态视图(不能用于任何其他实用程序)允许您实时查看 TCP/IP 活动。

获取定价信息并下载14天的试用版 http://www.winternals.com/products/tcpview.shtml.

大家好,

欢迎使用系统内部新闻稿。 新闻稿当前包含22000个订阅者。

Dave 所罗门群岛和 I 处于汇总 "内部 Windows 2000、3 Ed" 的最后阶段。这意味着本书将于8月6月8日开始推出,而不是在7月晚些时候推出 (它不是 "发货日期") 的 Microsoft 产品。 现在,书籍已成为最终形式,接下来,我可以为您介绍其中的内容。 首先,它比以前的版本有大约50% 的内容,并包括四个全新章节。 下面是目录:

  1. 介绍
  2. 体系结构
  3. 系统机制
  4. 启动和关闭
  5. 管理机制
  6. 进程和线程
  7. 内存管理
  8. 安全性
  9. I/o 系统
  10. 存储
  11. 缓存管理器
  12. 文件系统
  13. 网络

与第二个版本一样,本书完全是用于演示我们所描述的概念的实验。 本书还包括一个 CD,其中包含整个 SysInternals 网站的副本,以及我们在试验中使用的一些工具。

我为该书专门编写的两个工具已非常好地由图书审阅者收到。 第一种命名为 LiveKD,它使你能够在实时系统上运行任何 (i386kd、kd、WinDbg) 的 Windows 2000 内核调试。 这意味着,你将启动 LiveKd,指定你想要将其承载于哪个调试器,然后输入调试器,并提供调试故障转储时需要的所有调试器命令。 本书中几乎所有基于调试器的试验都可以使用 LiveKD 运行,这意味着您不需要使用第二个系统或串行电缆来执行它们。

第二个工具是性能监视器扩展,可让你查看任何内核变量的实时值。 例如,如果要监视与 PerfMon 一起使用的非分页池的数量,请选择 MmAllocatedNonPagedPool 变量。

当本书推出后,我将向您介绍新闻稿,但你现在可以通过 www.sysinternals.com/links.htm上的 Amazon.com 链接来前序。 与往常一样,请将新闻稿传递给你认为感兴趣的朋友。

谢谢!

-标记

系统内部的新功能

REGMON V 4.25

Regmon 注册表监视工具的这一最新更新包括对 KeyNameInformationZwEnumerateKey 和系统服务 Windows 2000 的新查询类型的支持 ZwQuerykey 。 此功能不会导出以供 Win32 应用程序使用,但 ADVAPI32.DLL 中的注册表函数将使用该功能作为系统使用每用户类注册注册表配置单元的一部分。

Windows 2000 上的 Win32 应用程序可以通过两种方式打开注册表的类注册部分:可以指定, HKEY_CLASS_ROOT 也可以指定 HKLM\Software\Classes 。 第一种方式返回与全局类键组合在一起的每用户类键的句柄,第二个返回仅返回全局信息的句柄。 ADVAPI32.DLL 注册表函数只能通过检查用户传入的注册表项句柄的基础名称来确定用户已指定的注册表项,因此要求新的查询类型。 有关详细信息,请参阅 SDK 文档 RegOpenKeyEx

下载 Regmon v 4.25 at http:www/regmon.htm。

LISTDLLS V 2.22

当开发人员创建动态链接库 (DLL) 时,它们会告诉链接器 DLL 的 "基址",该地址是链接器在 DLL 的映像文件中创建相对地址信息的地址。 如果 DLL 在其基址以外的地址加载,则加载程序必须修复加载的 DLL 映像中的所有相对地址,以考虑差别。

这些修正或重定位可能会增加应用程序的启动时间,因此开发人员显然要阻止发生重定位。 不过,查看 ListDLLs 的输出(如使用基址比较负载地址)非常枯燥。 因此,我在版本2.22 的 ListDLLs 中创建了一个新的选项,该选项会 -r 在其输出中记录重定位的 dll。

下载 ListDLLs v 2.22,网址为 http://www.sysinternals.com/listdlls.htm.

TDIMON V1。0

TDImon 是强大的 SysInternals 监视工具套件中的最新功能,显示系统上发生的 TCP 和 UDP 活动。 该工具使用其名称,因为它监视 TCP/IP 堆栈接口上的 TCP 和 UDP 活动,并且该接口被称为传输驱动程序接口 (TDI) 。 所有应用程序和驱动程序 TCP 和 UDP 活动都必须通过此接口,这意味着未检测到任何 TCP 或 UDP 活动的 TDImon。

TDIMon 与其同类、Filemon、Regmon、Portmon 和 DebugView 共享相同的 GUI,与其他监视工具一样,它会向你显示执行活动的进程的名称,时间戳,并具有筛选和突出显示功能。 这使 TDIMon 成为管理员的理想网络故障排除工具,并为应用程序开发人员提供 TCP/IP 调试工具。 TDImon 适用于 Windows 95、98、NT 4 和 Windows 2000。

下载 TDImon 1.0 版 http://www.sysinternals.com/tdimon.htm.

LDMDUMP V1。0

Windows 2000 包括一种称为软分区的新分区格式,它克服了所有 Windows 操作系统一直使用之前的 MS-DOS 样式分区的一些缺点。 名为 "逻辑磁盘管理器" 的组件 (LDM) 管理用软分区格式化的磁盘上的卷,这些磁盘被称为动态磁盘 (具有 MS-DOS 样式分区的磁盘称为基本磁盘) 。 除了更强大的功能,因为它们实现了分区镜像,动态磁盘具有这样的优势:你可以创建多分区卷,而无需重新启动系统即可识别文件系统驱动程序并将其装入。

Microsoft 并未记录 LDM 分区数据库的格式-事实上,因为他们从 Veritas 获得了在其 UNIX 的卷管理软件中使用了同一数据库的技术,所以许可协议可能会阻止 Microsoft 对其进行记录。 最终可能会有指向 LDM 的 Win32 IOCTL 接口,但在此期间,我发现了格式并编写了一个名为 LDMDump 的工具,您可以使用该工具对动态磁盘的数据库进行对等互连。 LDMDump 提供的信息大致与 Windows 2000 Resource 工具包的 DmDiag 工具的信息相同,但 LDMDump 提供了 (我认为) 一种更清晰的方式的信息。 我目前并不提供此工具的源代码,但如果您对自己的应用程序的许可有兴趣,请与我联系。

阅读 "我的 Windows 2000 杂志" 内的 LDM 数据库,存储,第2部分 "列http://www.sysinternals.com/publ.htm.

下载 LDMDump 1.0 版 http://www.sysinternals.com/ldmdump.htm.

AUTORUNS.EXE 1.1 版

你可能已经熟悉了过去两个月内发布的 Autoruns.exe。 Autoruns.exe 显示注册表中的每个位置的自动运行设置,以及在其中指定此类信息的 .INI 文件 (或) 。 用户反馈已将我们 clued 到 Autoruns.exe 缺少的几个位置,这一最新版本现在会显示它们。

下载 Autoruns.exe v1.1,网址为 http://www.sysinternals.com/misc.htm.

6月/7 月内部专栏

您是否曾经想过对 Win32 服务与标准 Win32 应用程序有何区别? 或许您已经了解了导致 NT 启动或关机的原因很长。 我在 Windows 2000 杂志中的 Win32 服务上回答了这些问题,并在第6个月/7 月的文章中进行了详细操作。

在第1部分中,我将您带到 Win32 服务的结构中,说明它们如何接受来自客户端应用程序的命令。 然后我开始描述服务控制管理器 (SCM) ,它负责管理 Win32 服务,包括启动和关闭。 在第2部分中,我完成了在系统启动过程中发生的服务启动过程的说明,并告诉您 SCM 如何关闭服务。 我还将介绍 Microsoft 在 Windows 2000 中对 SCM 进行的改进,并 SrvAny 资源工具包工具。

Windows 2000 杂志,订户可在http://www.sysinternals.com/publ.htm.

内部信息

WINDOWS NT 生成历史记录

正如你从过去的新闻稿中学到的一样,Windows NT (的内部版本号 Windows 2000) 在生成团队生成具有该日代码签入的新生成时,每天递增。使用旧的 beta 版和候选发布版 cd 以及其他使用时间比我多 Windows NT 的技术,我已经编译了与公共版本 (beta 版本、候选发布版和完整版本) 对应的生成号列表。 请注意,日期是生成日期,而不是生成的发布日期。 例如,Win2K's 最终版本2195在12月进行,但在2月发布给公众。

构建 发布 Date
297 PDC 1992
340 NT 3.1 Beta 1 1992年10月
397 NT 3.1 Beta 2 1993年3月
511 NT 3。1 1993年7月
611 NT 3.5 Beta 1 1994年4月
683 NT 3.5 Beta 2 1994年6月
756 NT 3.5 RC 1 1994年8月
807 NT 3。5 1994年9月
944 NT 3.51 Beta 1 1995年2月
1057 NT 3.51 可能为1995
1234 NT 4.0 Beta 1 1996年1月
1314 NT 4.0 Beta 2 可能为1996
1381 NT 4。0 1996年7月
1671 NT 5.0 Beta 1 1997年9月
1877 NT 5.0 Beta 2 1998年9月
1946 RC0 Beta 3 的 Win2K 1998年12月
2000.3 RC1 Beta 3 的 Win2K 1999年3月
2031 Win2K Beta 3 1999年4月
2072 Win2K RC1 1999年7月
2128 Win2K RC2 1999年9月
2183 Win2K RC3 1999年11月
2195 Win2K 1999年12月

WINDOWS NT/2000 计时器分辨率

虽然 Windows NT/2000 提供了服务(包括),可 QueryPerformanceCounter 让你测量对 Pentium cycle 计数器的处理时间,其间隔计时服务的分辨率略有降低。 事实上,默认计时器分辨率与系统时钟间隔相同,系统时钟间隔是10ms 在单处理器 x86 系统上, (其在 SMP 系统上的通常是 7.5 ms 或 15ms) 。 应用程序可以使用用户空间中的多媒体计时器功能,将分辨率提高到1ms,但如果需要更高的 2000 Windows 分辨率,则驱动程序会在无问题的情况下(例如)。

Windows 2000 引入了一个新的 DDK 函数, ExSetTimerResolution 驱动程序可以使用该函数将系统计时器的间隔降低到1ms。 想知道什么是在多媒体定时器的哪一后台 ExSetTimerResolution ? 请参阅中的 "内部 Windows NT 高分辨率计时器"http://www.sysinternals.com/timer.htm.

安全系统内存映射

尽管我们正在介绍适用于驱动程序开发人员的新的 Windows 2000 内核函数,但值得一提的是 MmGetSystemAddressForMdlSafe 。 在的早期版本中 Windows NT 需要为用户的缓冲区或物理内存段获取系统地址空间指针的驱动程序开发人员必须将描述物理缓冲区的 MDL (内存描述符列表) 传递给 MmGetSystemAddressForMdl

在系统的地址空间中创建虚拟映射使用称为系统页表项 (系统 Pte) 的资源,其中映射的每个物理页都需要一个系统 PTE。 遗憾的是,系统 Pte 是有限的资源,如果驱动程序映射大量内存,则可能会耗尽。 如果 MmGetSystemAddressForMdl 无法获取所需的系统 pte,会发生什么情况? 您认为它会执行一些有用的操作,如将 NULL 作为映射的虚拟地址返回。 但不能,它会在系统中提供和蓝色。 类似的行为反映发出请求的驱动程序上的错误。

Windows 2000 的 会执行应完成的工作:如果没有足够的 MmGetSystemAddressForMdlSafeMmGetSystemAddressForMdl 系统 PTE 为缓冲区创建映射,则返回 NULL 。 使用此函数可避免指向驱动程序的易转储。 如果你有一个在 NT 4 和 Windows 2000 上运行的驱动程序,则值得发布两个不同的版本,每个平台一个版本,以便可以在 Windows 2000 上利用此新 API。

重新映射键盘

如果你就像我一样,你一开始是在键盘上UNIX键盘上的 Ctrl 键位于电脑键盘上由大写锁键占用的位置。 为了提高键入率,并了解 Windows 9x 和 Windows NT 上的设备驱动程序开发,我在这两个操作系统上的第一个驱动程序项目之一是实现键盘重新映射驱动程序。 可以在 找到 Windows 9x 版本,在 http://www.sysinternals.com/c2cap95.htm Windows NT/2K 版本http://www.sysinternals.com/ctrl2cap.htm.

在 Windows NT/2K 上,有一种使用键盘筛选器驱动程序的替代方法。 通过在注册表中定义扫描码重新映射条目,可以完全重新编程键盘的行为。 事实上,Windows 2000 资源工具包包含一种名为 RemapKey 的工具,可用于使用键盘的图形表示形式交换密钥。 Microsoft 网站上的文章介绍了键盘重新映射器及其工作原理: http://www.microsoft.com/HWDEV/input/W2kscan-map.htm. 请注意,该工具还适用于 NT 4。

因此,假设你没有 Windows 2000 资源工具包,并且不想为此花费资金 (建议你这样做,因为它包含各种冷工具和文档) 。 如果是这种情况,可以手动重新映射键盘。 刚才引用的 Microsoft 文章介绍了注册表项的格式,其中键盘驱动程序查找重新映射代码 () ,本文(也可从 Microsoft 获得)告诉你对应于键的扫描 HKLM\ SYSTEM\CurrentControlSet\Control\Keyboard Layout\Scancode Map 码: http://www.microsoft.com/hwdev/download/desinit/scancode.zip.

如果只想交换 caps-lock 和 control (请注意,我的键盘筛选器完全不使用大写锁键,因为从未使用它) ,因此可以将以下文本 (不包括"----"分隔符) 复制到文件 (将其名称与 swapcaps.reg) 类似,然后双击该文件。 这些设置将导入注册表,重启后生效。

REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,3a,00,1d,00,1d,00,3a,00,\
  00,00,00,00

如果要撤消映射,只需从注册表中删除 Scancode Map 值,然后重新启动。

隐藏的 WINDOWS 98 文件系统日志记录

你是否曾经浏览过 Windows 98 系统目录,并注意到名为 的子目录 \Windows\Applog ? 在此目录中,可能会找到名称与最近运行的应用程序和扩展名(如 )匹配的文件。LGC 和 。LGD。 打开 记事本 中的文件之一,可清楚地看到文件系统活动跟踪、文件名、偏移量以及打开和关闭调用。 是生成这些日志的病毒,还是 98 Windows包含的机密实用工具,它会向 Microsoft 报告应用程序使用模式? 无论是 (,你也不会在商业新闻中阅读此内容,而不是在 SysInternals 新闻稿中) 。 它属于 98 的"加载最常用的应用程序的速度高达 36%"功能Windows部分。

由于 中的 Taskmon 条目 HKLM\Software\Microsoft\Windows\CurrentVersion\Run ,Windows 98 启动名为 Taskmon 的服务程序。 Taskmon 加载名为 FioLog () 以安装文件系统活动挂钩,以便它可以在应用程序启动期间 \Windows\System\FioLog.Vxd 查看文件使用情况。 Taskmon 监视所有应用程序的文件系统活动在启动时执行,但 中列出的应用程序除外 HKLM\Software\Microsoft\Windows\CurrentVersion\Taskmon\ExcludeApps 。 FioLog 在 Applog 目录中记录应用程序启动文件系统活动。 它创建的日志文件以扩展名 开始。LGA。 它如何确定何时删除日志,以及何时为扩展名为递增的最后一个字母的应用程序创建新日志。 下面是示例日志文件的一部分:

{
o da3034d0 d000 "C:\WINDOWS\NOTEPAD.EXE"
R da3034d0 0 40
R da3034d0 80 f8
R da3034d0 80 1c0
R da3034d0 7000 1000
R da3034d0 6000 e00
o da2b2610 156000 "C:\WINDOWS\SYSTEM\SHELL32.DLL"
R da2b2610 83000 1000
o da2b2f40 45110 "C:\WINDOWS\SYSTEM\SHLWAPI.DLL"
R da2b2f40 3c000 1000
R da2b2f40 3c000 1000
...

行分为四个字段:第一个字段是操作代码,其中,打开、读取 oRC 关闭。 你不会看到写入操作 (,) FioLog 仅记录应用程序启动期间读取操作,以便优化 W 应用程序启动。 第二个字段是内部文件指针。 第三个和第四个字段必须按照行的操作代码进行解释。 如果操作代码为 R ,则第三个字段是文件偏移量,第四个字段是读取的长度。 但是,如果操作代码为 ,则第三个字段为打开标志,第四 o 个字段是打开的文件的名称。 在示例跟踪中,notepad.exe返回文件指针 da3034d0,你可以看到在后续读取操作中使用的指针。

启动碎片整理操作时,Defrag.Exe程序将执行名为 CvtApLog 的程序 () \Windows\System\Cvtaplog.exe 日志文件。 CvtApLog 使用名为 ClusAlgo.Dll () 的 DLL,根据读取的日志文件找出最佳群集位置,将此信息记录在用于指导碎片整理过程的名为 的文件中。 \Windows\System\Clusalgo.dll\Windows\Applog\Applog.d* CvtApLog 还会生成一个名为 的文件,该文件汇总了日志文件规定 \Windows\Applog\Optlog.txt 的应用程序启动优化。 下面是配置文件的部分Optlog.txt内容:

Program Launch Optimization Log - Created Tue Jun 13 11:42:52 2000

Programs Eligible for Optimization:
Ord Flag ProgName Uses   LastExecDate Program Path                           
1        RUNDLL32 65     2000.06.13   C:\WINDOWS\RUNDLL32.EXE                
2        ATIPTAAB 31     2000.06.13   C:\WINDOWS\SYSTEM\ATIPTAAB.EXE         
3        NOTEPAD  22     2000.06.13   C:\WINDOWS\NOTEPAD.EXE                 
4        PING     9      2000.06.10   C:\WINDOWS\PING.EXE                    
…             
17       IEXPLORE 2      2000.06.01   C:\PROGRAM FILES\INTERNET EXPLORER\IEXPLORE.EXE

Programs Ineligible for Optimization:
Ord Flag ProgName Uses   LastExecDate Program Path                           
18  S    GREP     5      2000.06.13   C:\BIN\GREP.EXE                        
19  S    STRINGS  12     2000.06.13   C:\BIN\STRINGS.EXE                     
20  S    ATI2CWXX 31     2000.06.13   C:\WINDOWS\SYSTEM\ATI2CWXX.EXE         

Control Parameters:
Use app profile        = Yes
Minimum log size    = 1000
Maximum no use days = 90
Maximum apps        = 50

Flags for Ineligible Programs:
S = Log size smaller than <Minimum log size>
U = Program not used for more than <Maximum no use days>
P = No profile for program
E = Associated program no longer exists
D = Log deleted (may be combined with one of the above)

Windows 98 将应用程序启动期间使用的文件部分移动到磁盘上的连续区域的能力是 Microsoft 从 Intel (获得许可的技术来查看这一点,手动执行 Defrag.exe,你将看到文本"Intel 应用程序启动加速器") 。

WINDEV '00 WEST

WinDev'00 East 在上一周发生,有 660 人参加 (这是酒店可以容纳) 。 会议说话人代表 Windows 开发每个领域的大名,包括来自 COM-experts Don Box 的所有人,以及驱动程序专家 Jamie Han且anan 和 Brian Catlin。 我的会话包括"Windows 2000 内部版本"、"高级驱动程序"、"Windows NT/2000 文件系统驱动程序"和"群集服务器"。

如果很抱歉错过,则因为你有第二个机会,所以很走运。 WinDev'00 West 于 9 月 11-15 日于 CA 的且所有相同的说话人将在那里进行。 我将提供相同的会话,就像在 WinDev East 上一样,将免费向回答我的问题或提出特别有见解的与会者提供 SysInternals t-ask。 可在 http://www.butrain.com/windev/west/default.htm. 中查看详细信息

即将提供哪些功能

"保护"WINDOWS 98 注册表项

尽管 Windows 98 注册表不支持安全性,但 Microsoft 已实现用于定义隐藏注册表项的机制。 哪些应用程序使用此隐藏技术? Internet Explorer,当然。 下次我将告诉你 IE 隐藏哪些密钥,以及 98 Windows实现它们。


感谢你阅读系统内部信息通讯。

发布时间:2000 年 6 月 14 日,星期三,下午 7:08,由 ottoh 发布

[新闻稿存档 ^][ 第 2 卷,第 2 卷][第 2 卷,第 4 卷 ]

[新闻稿存档 ^][ 第 2 卷,第 2 卷][第 2 卷,第 4 卷 ]

系统内部信息新闻稿第 2 卷,第 3 号

http://www.sysinternals.com
版权所有© 2000 Mark Russin中