ZwUnlockFile 関数 (ntifs.h)
ZwUnlockFile ルーチンは、ファイル内のバイト範囲ロックのロックを解除します。
構文
NTSYSAPI NTSTATUS ZwUnlockFile(
[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 に設定する必要があります。
戻り値
ZwUnlockFile ルーチンは、成功したSTATUS_SUCCESSまたは適切な NTSTATUS 値を返します。 使用可能な NTSTATUS 値は次のとおりです。
リターン コード | 説明 |
---|---|
STATUS_RANGE_NOT_LOCKED | 指定されたバイト範囲がロックされていません。 |
注釈
ZwUnlockFile ルーチンは、ByteOffset 引数と Length 引数で指定されたバイト範囲を受け取ります。 この範囲は、 以前に ZwUnlockFile ルーチンの 1 回の呼び出しでロックされていたファイル内のバイト範囲と同じである必要があります。 ZwUnlockFile を 1 回呼び出すと、以前にロックされていた 2 つの隣接する範囲のロックを解除することはできません。 また、ZwUnlockFile ルーチンの 1 回の呼び出しで以前にロックされていた範囲の一部をロック解除することもできません。
ZwUnlockFile の呼び出し元は、IRQL = PASSIVE_LEVEL で実行され、特殊なカーネル APCs が有効になっている必要があります**。
注意
ZwUnlockFile 関数の呼び出しがユーザー モードで行われる場合は、"ZwUnlockFile" ではなく "NtUnlockFile" という名前を使用する必要があります。
カーネル モード ドライバーからの呼び出しの場合、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(storport), PowerIrpDDis(wdm) |