Поделиться через


Функция ZwLockFile (ntifs.h)

Подпрограмма ZwLockFile запрашивает блокировку диапазона байтов для указанного файла.

Синтаксис

NTSYSAPI NTSTATUS ZwLockFile(
  [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, блокировка диапазона байтов является монопольной; в противном случае — общая блокировка.

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

Подпрограмма ZwLockFile возвращает STATUS_SUCCESS или соответствующее значение NTSTATUS, например одно из следующих значений.

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

Комментарии

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

Примечание

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

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

Требования

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

См. также раздел

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

ZwUnlockFile