次の方法で共有


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

操作の完了時に使用されるコンテキスト ポインター。 このコンテキスト ポインターは、CompleteLockCallbackDataRoutine に渡され、前の呼び出しでミニフィルター ドライバーが FltAllocateFileLock登録した UnlockRoutine コールバック ルーチンを します。 このパラメーターは省略可能であり、NULL にすることができます。

戻り値

FltProcessFileLock は、次のいずれかを返します。

リターン コード 形容
FLT_PREOP_COMPLETE フィルター マネージャーは、CallbackDataで実行されます。これで完了です。
FLT_PREOP_DISALLOW_FASTIO CallbackData は高速 I/O 操作を表し、スタック内のミニフィルター ドライバーでは、この操作に使用する高速 I/O が許可されていません。 フィルター マネージャーは、操作を許可していないミニフィルター ドライバーの下に操作を送信しません。 この場合、フィルター マネージャーは、高速 I/O 操作を許可しないミニフィルター ドライバーの上にあるミニフィルター ドライバーのポスト操作コールバック ルーチン (および CompleteLockCallbackDataRoutine コールバック) のみを呼び出します。
FLT_PREOP_PENDING ロック操作が終了しました。

備考

FltProcessFileLock 、ファイル ロック (IRP_MJ_LOCK_CONTROL) 操作を処理します。 ロック操作には、高速 I/O または IRP ベースの操作を指定できます。

ロック解除操作の場合、フィルター マネージャーは、呼び出し元が 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 with SP2
サポートされる最小サーバー Windows Server 2003 with SP1
ターゲット プラットフォーム の 万国
ヘッダー fltkernel.h (Fltkernel.h を含む)
ライブラリ FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

関連項目

FILE_LOCK

FLT_CALLBACK_DATA

FLT_IS_FASTIO_OPERATION

FltAllocateFileLock の

FltCheckLockForReadAccess の

FltCheckLockForWriteAccess の

FltFreeFileLock を する

FltInitializeFileLock の

FltUninitializeFileLock の

FsRtlProcessFileLock

IRP_MJ_LOCK_CONTROL

PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE

[PUNLOCK_ROUTINE](../ntifs/nc-ntifs-punlock_routine.md