次の方法で共有


FSCTL_SET_ZERO_DATA 制御コード

FSCTL_SET_ZERO_DATA 制御コードは、ファイルの指定した範囲をゼロ (0) で埋めます。 ファイルがスパース ファイルまたは圧縮ファイルの場合、NTFS ファイル システムによってファイル内のディスク領域の割り当てが解除される可能性があります。 これにより、ファイル サイズを拡張せずにその範囲のバイトがゼロ (0) に設定されます。

ドライバーからこの操作を実行するには、次のパラメーターを指定して FltFsControlFile を呼び出します。

パラメーター

  • Instance: 呼び出し元の不透明なインスタンス ポインター。 このパラメーターは必須であり、NULL にすることはできません。

  • FileObject [in]: ゼロを書き込む先のファイルへのファイル オブジェクト ポインター。 このパラメーターは必須であり、NULL にすることはできません。

  • FsControlCode [in]: 操作の制御コード。

この操作には FSCTL_SET_ZERO_DATA を使用します。

FileOffset メンバーはゼロ (0) を設定する先頭バイトのバイト オフセット、BeyondFinalZero メンバーは末尾のゼロ (0) バイトの直後のバイトのバイト オフセットです。

FILE_ZERO_DATA_INFORMATION_EXFlags メンバーには操作の修飾子を指定します。 たとえば、FlagsFILE_ZERO_DATA_INFORMATION_FLAG_PRESERVE_CACHED_DATA に設定されている場合、ファイルのこの範囲に対応するキャッシュの内容は消去されません。

  • InputBufferLength [in]: 入力バッファーのサイズ (バイト単位)。

  • OutputBuffer [out]: この操作では使用されません。NULL に設定します。

  • OutputBufferLength [out]: この操作では使用されません。0 に設定します。

ステータスブロック

FltFsControlFileSTATUS_SUCCESS または適切な NTSTATUS 値を返します。

リターン コード 意味
STATUS_INSUFFICIENT_RESOURCES 操作を完了させるための十分なメモリがありません。
STATUS_INVALID_PARAMETER InputBufferLengthFILE_ZERO_DATA_INFORMATION 構造体のサイズよりも小さいか、指定されたファイルがシステム メタデータ ファイルまたはディレクトリです。
STATUS_ACCESS_DENIED FILE_ZERO_DATA_INFORMATION_FLAG_PRESERVE_CACHED_DATA はユーザー モードから設定されます。
STATUS_MEDIA_WRITE_PROTECTED ボリュームは現在書き込み禁止です。

要件

要件タイプ 要件
ヘッダー Ntifs.h (Ntifs.h を含む)

関連項目

FltFsControlFile

FILE_ZERO_DATA_INFORMATION

FILE_ZERO_DATA_INFORMATION_EX