Windows Vista および Windows Server 2008 でディスクおよびボリュームへの直接アクセスを制限するためにファイル システムおよびストレージ スタックに加えられた変更について

文書翻訳 文書翻訳
文書番号: 942448 - 対象製品
すべて展開する | すべて折りたたむ

目次

はじめに

この資料では、Windows Server 2008 および Windows Vista でディスクおよびボリュームへの直接アクセスを制限するためにファイル システムおよびストレージ スタックに対して加えられた変更について説明します。

詳細

背景

プログラムで、排他アクセスを行うファイル ハンドルを開くときには、そのプログラムは、ファイルの内容が変更できないと想定しています。ただし、以下の条件に該当する場合にはファイルの内容を変更できます。
  • 別のプログラムで、ファイルが存在するボリュームまたはディスクに対するファイル ハンドルが開かれている。
  • そのプログラムによって、ファイルが置かれている場所に対して変更が行われる。
ボリュームに対する排他アクセスを最初に取得せずに、プログラムが、ファイル システムによってマウントされているボリュームに直接書き込むと、破損が発生したりシステムが不安定になったりすることがあります。これは、ボリュームへの書き込みがファイル システムによる書き込みと競合するためです。このような競合が発生すると、ボリュームの内容が整合性の取れていない状態のままになることがあります。

この問題の影響を軽減するために、ディスクまたはボリュームへの直接アクセスを制限するようにファイル システムおよびストレージ スタックに対して変更が加えられました。

ファイル システムおよびストレージ スタックに対する変更の詳細

  • ファイル システムは、以下の条件に該当する場合にのみボリューム ハンドルに書き込むことができます。
    • 条件 1 : 書き込み対象のセクタがブート セクタである。

      : この条件は、ウイルス対策プログラム、セットアップ プログラム、システム ボリュームのスタートアップ コードを更新する必要があるその他のプログラムなどのプログラムをサポートするために存在します。システム ボリュームはロックできません。
    • 条件 2 : 書き込み対象のセクタがファイル システム領域の外部にある。

      : ファイル システム領域の終端とボリューム領域の終端との間にある領域は、ファイル システムによって制御されません。このため、書き込むためにボリュームをロックする必要はありません。
    • 条件 3 : 排他的な書き込みアクセスを要求することによってボリュームが暗黙的にロックされている。
    • 条件 4 : ロック要求またはマウント解除要求によってボリュームが明示的にロックされている。
    • 条件 5 : 書き込み要求に、条件 2 を無視する必要があることを示す SL_FORCE_DIRECT_WRITE フラグが設定されている。

      : 最初にボリュームをロックせずにボリュームの空き領域に書き込むファイル システム フィルタがあります。ファイル システム フィルタがこれを行う必要がある場合、書き込み要求に、ファイル システムに書き込みが発生することを通知するフラグを設定できます。このフラグを設定できるのは、カーネル モードの内部のみです。
  • ファイル システムおよびストレージ スタックに対する変更は、ボリュームがマウントされていない場合やボリュームにファイル システムがない場合には適用されません。
  • 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 書き込みコマンドはフィルタリングされません。また、拡張されたコピー コマンドはフィルタリングされません。write long コマンドの転送長はバイト単位ですが、その他のすべてのコマンドではセクタ単位です。

以下のコマンド グループは古いため、失敗します。
  • 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) をフィルタリングします。このため、ファイル システムおよびストレージ スタックに対する変更は、ブロック レベルの暗号化プログラムに影響を及ぼしません。フィルタ ドライバがボリューム スタックにある場合、フィルタ ドライバはファイル システムによって制御されます。このため、ファイル システムおよびストレージ スタックに対する変更は、ブロック レベルの暗号化プログラムに影響を及ぼしません。
  • UDFS ファイル システムおよび FAT32 ファイル システムでは光学式ドライブのマウント時にチェックを実行しないため、CD マスタリング プログラムは影響を受けません。ただし、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 Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

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