Función ZwLockFile (ntifs.h)

La rutina ZwLockFile solicita un bloqueo de intervalo de bytes para el archivo especificado.

Sintaxis

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
);

Parámetros

[in] FileHandle

Identificador del archivo en el que se solicita un bloqueo de intervalo de bytes.

[in, optional] Event

Identificador de un evento creado por el autor de la llamada. Si no es NULL, el autor de la llamada se coloca en un estado de espera hasta que la operación se realiza correctamente, en cuyo momento el evento se establece en el estado Signaled.

[in, optional] ApcRoutine

Puntero a una rutina de APC proporcionada por el autor de la llamada que se ejecuta una vez completada la operación. Puede ser NULL.

[in, optional] ApcContext

Puntero a un contexto especificado por el autor de la llamada para la rutina de APC. Este valor se pasa a la rutina de APC cuando se ejecuta. Puede ser NULL.

[out] IoStatusBlock

Puntero a una estructura IO_STATUS_BLOCK que contiene el estado final.

[in] ByteOffset

Puntero a una variable que especifica el desplazamiento de bytes inicial del intervalo que se va a bloquear.

[in] Length

Puntero a una variable que especifica la longitud en bytes del intervalo que se va a bloquear.

[in] Key

Valor asignado por el autor de la llamada que se usa para describir grupos de bloqueos relacionados. Este valor debe establecerse en cero.

[in] FailImmediately

Si es TRUE, devuelve inmediatamente si el archivo no se puede bloquear. Si es FALSE, espere a que se conceda la solicitud de bloqueo.

[in] ExclusiveLock

Si es TRUE, el bloqueo de intervalo de bytes es exclusivo; de lo contrario, bloqueo compartido.

Valor devuelto

La rutina ZwLockFile devuelve STATUS_SUCCESS o un valor NTSTATUS de error adecuado, como uno de los siguientes.

Código de error Descripción
STATUS_INSUFFICIENT_RESOURCES Existen recursos insuficientes para conceder el bloqueo de intervalo de bytes para el archivo especificado.
STATUS_LOCK_NOT_GRANTED No se concedió el bloqueo de intervalo de bytes para el archivo especificado.

Comentarios

Los autores de llamadas de ZwLockFile deben ejecutarse en IRQL = PASSIVE_LEVEL y con las API de kernel especiales habilitadas.

Nota

Si la llamada a la función ZwLockFile se produce en modo de usuario, debe usar el nombre "NtLockFile" en lugar de "ZwLockFile".

En el caso de las llamadas desde controladores en modo kernel, las versiones NtXxx y ZwXxx de una rutina de Windows Native System Services pueden comportarse de forma diferente en la forma en que controlan e interpretan los parámetros de entrada. Para obtener más información sobre la relación entre las versiones NtXxx y ZwXxx de una rutina, vea Using Nt and Zw Versions of the Native System Services Routines.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 7
Plataforma de destino Universal
Encabezado ntifs.h (incluya Ntifs.h, FltKernel.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (consulte la sección Comentarios)
Reglas de cumplimiento de DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Consulte también

Uso de las versiones Nt y Zw de las rutinas nativas de System Services

ZwUnlockFile