Função FsRtlPrepareMdlWriteEx (ntifs.h)
A rotina FsRtlPrepareMdlWriteEx
Sintaxe
NTSTATUS FsRtlPrepareMdlWriteEx(
[in] PFILE_OBJECT FileObject,
[in] PLARGE_INTEGER FileOffset,
[in] ULONG Length,
[in] ULONG LockKey,
[out] PMDL *MdlChain,
[out] PIO_STATUS_BLOCK IoStatus
);
Parâmetros
[in] FileObject
Um ponteiro para o objeto de arquivo.
[in] FileOffset
Um ponteiro para um valor que especifica o deslocamento de bytes inicial dentro do cache que contém os dados.
[in] Length
O comprimento em bytes dos dados a serem gravados no 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ãoclusivo ou se o intervalo a ser lido for um subconjunto de outro intervalo que já está bloqueado de forma inexistente, o valor nesse parâmetro deverá ser a chave para esse bloqueio nãoclusivo. 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) que apontam para o intervalo de bytes dentro dos dados armazenados em cache.
[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 de NTSTATUS
Valor de retorno
Código de retorno | Descrição |
---|---|
|
Não foi possível alocar um IRP para a gravação baseada em IRP. |
Observações
Se a E/S rápida estiver disponível para o sistema de arquivos, a rotina de FsRtlPrepareMdlWriteEx
Se a E/S rápida não estiver habilitada, FsRtlPrepareMdlWriteEx gerará uma preparação de gravação MDL baseada em IRP síncrona e retornará os MDLs alocados da solicitação.
As páginas às quais os MDLs apontam estão bloqueadas na memória, mas não são mapeadas no espaço do sistema. O chamador pode executar esse mapeamento chamando MmGetSystemAddressForMdlSafe.
Cada chamada para FsRtlPrepareMdlWriteEx deve ser seguida por uma chamada para CcMdlWriteComplete.
Requisitos
Requisito | Valor |
---|---|
da Plataforma de Destino |
Universal |
cabeçalho | ntifs.h (inclua Ntifs.h) |
biblioteca | NtosKrnl.lib |
de DLL |
NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |