次の方法で共有


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

こちらもご覧ください

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