FltOplockFsctrl 関数 (fltkernel.h)
FltOplockFsctrl は 、ミニフィルター ドライバーに代わってさまざまな日和見ロック (oplock) 操作を実行します。
構文
FLT_PREOP_CALLBACK_STATUS FLTAPI FltOplockFsctrl(
[in] POPLOCK Oplock,
[in] PFLT_CALLBACK_DATA CallbackData,
[in] ULONG OpenCount
);
パラメーター
[in] Oplock
ファイルの不透明な oplock ポインター。 このポインターは、 FltInitializeOplock の以前の呼び出しによって初期化されている必要があります。
[in] CallbackData
I/O 操作の FLT_CALLBACK_DATA 構造体へのポインター。 このパラメーターは必須であり、 NULL にすることはできません。
[in] OpenCount
排他 oplock が要求されている場合は、ファイルのユーザー ハンドルの数。 レベル 2、R、または RH oplock 要求に 0 以外の値を設定すると、ファイルにバイト範囲ロックがあることを示します。 oplock 型の詳細については、「 Oplock の概要」を参照してください。
戻り値
FltOplockFsctrl は 、一部の FSCTL 操作のFLT_PREOP_PENDINGを返します。 詳細については、次の「解説」セクションに記載されている FSCTL コードのリファレンス ページを参照してください。 それ以外の場合、 FltOplockFsctrl は FLT_PREOP_COMPLETEを返します。
注釈
ミニフィルター ドライバーは 、FltOplockFsctrl を呼び出して、作成またはファイル システムコントロールの I/O 操作に対してさまざまな日和見ロック操作を実行します。
CallbackData パラメーターが指すFLT_CALLBACK_DATA構造体は、IRP ベースのIRP_MJ_FILE_SYSTEM_CONTROLまたはIRP_MJ_CREATE操作を表す必要があります。
操作がIRP_MJ_FILE_SYSTEM_CONTROL操作である場合は、 FltOplockFsctrl を次の FSCTL コードと共に使用できます。
- FSCTL_OPBATCH_ACK_CLOSE_PENDING
- FSCTL_OPLOCK_BREAK_ACK_NO_2
- FSCTL_OPLOCK_BREAK_ACKNOWLEDGE
- FSCTL_OPLOCK_BREAK_NOTIFY
- FSCTL_REQUEST_BATCH_OPLOCK
- FSCTL_REQUEST_FILTER_OPLOCK
- FSCTL_REQUEST_OPLOCK_LEVEL_1
- FSCTL_REQUEST_OPLOCK_LEVEL_2
FSCTL コードは、操作のFLT_PARAMETERS構造体の FsControlCode メンバーで設定されます。 FsControlCode およびその他のIRP_MJ_FILE_SYSTEM_CONTROL パラメーターの詳細については、「IRP_MJ_FILE_SYSTEM_CONTROLのFLT_PARAMETERS」を参照してください。
日和見ロックの詳細については、Microsoft Windows SDKドキュメントを参照してください。
操作が IRP_MJ_CREATE 要求である場合、 FltOplockFsctrl を使用して、次の条件がすべて満たされている場合に保留中のフィルターの日和見ロックを要求できます。
- OpenCount パラメーターの値は 1 である必要があります。
- IRP_MJ_CREATE要求の DesiredAccess パラメーターの値がFILE_READ_ATTRIBUTES。 このパラメーターは、操作のFLT_PARAMETERS構造体の SecurityContext メンバーで設定されます。 詳細については、「 IRP_MJ_CREATEのFLT_PARAMETERS」を参照してください。
- IRP_MJ_CREATE操作の ShareAccess パラメーターの値は、FILE_SHARE_READ、FILE_SHARE_WRITE、またはFILE_SHARE_DELETEです。 このパラメーターは、操作のFLT_PARAMETERS構造体の ShareAccess メンバーで設定されます。 詳細については、「 IRP_MJ_CREATEのFLT_PARAMETERS」を参照してください。
この関数を呼び出すフィルターとファイル システムは、システム提供の oplock パッケージに呼び出しを同期する必要があります。 詳細については、「 Oplock 同期 」を参照してください。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
Header | fltkernel.h (Fltkernel.h を含む) |
Library | FltMgr.lib |
[DLL] | Fltmgr.sys |
IRQL | <= APC_LEVEL |
こちらもご覧ください
FLT_PARAMETERS (IRP_MJ_CREATE 用)
FLT_PARAMETERS (IRP_MJ_FILE_SYSTEM_CONTROL 用)
FSCTL_OPBATCH_ACK_CLOSE_PENDING