在 Windows Vista 和 Windows Server 2008 中对文件系统和存储堆栈进行的更改可限制对磁盘和卷的直接访问

文章翻译 文章翻译
文章编号: 942448 - 查看本文应用于的产品
测试版信息
本文讨论 Microsoft 产品的测试版。本文中的信息按原样提供,如有更改恕不另行通知。

Microsoft 对此测试版产品不提供正式产品支持。有关如何获取对测试版的支持的信息,请参阅测试版产品文件附带的文档,或在您下载此版本的网站中查看该信息。
展开全部 | 关闭全部

本文内容

简介

本文介绍在 Windows Server 2008 和 Windows Vista 中对文件系统和存储堆栈所做的更改,这些更改可限制对磁盘和卷进行直接访问。

更多信息

背景

当程序打开独占的文件句柄时,会假定该文件的内容无法再修改。但是,如果存在以下情况,则可以对文件的内容进行修改:
  • 另一个程序将文件句柄打开至底层卷或底层磁盘。
  • 程序对文件所在的位置进行了更改。
如果程序没有首先获得文件系统所安装的卷的独占访问权,而直接写入该卷,则可能会发生损坏或系统不稳定现象。这是因为卷的写入操作可能会与文件系统的写入操作发生冲突。当发生此类冲突时,卷的内容可能停留在不一致的状态。

为了降低该问题的影响,对文件系统和存储堆栈进行了更改来限制对磁盘或卷的直接访问。

对文件系统和存储堆栈所做更改的详细信息

  • 只有存在以下情况时,文件系统才可以写入卷句柄:
    • 情况 1:正要写入的扇区是启动扇区。

      注意:这种情况是为了支持防病毒程序、安装程序以及其他必须更新系统卷启动代码的程序。无法锁定系统卷。
    • 情况 2:正要写入的扇区位于文件系统空间外。

      注意:文件系统空间末尾和卷空间末尾之间的区域不受文件系统的控制。因此,没有理由要求锁定卷以禁止对其进行写入操作。
    • 情况 3:已经通过请求独占写入权限隐式锁定卷。
    • 情况 4:已经通过锁定请求或卸载请求显式锁定卷。
    • 情况 5:写入请求具有 SL_FORCE_DIRECT_WRITE 标志,该标志表示必须忽略情况 2。

      注意:有些文件系统筛选器不用首先锁定卷就可以写入卷的可用空间区域。如果文件系统筛选器必须这样做,则文件系统筛选器可在写入请求上设置一个标志,通知文件系统允许执行写入行为。仅可在内核模式下设置该标志。
  • 如果没有安装卷或卷没有文件系统,则对文件系统和存储堆栈的更改不适用。
  • UDFS 文件系统和 FASTFAT 文件系统限制对文件系统和存储堆栈所做的更改。这些更改限于磁盘类型的介质。

    注意:大多数 CD 控制程序都能够直接写入卷,而不用首先锁定卷。某些 CD 控制程序甚至会绕过文件系统层。在这些情况下,此类程序可直接写入存储层。由于分页文件只能放在磁盘驱动器上,因此没有理由将对文件系统和存储堆栈的更改应用到光驱。
  • 如果存在以下情况,则存储驱动器可以写入磁盘句柄:
    • 情况 1:正要写入的扇区不位于卷内。

      注意:程序使用卷之外的扇区来存储元数据。分区表也位于卷之外的扇区中。由于这些扇区不受任何文件系统的控制,因此没有理由阻止对这些扇区的访问。
    • 情况 2:正要写入的扇区位于已显式锁定的已安装卷内。
    • 情况 3:正要写入的扇区位于未安装或者无文件系统的卷内。
  • 对文件系统和对存储堆栈的更改也将应用到卷的奇偶校验块。
  • 对文件系统和存储堆栈的更改将应用到 32 位系统和 64 位系统。
除了各种 WriteFile API 之外,还有其他设备 IO 控制请求可以向卷或磁盘进行写操作。对文件系统和存储堆栈的更改也将应用到设备 IO 控制请求。设备 IO 控制请求包含以下命令:
  • IOCTL_DISK_COPY_DATA
  • IOCTL_SCSI_PASS_THROUGH
  • IOCTL_SCSI_PASS_THROUGH_DIRECT
  • SCSIOP_WRITE6
  • SCSIOP_WRITE
  • SCSIOP_WRITE_VERIFY
  • SCSIOP_WRITE_SAME
  • SCSIOP_WRITE_LONG
  • SCSIOP_XDWRITE
  • SCSIOP_XPWRITE
  • SCSIOP_XDWRITE_READ
  • SCSIOP_WRITE12
  • SCSIOP_WRITE_VERIFY12
  • SCSIOP_WRITE16
  • SCSIOP_WRITE_VERIFY16
  • SCSIOP_WRITE_SAME16
  • SCSIOP_WRITE_LONG16
  • SCSIOP_WRITE_XDWRITE_EXTENDED16
  • SCSIOP_WRITE_COPY
  • SCSIOP_WRITE_COPY_COMPARE
对于这些命令,系统将查询 LBA 位,以确定偏移是以 CHS 格式还是以 LBA 格式指定的。由于系统无法获得真正的几何数据,因此所有以 CHS 格式发送的请求都将失败。由于当前所有磁盘都是以 LBA 格式处理偏移,因此这应该不是一个问题。

因为 CDB 中仅有 16 字节,所以没有对 32 字节 SCSI 写入命令进行筛选。另外,也没有对扩展的复制命令进行筛选。对于长写入命令,传输长度是以字节为单位的。但是,所有其他命令都是以扇区为单位的。

以下命令组将会失败,因为它们已过时:
  • IOCTL_ATA_PASS_THROUGH
  • IOCTL_ATA_PASS_THROUGH_DIRECT
  • IDE_COMMAND_WRITE
  • IDE_COMMAND_WRITE_DMA
  • IDE_COMMAND_WRITE_DMA_QUEUED
  • IDE_COMMAND_WRITE_MULTIPLE
  • IDE_COMMAND_WRITE_EXT
  • IDE_COMMAND_WRITE_DMA_EXT
  • IDE_COMMAND_WRITE_DMA_FUA_EXT
  • IDE_COMMAND_WRITE_DMA_QUEUED_EXT
  • IDE_COMMAND_WRITE_DMA_QUEUED_FUA_EXT
  • IDE_COMMAND_WRITE_MULTIPLE_EXT
  • IDE_COMMAND_WRITE_MULTIPLE_FUA_EXT

程序兼容性问题和缓解操作

对文件系统和存储堆栈的更改可能导致某些程序失败。此类程序失败的原因是它们对磁盘或卷使用直接访问。

由于以下原因,对程序兼容性的影响将降至最低:
  • 备份程序必须先卸载卷,然后再写入卷。否则,程序写入操作将与文件系统写入操作发生冲突。此冲突将导致损坏或系统不稳定问题。
  • 分区程序指向卷区域之外扇区中的分区表。文件系统不对此类扇区进行控制。因为启用了对这些扇区的访问,所以分区程序不受影响。
  • 恢复程序很可能在文件系统无法安装的卷上运行。因为启用了对 RAW 卷的访问,所以此类恢复程序不受影响。
  • 数据块级加密程序通常有一个筛选驱动程序,该驱动程序位于分区管理器驱动程序之下的磁盘堆栈中。筛选驱动器会筛选分区管理器驱动程序发出的输入输出 (IO)。因此,对文件系统和存储堆栈的更改不会影响数据块级加密程序。如果筛选驱动器位于卷堆栈内,则筛选驱动器将位于文件系统下。因此,对文件系统和存储堆栈的更改不会影响数据块级加密程序。
  • CD 控制程序不受影响,因为在光驱上安装文件系统时,UDFS 文件系统和 FAT32 文件系统不执行检查。但是,在以下情况下,CD 控制程序可能会受到影响:
    • 程序将其文件锁定。
    • 程序查询文件的区块。
    • 程序使用卷句柄来直接写入文件的区块。
    但是,我们不鼓励这种情况,因为该情况可能导致文件元数据不同步。当文件元数据不同步时,可能会发生文件损坏。

属性

文章编号: 942448 - 最后修改: 2008年2月20日 - 修订: 1.0
这篇文章中的信息适用于:
  • Microsoft Windows Code Name “Longhorn”
  • Windows Vista Ultimate
  • Windows Vista Enterprise
  • Windows Vista Business
  • Windows Vista Home Premium
  • Windows Vista Home Basic
  • Windows Vista Starter
关键字:?
kbhowto kbinfo kbexpertiseadvanced KB942448
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com