ZwSetInformationFile 関数 (wdm.h)

ZwSetInformationFile ルーチンは、ファイル オブジェクトに関するさまざまな種類の情報を変更します。

構文

NTSYSAPI NTSTATUS ZwSetInformationFile(
  [in]  HANDLE                 FileHandle,
  [out] PIO_STATUS_BLOCK       IoStatusBlock,
  [in]  PVOID                  FileInformation,
  [in]  ULONG                  Length,
  [in]  FILE_INFORMATION_CLASS FileInformationClass
);

パラメーター

[in] FileHandle

ファイル オブジェクトを処理します。 このハンドルは、 ZwCreateFile または ZwOpenFile を正常に呼び出すことによって作成 されます

[out] IoStatusBlock

最終的 な完了 状態と要求された操作に関する情報を受け取るIO_STATUS_BLOCK構造体へのポインター。 Information メンバーは、ファイルに設定されたバイト数を受け取ります。

[in] FileInformation

ファイルに設定する情報を含むバッファーへのポインター。 このバッファー内の特定の構造体は、 FileInformationClass パラメーターによって決定されます。 たとえば、 FileInformationClass パラメーターが FileDispositionInformationEx 定数に設定されている場合、このパラメーターは FILE_DISPOSITION_INFORMATION_EX 構造体へのポインターである必要があります。

[in] Length

FileInformation バッファーのサイズ (バイト単位)。

[in] FileInformationClass

FileInformation が指すバッファーで指定され、ファイルに対して設定される情報の種類。 デバイス ドライバーと中間ドライバーは、次の FILE_INFORMATION_CLASS 値のいずれかを指定できます。

FileInformationClass 意味
FileBasicInformation FILE_BASIC_INFORMATION構造体で提供される情報を変更します。 呼び出し元は、 DesiredAccess パラメーターに設定されたFILE_WRITE_ATTRIBUTES フラグを使用してファイルを開いている必要があります。
FileDispositionInformation ファイルが閉じられたときに削除を要求するか、以前に要求した削除を取り消します。 削除するか取り消すかの選択は、 FILE_DISPOSITION_INFORMATION 構造体で指定されます。 呼び出し元は、 DesiredAccess パラメーターに DELETE フラグを設定してファイルを開いている必要があります。
FileDispositionInformationEx ファイルの削除または以前に要求した削除の取り消しを要求します。 削除するか取り消すかの選択、および削除を実行するタイミングと方法の設定は、 FILE_DISPOSITION_INFORMATION_EX 構造で提供されます。 呼び出し元は、 DesiredAccess パラメーターに DELETE** フラグを設定してファイルを開いている必要があります。
FileEndOfFileInformation FILE_END_OF_FILE_INFORMATION構造で提供されている現在のファイルの終わり情報を変更します。 この操作では、ファイルを切り捨てたり拡張したりできます。 呼び出し元は、 DesiredAccess パラメーターに設定されたFILE_WRITE_DATA フラグを使用してファイルを開いている必要があります。
FileIoPriorityHintInformation ファイル ハンドルの現在の既定の IRP 優先度ヒントを変更します。 新しい値は、 FILE_IO_PRIORITY_HINT_INFORMATION 構造体で指定されます。 この構造体は 8 バイトアラインされている必要があります。
FileLinkInformation FILE_LINK_INFORMATION構造で指定されている既存のファイルへのハード リンクを作成します。 すべてのファイル システムがハード リンクをサポートしているわけではありません。たとえば、NTFS は を実行しますが、FAT はしません。
FilePositionInformation FILE_POSITION_INFORMATION構造体に格納されている現在のファイル情報を変更します。
FileRenameInformation FILE_RENAME_INFORMATION構造体で指定されている現在のファイル名を変更します。 呼び出し元は、ファイルに対する DELETE アクセス権を持っている必要があります。
FileShortNameInformation FILE_NAME_INFORMATION構造体で指定されている現在の短いファイル名を変更します。 ファイルは NTFS ボリューム上にあり、呼び出し元は DesiredAccess パラメーターに DesiredAccess DELETE フラグを設定してファイルを開いている必要があります。
FileValidDataLengthInformation ファイルの現在の有効なデータ長を変更します。これは、 FILE_VALID_DATA_LENGTH_INFORMATION 構造体で指定されます。 ファイルは NTFS ボリューム上にあり、呼び出し元は DesiredAccess パラメーターに FILE_WRITE_DATA フラグを設定してファイルを開いている必要があります。 管理者およびリモート ユーザー以外のユーザーには、 SeManageVolumePrivilege 特権が必要です。
FileReplaceCompletionInformation 指定したファイル ハンドルの I/O 入力候補ポートを変更または削除します。 呼び出し元は、ポート ハンドルと完了キーを指定する FILE_COMPLETION_INFORMATION 構造体へのポインターを提供します。 ポート ハンドルが NULL 以外の場合、このハンドルは、ファイル ハンドルに関連付ける新しい I/O 完了ポートを指定します。 ファイル ハンドルに関連付けられている I/O 入力候補ポートを削除するには、構造体のポート ハンドルを NULL に設定します。 ポート ハンドルを取得するために、ユーザー モードの呼び出し元は CreateIoCompletionPort 関数を呼び出すことができます。

戻り値

ZwSetInformationFile は 、STATUS_SUCCESSまたは適切なエラー状態を返します。

注釈

ZwSetInformationFile は、 ファイルに関する情報を変更します。 特定のデバイスまたはファイル システムでサポートされていない FILE_XXX_INFORMATION 構造体のメンバーは無視されます。

FileInformationClassFileDispositionInformation に設定すると、その後 FileHandle をZwClose に渡すことができますが、他の ZwXxxファイル ルーチンには渡すことができません。 FileDispositionInformation ではファイルが削除対象としてマークされるため、閉じる以外のハンドルに対して後続の操作を試行するのはプログラミング エラーです。

FileInformationClassFilePositionInformation に設定し、ZwCreateFile の前の呼び出しで CreateOptions パラメーターにFILE_NO_INTERMEDIATE_BUFFERING フラグが含まれていた場合、FILE_POSITION_INFORMATION構造体の CurrentByteOffset メンバーに対する特定の制限が適用されます。 詳細については、「 ZwCreateFile」を参照してください。

FileInformationClassFileEndOfFileInformation に設定し、FILE_END_OF_FILE_INFORMATIONEndOfFile メンバーが現在のファイルの終了マークを超えるオフセットを指定した場合、ZwSetInformationFile はファイルを拡張し、拡張子をゼロで埋め込みます。

ファイルの操作の詳細については、「 ドライバーでのファイルの使用」を参照してください。

ZwSetInformationFile の呼び出し元は、IRQL = PASSIVE_LEVELで実行され、特殊なカーネル APC が有効になっている必要があります。

この関数の呼び出しがユーザー モードで行われる場合は、"ZwSetInformationFile" ではなく"NtSetInformationFile" という名前を使用する必要があります。

カーネル モード ドライバーからの呼び出しの場合、Windows ネイティブ システム サービス ルーチンの NtXxx および ZwXxx バージョンは、入力パラメーターを処理および解釈する方法で動作が異なります。 ルーチンの NtXxx バージョンと ZwXxx バージョン間の関係の詳細については、「Using Nt and Zw Versions of the Native System Services Routines」を参照してください。

要件

要件
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL PASSIVE_LEVEL (「解説」セクションを参照)
DDI コンプライアンス規則 HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

こちらもご覧ください

CreateIoCompletionPort

FILE_BASIC_INFORMATION

FILE_COMPLETION_INFORMATION

FILE_DISPOSITION_INFORMATION

FILE_END_OF_FILE_INFORMATION

FILE_IO_PRIORITY_HINT_INFORMATION

FILE_LINK_INFORMATION

FILE_NAME_INFORMATION

FILE_POSITION_INFORMATION

FILE_RENAME_INFORMATION

FILE_VALID_DATA_LENGTH_INFORMATION

Nt および Zw バージョンのネイティブ システム サービス ルーチンの使用

ZwClose

ZwCreateFile

ZwOpenFile

ZwQueryInformationFile