ファイル ハンドルの使用

次の表に、ドライバーがファイル ハンドルに対して実行できる操作と、それらの操作を実行する対応するルーチンを示します。

操作 呼び出すルーチン

ファイルからデータを読み取ります。

ZwReadFile

ファイルにデータを書き込みます。

ZwWriteFile

ファイルまたはファイル ハンドルのメタデータを読み取ります。

ZwQueryInformationFile

ファイルまたはファイル ハンドルのメタデータを書き込みます。

ZwSetInformationFile

ファイル内のデータの読み取りまたは書き込みを開始する場所を示すために、ByteOffset パラメーターをそれぞれ ZwReadFile または ZwWriteFile に渡します。

FILE_APPEND_DATA アクセスでハンドルを開いた場合、すべてのデータがファイルの末尾に書き込まれ、ByteOffset パラメーターは無視されます。

特定の条件下では、I/O マネージャーはファイルの現在のファイル位置ポインターを保持します。 ByteOffsetNULL を指定することで、その位置で読み取りまたは書き込み操作を開始できます。 現在のファイル位置ポインターが存在する場合の詳細については、このセクションで後述する「現在のファイル位置の使用」を参照してください。

ファイルに関する情報を確認または変更するには、それぞれ ZwQueryInformationFile または ZwSetInformationFile を呼び出します。 各ルーチンの FileInformationClass パラメーターとして、特定の情報の種類を指定します。 たとえば、FileInformationClassFileBasicInformation に設定すると、ファイル作成時刻と最終アクセス時刻のメンバーを含むFILE_BASIC_INFORMATION 構造体を調べたり変更したりできます。 FileInformationClass に指定できるすべての値については、「FILE_INFORMATION_CLASS」を参照してください。