Compartir a través de


Función FltFastIoMdlRead (fltkernel.h)

La rutina FltFastIoMdlRead devuelve una lista de descriptores de memoria (MDL) que apunta directamente al intervalo de bytes especificado en la memoria caché de archivos.

Sintaxis

BOOLEAN FLTAPI FltFastIoMdlRead(
        PFLT_INSTANCE    InitiatingInstance,
  [in]  PFILE_OBJECT     FileObject,
  [in]  PLARGE_INTEGER   FileOffset,
  [in]  ULONG            Length,
  [in]  ULONG            LockKey,
  [out] PMDL             *MdlChain,
  [out] PIO_STATUS_BLOCK IoStatus
);

Parámetros

InitiatingInstance

Puntero de instancia opaco para el autor de la llamada. Este parámetro es obligatorio y no puede ser NULL.

[in] FileObject

Puntero a un objeto de archivo para el archivo almacenado en caché.

[in] FileOffset

Puntero a una variable que especifica el desplazamiento de bytes inicial dentro del archivo almacenado en caché que contiene los datos.

[in] Length

Longitud en bytes de los datos que se van a leer de la memoria caché.

[in] LockKey

Valor asociado al intervalo de bytes que se va a bloquear. Si el intervalo para bloquear se superpone a otro intervalo que ya está bloqueado con un bloqueo noclusivo, o si el intervalo que se va a leer es un subrango de otro intervalo que ya está bloqueado de forma no exclusiva, el valor de este parámetro debe ser la clave para ese bloqueo noclusivo El bloqueo debe mantenerse en el proceso primario del subproceso que realiza la llamada. De lo contrario, este parámetro no tiene ningún efecto.

[out] MdlChain

En la salida, un puntero a una lista vinculada de listas de descriptores de memoria (MDL).

[out] IoStatus

Puntero a una estructura IO_STATUS_BLOCK que, en la salida, contiene el estado de la transferencia. Si la operación se realiza correctamente, IoStatus.Status se establece en STATUS_SUCCESS. De lo contrario, se establece en un código de error NTSTATUS adecuado. IoStatus.Information se establece en el número real de bytes que la rutina bloqueó correctamente.

Valor devuelto

La rutina FltFastIoMdlRead devuelve TRUE si la operación se realiza correctamente y FALSE si se produce un error en la operación.

Comentarios

La rutina FltFastIoMdlRead omite el mecanismo IRP habitual y devuelve una lista vinculada de listas de descriptores de memoria (MDL) que el autor de la llamada puede usar para acceder directamente a los datos de archivo almacenados en caché. Esta operación no copia ni almacena en búfer los datos y, por tanto, es mucho más rápido que una lectura normal.

La rutina es similar a CcMdlRead y FsRtlMdlReadDev. FltFastIoMdlRead, CcMdlRead y FsRtlMdlReadDev bloquean las páginas que contienen los datos de archivo almacenados en caché para evitar que el sistema cambie estas páginas al archivo de página. Las páginas permanecen bloqueadas en la memoria hasta que el autor de la llamada invoca la rutina FltFastIoMdlReadComplete .

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado fltkernel.h (incluya Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Consulte también

CcMdlRead

FltFastIoMdlReadComplete

FsRtlMdlReadDev