FSCTL_SET_ZERO_DATA 制御コード
FSCTL_SET_ZERO_DATA 制御コードは、ファイルの指定した範囲をゼロ (0) で埋めます。 ファイルがスパース ファイルまたは圧縮ファイルの場合、NTFS ファイル システムによってファイル内のディスク領域の割り当てが解除される可能性があります。 これにより、ファイル サイズを拡張せずにその範囲のバイトがゼロ (0) に設定されます。
ドライバーからこの操作を実行するには、次のパラメーターを指定して FltFsControlFile を呼び出します。
パラメーター
Instance: 呼び出し元の不透明なインスタンス ポインター。 このパラメーターは必須であり、NULL にすることはできません。
FileObject [in]: ゼロを書き込む先のファイルへのファイル オブジェクト ポインター。 このパラメーターは必須であり、NULL にすることはできません。
FsControlCode [in]: 操作の制御コード。
この操作には FSCTL_SET_ZERO_DATA を使用します。
- InputBuffer [in]: ゼロを設定する先のファイルの範囲を指定する FILE_ZERO_DATA_INFORMATION 構造体または FILE_ZERO_DATA_INFORMATION_EX 構造体へのポインター。
FileOffset メンバーはゼロ (0) を設定する先頭バイトのバイト オフセット、BeyondFinalZero メンバーは末尾のゼロ (0) バイトの直後のバイトのバイト オフセットです。
FILE_ZERO_DATA_INFORMATION_EX の Flags メンバーには操作の修飾子を指定します。 たとえば、Flags が FILE_ZERO_DATA_INFORMATION_FLAG_PRESERVE_CACHED_DATA に設定されている場合、ファイルのこの範囲に対応するキャッシュの内容は消去されません。
InputBufferLength [in]: 入力バッファーのサイズ (バイト単位)。
OutputBuffer [out]: この操作では使用されません。NULL に設定します。
OutputBufferLength [out]: この操作では使用されません。0 に設定します。
ステータスブロック
FltFsControlFile は STATUS_SUCCESS または適切な NTSTATUS 値を返します。
リターン コード | 意味 |
---|---|
STATUS_INSUFFICIENT_RESOURCES | 操作を完了させるための十分なメモリがありません。 |
STATUS_INVALID_PARAMETER | InputBufferLength が FILE_ZERO_DATA_INFORMATION 構造体のサイズよりも小さいか、指定されたファイルがシステム メタデータ ファイルまたはディレクトリです。 |
STATUS_ACCESS_DENIED | FILE_ZERO_DATA_INFORMATION_FLAG_PRESERVE_CACHED_DATA はユーザー モードから設定されます。 |
STATUS_MEDIA_WRITE_PROTECTED | ボリュームは現在書き込み禁止です。 |
要件
要件タイプ | 要件 |
---|---|
ヘッダー | Ntifs.h (Ntifs.h を含む) |