次の方法で共有


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)

こちらもご覧ください

ZwLockFile