NtUnlockFile 関数 (ntifs.h)

NtUnlockFile ルーチンは、ファイル内のバイト範囲ロックのロックを解除します。

構文

__kernel_entry NTSYSCALLAPI NTSTATUS NtUnlockFile(
  [in]  HANDLE           FileHandle,
  [out] PIO_STATUS_BLOCK IoStatusBlock,
  [in]  PLARGE_INTEGER   ByteOffset,
  [in]  PLARGE_INTEGER   Length,
  [in]  ULONG            Key
);

パラメーター

[in] FileHandle

ロックを解除するバイト範囲を持つファイルを表すファイル オブジェクトのハンドル。

[out] IoStatusBlock

最終的な状態を含む IO_STATUS_BLOCK 構造体へのポインター。

[in] ByteOffset

ロックを解除するバイト範囲の開始バイト オフセットを指定する変数へのポインター。

[in] Length

ロックを解除するバイト範囲の長さをバイト単位で指定する変数へのポインター。

[in] Key

関連するロックのグループを記述するために使用される呼び出し元割り当て値。 この値は 0 に設定する必要があります。

戻り値

NtUnlockFile ルーチンは、成功したSTATUS_SUCCESSまたは適切な NTSTATUS 値を返します。 使用可能な NTSTATUS 値は次のとおりです。

リターン コード 説明
STATUS_RANGE_NOT_LOCKED 指定されたバイト範囲がロックされていません。

注釈

NtUnlockFile ルーチンは、ByteOffset 引数と Length 引数で指定されたバイト範囲を受け取ります。 この範囲は、 以前に NtUnlockFile ルーチンの 1 回の呼び出しでロックされていたファイル内のバイト範囲と同じである必要があります。 NtUnlockFile を 1 回呼び出すと、以前にロックされていた隣接する 2 つの範囲のロックを解除することはできません。 また、以前にロックされていた範囲の一部を 、NtUnlockFile ルーチンへの 1 回の呼び出しでロック解除することもできません。

NtUnlockFile の呼び出し元は、IRQL = PASSIVE_LEVELで実行され、特殊なカーネル APCs が有効になっている必要があります**。

注意

NtUnlockFile 関数の呼び出しがカーネル モードで発生する場合は、"NtUnlockFile" ではなく"ZwUnlockFile" という名前を使用する必要があります。

カーネル モード ドライバーからの呼び出しの場合、Windows ネイティブ システム サービス ルーチンの NtXxx および ZwXxx バージョンは、入力パラメーターを処理および解釈する方法で動作が異なる場合があります。 ルーチンの NtXxx バージョンと ZwXxx バージョンの間の関係の詳細については、「ネイティブ システム サービス ルーチンの Nt バージョンと Zw バージョンの使用」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 7
対象プラットフォーム ユニバーサル
Header ntifs.h (Ntifs.h、FltKernel.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL PASSIVE_LEVEL (「解説」セクションを参照)
DDI コンプライアンス規則 HwStorPortProhibitedDDIs、PowerIrpDDis

こちらもご覧ください

Nt および Zw バージョンのネイティブ システム サービス ルーチンの使用

NtLockFile