NtLockFile 関数 (ntifs.h)
NtLockFile ルーチンは、指定したファイルのバイト範囲ロックを要求します。
構文
__kernel_entry NTSYSCALLAPI NTSTATUS NtLockFile(
[in] HANDLE FileHandle,
[in, optional] HANDLE Event,
[in, optional] PIO_APC_ROUTINE ApcRoutine,
[in, optional] PVOID ApcContext,
[out] PIO_STATUS_BLOCK IoStatusBlock,
[in] PLARGE_INTEGER ByteOffset,
[in] PLARGE_INTEGER Length,
[in] ULONG Key,
[in] BOOLEAN FailImmediately,
[in] BOOLEAN ExclusiveLock
);
パラメーター
[in] FileHandle
バイト範囲ロックが要求されるファイルのハンドル。
[in, optional] Event
呼び出し元によって作成されたイベントへのハンドル。 NULL でない場合、呼び出し元は操作が成功するまで待機状態に設定され、その時点でイベントは Signaled 状態に設定されます。
[in, optional] ApcRoutine
操作の完了後に実行される呼び出し元から提供される APC ルーチンへのポインター。 NULL を指定できます。
[in, optional] ApcContext
APC ルーチンの呼び出し元が指定したコンテキストへのポインター。 この値は、実行時に APC ルーチンに渡されます。 NULL を指定できます。
[out] IoStatusBlock
最終的な状態を含む IO_STATUS_BLOCK 構造体へのポインター。
[in] ByteOffset
ロックする範囲の開始バイト オフセットを指定する変数へのポインター。
[in] Length
ロックする範囲の長さをバイト単位で指定する変数へのポインター。
[in] Key
関連するロックのグループを記述するために使用される呼び出し元割り当て値。 この値は 0 に設定する必要があります。
[in] FailImmediately
TRUE の場合は、ファイルをロックできない場合は直ちに を返します。 FALSE の場合は、ロック要求が許可されるまで待ちます。
[in] ExclusiveLock
TRUE の場合、バイト範囲ロックは排他的です。それ以外の場合は、共有ロック。
戻り値
NtLockFile ルーチンは、STATUS_SUCCESSまたは適切なエラー NTSTATUS 値を返します。 NTSTATUS 値として使用できる値は次のとおりです。
リターン コード | 説明 |
---|---|
STATUS_INSUFFICIENT_RESOURCES | 指定したファイルのバイト範囲ロックを許可するには、リソースが不足しています。 |
STATUS_LOCK_NOT_GRANTED | 指定したファイルに対してバイト範囲ロックが付与されませんでした。 |
注釈
NtLockFile の呼び出し元は、IRQL = PASSIVE_LEVELで実行され、特殊なカーネル APC が有効になっている必要があります**。
注意
NtLockFile 関数の呼び出しがユーザー モードで行われる場合は、"ZwLockFile" ではなく "NtLockFile" という名前を使用する必要があります。
カーネル モード ドライバーからの呼び出しの場合、Windows ネイティブ システム サービス ルーチンの NtXxx および ZwXxx バージョンは、入力パラメーターを処理および解釈する方法で動作が異なります。 ルーチンの NtXxx バージョンと ZwXxx バージョン間の関係の詳細については、「Using Nt and Zw Versions of the Native System Services Routines**」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 7 |
対象プラットフォーム | ユニバーサル |
Header | ntifs.h (Ntifs.h、FltKernel.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL (「解説」セクションを参照) |
DDI コンプライアンス規則 | HwStorPortProhibitedDIs、PowerIrpDDis |