次の方法で共有


FltOplockBreakToNoneEx 関数 (fltkernel.h)

FltOplockBreakToNoneEx ルーチンは、oplock キーに関係なく、すべての日和見ロック (oplock) を直ちに中断します。

構文

FLT_PREOP_CALLBACK_STATUS FLTAPI FltOplockBreakToNoneEx(
  [in]           POPLOCK                                 Oplock,
  [in]           PFLT_CALLBACK_DATA                      CallbackData,
  [in]           ULONG                                   Flags,
  [in, optional] PVOID                                   Context,
  [in, optional] PFLTOPLOCK_WAIT_COMPLETE_ROUTINE        WaitCompletionRoutine,
  [in, optional] PFLTOPLOCK_PREPOST_CALLBACKDATA_ROUTINE PrePostCallbackDataRoutine
);

パラメーター

[in] Oplock

ファイルの不透明な oplock ポインター。 このポインターは、 FltInitializeOplock の以前の呼び出しによって初期化されている必要があります。

[in] CallbackData

I/O 操作のコールバック データ (FLT_CALLBACK_DATA) 構造体へのポインター。

[in] Flags

関連付けられたファイル I/O 操作のビットマスク。 ミニフィルター ドライバーは、 FltOplockBreakToNoneEx の動作を指定するビットを設定します。 Flags パラメーターには、次のオプションがあります。

OPLOCK_FLAG_COMPLETE_IF_OPLOCKED (0x00000001)

oplock 中断の原因となった操作をブロックまたは保留中にせずに、oplock の中断を続行できるようにします。 通常、このフラグは、 CallbackData パラメーターが指すコールバック データによって表される I/O 操作がIRP_MJ_CREATE操作である場合にのみ使用されます。

[in, optional] Context

WaitCompletionRoutine パラメーターと PrePostCallbackDataRoutine パラメーターが指すコールバック ルーチンに渡される呼び出し元定義のコンテキスト情報へのポインター。

[in, optional] WaitCompletionRoutine

呼び出し元が指定したコールバック ルーチンへのポインター。 oplock ブレークが進行中の場合は、中断が完了したときにこのルーチンが呼び出されます。 このパラメーターは省略可能であり、 NULL にすることができます。 NULL の場合、呼び出し元は oplock ブレークが完了するまで待機状態になります。

このルーチンは、次のように宣言されます。

typedef VOID
(*PFLTOPLOCK_WAIT_COMPLETE_ROUTINE) (
    __in PFLT_CALLBACK_DATA CallbackData,
 __in_opt PVOID Context
      );

このルーチンには、次のパラメーターがあります。

CallbackData

I/O 操作のコールバック データ構造へのポインター。

Context

Context パラメーターで FltOplockBreakToNoneEx に渡されたコンテキスト情報ポインター。

[in, optional] PrePostCallbackDataRoutine

I/O 操作をペンドする場合に呼び出される呼び出し元が指定したコールバック ルーチンへのポインター。 ルーチンは、oplock パッケージが IRP をペンする前に呼び出されます。 このパラメーターは省略可能であり、 NULL にすることができます。

このルーチンは、次のように宣言されます。

typedef VOID
(*PFLTOPLOCK_PREPOST_CALLBACKDATA_ROUTINE) (
    __in PFLT_CALLBACK_DATA CallbackData,
 __in_opt PVOID Context
      );

このルーチンには、次のパラメーターがあります。

CallbackData

I/O 操作のコールバック データ構造へのポインター。

Context

Context パラメーターで FltOplockBreakToNoneEx に渡されたコンテキスト情報ポインター。

戻り値

FltOplockBreakToNoneEx は 、次のFLT_PREOP_CALLBACK_STATUS コードのいずれかを返します。

リターン コード 説明
FLT_PREOP_COMPLETE
FltOplockBreakToNoneEx でプール割り当てエラーが発生したか、 FsRtlOplockBreakToNoneEx 関数の呼び出しでエラーが返されました。 FltOplockBreakToNoneEx は、IO_STATUS_BLOCK構造体の Status メンバーにエラー コードを設定します。 IO_STATUS_BLOCK構造体は、FLT_CALLBACK_DATA コールバック データ構造の IoStatus メンバーで指定されます。 CallbackData パラメーターは、このFLT_CALLBACK_DATAを指します。
FLT_PREOP_PENDING
oplock の中断が開始されたため、フィルター マネージャーは I/O 操作を作業キューにポストしました。 I/O 操作は、 CallbackData パラメーターが指すコールバック データによって表されます。
FLT_PREOP_SUCCESS_WITH_CALLBACK
CallbackData パラメーターが指すコールバック データはペン処理されず、I/O 操作はすぐに実行されました。 呼び出し元が Flags パラメーターにOPLOCK_FLAG_COMPLETE_IF_OPLOCKED指定した場合、I/O 操作がペンで実行されなかった場合でも、oplock の中断が実際に進行中である可能性があることに注意してください。 これが状況かどうかを判断するために、呼び出し元は、IO_STATUS_BLOCK構造体の Status メンバーでSTATUS_OPLOCK_BREAK_IN_PROGRESSをチェックする必要があります。 IO_STATUS_BLOCK構造体は、FLT_CALLBACK_DATA コールバック データ構造の IoStatus メンバーで指定されます。

注釈

日和見ロックの詳細については、Microsoft Windows SDKドキュメントを参照してください。

要件

要件
サポートされている最小のクライアント FltOplockBreakToNoneEx ルーチンは、Windows 7 以降で使用できます。
対象プラットフォーム ユニバーサル
Header fltkernel.h (Fltkernel.h を含む)
Library FltMgr.lib
[DLL] Fltmgr.sys
IRQL <= APC_LEVEL

こちらもご覧ください

FLT_CALLBACK_DATA

FltInitializeOplock

FsRtlOplockBreakToNoneEx

IO_STATUS_BLOCK