FltCancelFileOpen 関数 (fltkernel.h)
ミニフィルター ドライバーは、FltCancelFileOpen ルーチンを使用して、新しく開かれたファイルまたは作成されたファイルを閉じます。
構文
VOID FLTAPI FltCancelFileOpen(
[in] PFLT_INSTANCE Instance,
[in] PFILE_OBJECT FileObject
);
パラメーター
[in] Instance
呼び出し元の不透明なインスタンス ポインター。 このパラメーターは必須であり、NULL することはできません。
[in] FileObject
ファイルのファイル オブジェクト ポインター。 このパラメーターは必須であり、NULL することはできません。
戻り値
何一つ
備考
ミニフィルター ドライバーは、ファイル システムが既に成功した NTSTATUS 値 (STATUS_SUCCESS など) の操作を完了した後に、ファイルを開くまたはファイルの作成 (IRP_MJ_CREATE) 操作が失敗する必要があると判断した場合、ミニフィルター ドライバーは、作成後のコールバック ルーチンから FltCancelFileOpen を呼び出してファイルを閉じます。
FltCancelFileOpen ファイルの変更は元に戻しません。 たとえば、FltCancelFileOpen は、新しく作成されたファイルを削除したり、上書きまたは以前の状態に置き換えられたファイルを復元したりすることはありません。
FltCancelFileOpen 、ファイルのハンドルを作成する前に呼び出す必要があります。 呼び出し元は、FileObject パラメーターが指す FILE_OBJECT 構造体の Flags メンバーを確認できます。 FO_HANDLE_CREATED フラグが設定されている場合は、ファイルに対して 1 つ以上のハンドルが作成されているため、FltCancelFileOpen 呼び出しても安全ではありません。
FltCancelFileOpen 、FileObject が指すファイル オブジェクトの Flags メンバーのFO_FILE_OPEN_CANCELLED フラグ 設定します。 このフラグは、作成操作が取り消されたことを示し、このファイル オブジェクトに対して close (IRP_MJ_CLOSE) 要求が発行されます。
作成操作が取り消されると、再発行できません。 詳細については、FltReissueSynchronousIo を参照してください。
FltCancelFileOpen は、ミニフィルター ドライバーの作成後コールバック ルーチンからのみ呼び出すことができます。 他の種類の I/O 操作 ポスト操作コールバック (PFLT_POST_OPERATION_CALLBACK) ルーチンから FltCancelFileOpen を呼び出すか、プリ操作コールバック (PFLT_PRE_OPERATION_CALLBACK) ルーチンから呼び出すことは、プログラミング エラーです。
FltCancelFileOpen の呼び出し元 IRQL PASSIVE_LEVELで実行されている必要があります。 ただし、ミニフィルター ドライバーは、作成後のコールバック ルーチンからこのルーチンを呼び出しても安全です。これは、作成後のコールバック ルーチンは、IRP_MJ_CREATE要求を発生させたスレッドのコンテキストで IRQL PASSIVE_LEVELで呼び出される保証があるためです。
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の | 万国 |
ヘッダー | fltkernel.h (Fltkernel.h を含む) |
ライブラリ | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | PASSIVE_LEVEL (「解説」セクションを参照) |
関連項目
IRP_MJ_CREATE の FLT_PARAMETERS
FltReissueSynchronousIo を する
FltSetCallbackDataDirty の