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 構造体のメンバーは無視されます。
FileInformationClass を FileDispositionInformation に設定すると、その後 FileHandle をZwClose に渡すことができますが、他の ZwXxxファイル ルーチンには渡すことができません。 FileDispositionInformation ではファイルが削除対象としてマークされるため、閉じる以外のハンドルに対して後続の操作を試行するのはプログラミング エラーです。
FileInformationClass を FilePositionInformation に設定し、ZwCreateFile の前の呼び出しで CreateOptions パラメーターにFILE_NO_INTERMEDIATE_BUFFERING フラグが含まれていた場合、FILE_POSITION_INFORMATION構造体の CurrentByteOffset メンバーに対する特定の制限が適用されます。 詳細については、「 ZwCreateFile」を参照してください。
FileInformationClass を FileEndOfFileInformation に設定し、FILE_END_OF_FILE_INFORMATION の EndOfFile メンバーが現在のファイルの終了マークを超えるオフセットを指定した場合、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) |
こちらもご覧ください
FILE_IO_PRIORITY_HINT_INFORMATION
FILE_VALID_DATA_LENGTH_INFORMATION