Функция 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.
 
Для вызовов из драйверов в режиме ядра версии ntXxx и ZwXxx подпрограммы системных служб Windows Native Могут вести себя по-разному так, как они обрабатывают и интерпретируют входные параметры. Дополнительные сведения о связи между подпрограммами NtXxx и ZwXxx см. в разделе "Использование версий Nt и Zw" подпрограмм собственных системных служб.

Требования

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

См. также

Использование версий Nt и Zw подпрограмм собственных системных служб

ZwUnlockFile