CcZeroData 関数 (ntifs.h)
CcZeroData ルーチンは、キャッシュされたファイルまたはキャッシュされていないファイル内の指定されたバイト範囲をゼロにします。
注意
このルーチンは、ファイルの有効なデータ長を超えるファイルの 0 個の部分にのみ呼び出す必要があります。 CcZeroData では、ファイルの以前に書き込まれたデータは変更されません。 ファイルの有効なデータ長までファイルの一部である以前に書き込まれたデータを 0 にするには、 CcCopyWrite を呼び出すか、または他のキャッシュされた書き込みインターフェイスの 1 つを呼び出します。
構文
BOOLEAN CcZeroData(
[in] PFILE_OBJECT FileObject,
[in] PLARGE_INTEGER StartOffset,
[in] PLARGE_INTEGER EndOffset,
[in] BOOLEAN Wait
);
パラメーター
[in] FileObject
バイト範囲がゼロになるファイルの FILE_OBJECT へのポインター。
[in] StartOffset
ゼロにする最初のバイトへのファイル内のバイト オフセットを指定する変数へのポインター。
[in] EndOffset
ゼロにする最後のバイトへのファイル内のバイト オフセットを指定する変数へのポインター。
[in] Wait
バイト範囲全体がゼロになるまで呼び出し元を待機状態にする必要がある場合は 、TRUE に 設定します。 それ以外の場合、このパラメーターは FALSE に設定されます。
戻り値
データが正常にゼロになった場合、CcZeroData は TRUE を返します。それ以外の場合は、FALSE を返します。
注釈
ゼロにするファイルは、キャッシュすることもキャッシュしないこともできます。 ただし、ファイルがキャッシュされていない場合、 StartOffset と EndOffset の値は両方ともボリュームのセクター サイズの倍数である必要があります。
プール割り当てエラーが発生し 、Wait が TRUE として指定された場合、 CcZeroData はSTATUS_INSUFFICIENT_RESOURCES例外を発生させます。 プール割り当てエラーが発生し 、Wait が FALSE として指定された場合、 CcZeroData は FALSE を返しますが、例外は発生しません。
指定された FileObject でキャッシュが有効になっていないが、キャッシュがストリームに存在する場合 (つまり、同じファイルの別のファイル オブジェクトでキャッシュが有効になっている)、ゼロ化は書き込みキャッシュが有効になっているかのように扱われます。
Wait が TRUE に設定されている場合、CcZeroData はゼロ データ要求を完了し、TRUE を返す必要があります。 キャッシュされたファイルの必要なページが既にメモリに存在する場合、データはすぐにゼロになり、ブロックは発生しません。 必要なページが常駐していない場合、呼び出し元は、必要なすべてのページが常駐し、データをゼロにできるまで待機状態になります。
Wait が FALSE で、キャッシュされたファイルの必要なページがまだメモリに存在しない場合、CcZeroData はブロックを拒否し、FALSE を返します。
プール割り当てエラーが発生した場合、 CcZeroData はSTATUS_INSUFFICIENT_RESOURCES例外を発生させます。 CCZeroData で IO エラーを含む他のエラーが発生した場合は、呼び出し元にエラーが発生します。
Windows Vista 以降の Windows オペレーティング システムの場合、 CcZeroData の動作は次のとおりです。
- ストリームがキャッシュされ、write_throughされている場合、 StartOffset はセクターを揃える必要はありません。
- EndOffset がアラインされていない場合、次のセクター サイズに切り上げられます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000。 Vista 以降のオペレーティング システムの変更については、「解説」を参照してください。 |
対象プラットフォーム | ユニバーサル |
Header | ntifs.h (Fltkernel.h、Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | <=APC_LEVEL |