次の方法で共有


FsRtlInitializeFileLock 関数 (ntifs.h)

FsRtlInitializeFileLock ルーチンは、FILE_LOCK構造体を初期化します。

構文

void FsRtlInitializeFileLock(
  [in]           PFILE_LOCK                 FileLock,
  [in, optional] PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine,
  [in, optional] PUNLOCK_ROUTINE            UnlockRoutine
);

パラメーター

[in] FileLock

初期化されていない FILE_LOCK 構造体へのポインター。

[in, optional] CompleteLockIrpRoutine

IRP_MJ_LOCK_CONTROL要求が完了したときに呼び出されるPCOMPLETE_LOCK_IRP_ROUTINE型指定コールバック ルーチンへのポインター。 このパラメーターは省略可能であり、NULL にすることができます。

[in, optional] UnlockRoutine

バイト範囲のロックが解除されたときに呼び出される PUNLOCK_ROUTINE型指定されたコールバック ルーチンへのポインター。 このパラメーターは省略可能であり、NULL にすることができます。

戻り値

なし

解説

FsRtlInitializeFileLock は、初期化されていないFILE_LOCK構造体を初期化します。

FsRtlInitializeFileLock または FltAllocateFileLock によって既に初期化されているFILE_LOCK構造体に対して FsRtlInitializeFileLock を呼び出すプログラミング エラーです。ただし、その構造体が FsRtlUninitializeFileLock の後続の呼び出しによって初期化されていない場合を除きます。

初期化後、FILE_LOCK構造体を使用して、 FsRtlProcessFileLock またはFsRtlFastLock を呼び出すことによって、ファイル内のバイト範囲をロックできます。 FsRtlProcessFileLock はロック IRP を処理します。 FsRtlFastLock は 、IRP 以外のロックを実行します。

FILE_LOCK構造体が不要になった場合は、FsRtlUninitializeFileLock を呼び出すことで初期化を解除できます。 初期化されていないFILE_LOCK構造体は、 FsRtlInitializeFileLock を呼び出すことで再利用できるように初期化できます。

ミニフィルターは、 FsRtlInitializeFileLock の代わりに FltInitializeFileLock を呼び出す必要があります。

要件

要件
対象プラットフォーム ユニバーサル
Header ntifs.h (Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL <= APC_LEVEL
DDI コンプライアンス規則 HwStorPortProhibitedDDIs(storport)

こちらもご覧ください

FILE_LOCK

FltInitializeFileLock

FltAllocateFileLock

FsRtlAreThereCurrentFileLocks

FsRtlFastLock

FsRtlProcessFileLock

FsRtlUninitializeFileLock

IRP_MJ_LOCK_CONTROL

IoCompleteRequest

PCOMPLETE_LOCK_IRP_ROUTINE

PUNLOCK_ROUTINE