FltProcessFileLock 関数 (fltkernel.h)
FltProcessFileLock ルーチンは、ファイル ロック操作を処理して完了します。
構文
FLT_PREOP_CALLBACK_STATUS FLTAPI FltProcessFileLock(
[in] PFILE_LOCK FileLock,
[in] PFLT_CALLBACK_DATA CallbackData,
[in, optional] PVOID Context
);
パラメーター
[in] FileLock
ファイルの FILE_LOCK 構造体へのポインター。 この構造体は、 FltAllocateFileLock または FltInitializeFileLock の以前の呼び出しによって初期化されている必要があります。
[in] CallbackData
IRP_MJ_LOCK_CONTROL操作のコールバック データ (FLT_CALLBACK_DATA) 構造体へのポインター。
[in, optional] Context
操作の完了時に使用されるコンテキスト ポインター。 このコンテキスト ポインターは、FltAllocateFileLock の以前の呼び出しでミニフィルター ドライバーが登録した CompleteLockCallbackDataRoutine および UnlockRoutine コールバック ルーチンに渡されます。 このパラメーターは省略可能であり、NULL にすることができます。
戻り値
FltProcessFileLock は 、次のいずれかを返します。
リターン コード | 説明 |
---|---|
FLT_PREOP_COMPLETE | フィルター マネージャーは CallbackData で行われ、これで完了です。 |
FLT_PREOP_DISALLOW_FASTIO | CallbackData は高速 I/O 操作を表し、スタック内のミニフィルター ドライバーでは、この操作に高速 I/O を使用できません。 フィルター マネージャーは、操作を禁止したミニフィルター ドライバーの下に操作を送信しません。 この場合、フィルター マネージャーは、高速 I/O 操作を許可しないミニフィルター ドライバーの上にあるミニフィルター ドライバーの postoperation コールバック ルーチン (および CompleteLockCallbackDataRoutine コールバック) のみを呼び出します。 |
FLT_PREOP_PENDING | ロック操作が実行されました。 |
注釈
FltProcessFileLock は、ファイル ロック (IRP_MJ_LOCK_CONTROL) 操作を処理します。 ロック操作には、高速 I/O または IRP ベースの操作を指定できます。
ロック解除操作の場合、Filter Manager は、呼び出し元が FltAllocateFileLock の以前の呼び出しでFILE_LOCK構造体に登録した UnlockRoutine コールバック ルーチンを呼び出します。
ロック操作が完了すると、フィルター マネージャーは、呼び出し元が FltAllocateFileLock の以前の呼び出しでFILE_LOCK構造体に登録した CompleteLockCallbackDataRoutine(PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE) 完了コールバック ルーチンを呼び出します。
FltProcessFileLock に渡される CallbackData パラメーターが高速 I/O 操作を表す場合、FltAllocateFileLock ルーチンの CompleteLockCallbackDataRoutine パラメーターで指定されたコールバックは呼び出されません。 CallbackData の I/O 操作が IRP であり、CompleteLockCallbackDataRoutine が NULL でない場合にのみ、コールバック ルーチンが呼び出されます。
CallbackData が高速 I/O 操作を表しているかどうかを判断するには、FLT_IS_FASTIO_OPERATION マクロを使用します。
新しいファイル ロック構造を割り当てて初期化するには、 FltAllocateFileLock を呼び出します。
初期化された FILE_LOCK 構造体を解放するには、 FltFreeFileLock を呼び出します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP SP2 |
サポートされている最小のサーバー | Windows Server 2003 SP1 |
対象プラットフォーム | ユニバーサル |
Header | fltkernel.h (Fltkernel.h を含む) |
Library | FltMgr.lib |
[DLL] | Fltmgr.sys |
IRQL | <= APC_LEVEL |
こちらもご覧ください
PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE
[PUNLOCK_ROUTINE](../ntifs/nc-ntifs-punlock_routine.md