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 se sobrepor a outro intervalo que já está bloqueado com um bloqueio não existente ou se o intervalo a ser lido for um subintervalo de outro intervalo que já esteja bloqueado não exclusivamente, o valor nesse parâmetro deverá 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.
Retornar valor
A rotina FltFastIoMdlRead retornará TRUE se a operação for bem-sucedida e FALSE se a operação falhar.
Comentários
A rotina FltFastIoMdlRead ignora o mecanismo IRP usual e retorna uma lista vinculada de listas de descritores de memória (MDL) que o chamador pode usar para acessar diretamente os dados do arquivo armazenado em cache. Essa operação não copia nem armazena dados em buffer e, portanto, é muito mais rápida do que uma leitura normal.
A rotina é semelhante a CcMdlRead e FsRtlMdlReadDev. FltFastIoMdlRead, CcMdlRead e FsRtlMdlReadDev bloqueiam 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 |
---|---|
Plataforma de Destino | Universal |
Cabeçalho | fltkernel.h (include Ntifs.h) |
Biblioteca | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |