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 |