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 構造体へのポインター。 情報 メンバーは、ファイルに設定されたバイト数を受け取ります。
[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 フラグを設定してファイルを開いている必要があります。 |
FileIoCompletionNotificationInformation | ファイル IO 完了通知フラグを変更します。 SetFileCompletionNotificationModesと同じフラグ |
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
FileInformationClass
FileInformationClass
ファイルの操作の詳細については、「ドライバーでのファイルの使用
ZwSetInformationFile の呼び出し元は、IRQL = PASSIVE_LEVEL で実行され、特殊なカーネル API が有効になっている 必要があります。
この関数の呼び出しがユーザー モードで発生する場合は、"ZwSetInformationFile" ではなく"NtSetInformationFile" という名前を使用する必要があります。
カーネル モード ドライバーからの呼び出しの場合、Windows ネイティブ システム サービス ルーチンの NtXxx および ZwXxx バージョンは、入力パラメーターを処理および解釈する方法で動作が異なる場合があります。 ルーチンの NtXxx と ZwXxx バージョンの間の関係の詳細については、「ネイティブ システム サービス ルーチンの Nt および Zw バージョンの使用 を参照してください。
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の |
万国 |
ヘッダー | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
ライブラリ | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL (「解説」セクションを参照) |
DDI コンプライアンス規則 を |
HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |
関連項目
FILE_IO_PRIORITY_HINT_INFORMATION
FILE_VALID_DATA_LENGTH_INFORMATION