Partilhar via


Função FltFastIoMdlRead (fltkernel.h)

A rotina FltFastIoMdlRead retorna uma MDL (lista de descritores de memória) que aponta diretamente para o intervalo de bytes especificado no cache de arquivos.

Sintaxe

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

Ponteiro de instância opaco para o chamador. Esse parâmetro é necessário e não pode ser NULL.

[in] FileObject

Um ponteiro para um objeto de arquivo para o arquivo armazenado em cache.

[in] FileOffset

Um ponteiro para uma variável que especifica o deslocamento de bytes inicial dentro do arquivo armazenado em cache que contém os dados.

[in] Length

O comprimento em bytes dos dados a serem lidos do cache.

[in] LockKey

Um valor associado ao intervalo de bytes a ser bloqueado. Se o intervalo a ser bloqueado sobrepor outro intervalo que já está bloqueado com um bloqueio nãoclusivo ou se o intervalo a ser lido for um subconjunto de outro intervalo que já está bloqueado não exclusivamente, o valor nesse parâmetro deve ser a chave para esse bloqueio não existente O bloqueio deve ser mantido pelo processo pai do thread de chamada. Caso contrário, esse parâmetro não terá efeito.

[out] MdlChain

Na saída, um ponteiro para uma lista vinculada de MDLs (listas de descritores de memória).

[out] IoStatus

Um ponteiro para uma estrutura IO_STATUS_BLOCK que, na saída, contém o status da transferência. Se a operação for bem-sucedida, IoStatus.Status será definido como STATUS_SUCCESS. Caso contrário, ele será definido como um código de erro NTSTATUS apropriado. IoStatus.Information é definido como o número real de bytes que a rotina bloqueou com êxito.

Valor de retorno

A rotina FltFastIoMdlRead retornará VERDADEIRO se a operação for bem-sucedida e FALSE se a operação falhar.

Observações

A rotina FltFastIoMdlRead ignora o mecanismo IRP usual e retorna uma lista vinculada de MDL (listas de descritores de memória) que o chamador pode usar para acessar diretamente os dados do arquivo armazenado em cache. Essa operação não copia ou armazena dados em buffer e, portanto, é muito mais rápida do que uma leitura normal.

A rotina é semelhante a CcMdlRead e FsRtlMdlReadDev. FltFastIoMdlRead, CcMdlReade FsRtlMdlReadDev bloquear as páginas que contêm os dados de arquivo armazenados em cache para impedir que o sistema troque essas páginas pelo arquivo de página. As páginas permanecem bloqueadas na memória até que o chamador invoque a rotina FltFastIoMdlReadComplete.

Requisitos

Requisito Valor
da Plataforma de Destino Universal
cabeçalho fltkernel.h (inclua Ntifs.h)
biblioteca NtosKrnl.lib
de DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Consulte também

CcMdlRead

FltFastIoMdlReadComplete

FsRtlMdlReadDev