Функция 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

Присвоенное вызывающему объекту значение, используемое для описания групп связанных блокировок. Это значение должно быть равно нулю.

[in] FailImmediately

Если значение TRUE, немедленно возвращается, если файл не может быть заблокирован. Если значение FALSE, дождитесь предоставления запроса на блокировку.

[in] ExclusiveLock

Если значение TRUE, блокировка диапазона байтов является монопольной; в противном случае — общая блокировка.

Возвращаемое значение

Подпрограмма NtLockFile возвращает STATUS_SUCCESS или соответствующее значение NTSTATUS ошибки. Возможные значения NTSTATUS:

Код возврата Описание
STATUS_INSUFFICIENT_RESOURCES Недостаточно ресурсов для предоставления блокировки диапазона байтов для указанного файла.
STATUS_LOCK_NOT_GRANTED Блокировка диапазона байтов не была предоставлена для указанного файла.

Комментарии

Вызывающие файлы NtLockFile должны выполняться в IRQL = PASSIVE_LEVEL и с включенными специальными API ядра**.

Примечание

Если вызов функции NtLockFile происходит в пользовательском режиме, следует использовать имя NtLockFile вместо ZwLockFile.

Для вызовов из драйверов в режиме ядра версии подпрограммы Windows Native System Services NtXxx и Zwмогут вести себя по-разному так, как они обрабатывают и интерпретируют входные параметры. Дополнительные сведения о связях между подпрограммами NtXxx и ZwXxx см. в разделе "Использование версий Nt и Zw" подпрограмм собственных системных служб***.

Требования

   
Минимальная версия клиента Windows 7
Целевая платформа Универсальное
Верхняя часть ntifs.h (include Ntifs.h, FltKernel.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (см. раздел "Примечания")
Правила соответствия DDI HwStorPortProhibitedDDIs, PowerIrpDDis

См. также

ZwUnlockFile