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


Функция 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 и с поддержкой специальных API ядра.

Заметка

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

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 7
целевая платформа Всеобщий
заголовка ntifs.h (include Ntifs.h, FltKernel.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (см. раздел "Примечания")
правил соответствия DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

См. также

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

ZwUnlockFile