次の方法で共有


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 コードは、操作の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_CALLBACK_DATA

FLT_PARAMETERS (IRP_MJ_CREATE 用)

FLT_PARAMETERS (IRP_MJ_FILE_SYSTEM_CONTROL 用)

FSCTL_OPBATCH_ACK_CLOSE_PENDING

FSCTL_OPLOCK_BREAK_ACKNOWLEDGE

FSCTL_OPLOCK_BREAK_ACK_NO_2

FSCTL_OPLOCK_BREAK_NOTIFY

FSCTL_REQUEST_BATCH_OPLOCK

FSCTL_REQUEST_FILTER_OPLOCK

FSCTL_REQUEST_OPLOCK_LEVEL_1

FSCTL_REQUEST_OPLOCK_LEVEL_2

FltCheckOplock

FltCurrentBatchOplock

FltInitializeOplock

FltOplockIsFastIoPossible

FltUninitializeOplock

FsRtlOplockFsctrl

IRP_MJ_CREATE

IRP_MJ_FILE_SYSTEM_CONTROL