Função FsRtlChangeBackingFileObject (ntifs.h)

A rotina FsRtlChangeBackingFileObject substitui o objeto de arquivo atual por um novo objeto de arquivo.

Sintaxe

NTSTATUS FsRtlChangeBackingFileObject(
  PFILE_OBJECT              CurrentFileObject,
  PFILE_OBJECT              NewFileObject,
  FSRTL_CHANGE_BACKING_TYPE ChangeBackingType,
  ULONG                     Flags
);

Parâmetros

CurrentFileObject

[in, opcional] O objeto de arquivo atual. Se CurrentFileObject for NULL, o objeto de arquivo atual do sistema operacional será definido como NewFileObject. Se não for NULL, o objeto de arquivo de backup será alterado para NewFileObject somente se o objeto de arquivo de suporte atual do sistema operacional for igual a esse valor. Se esse objeto de arquivo não pertencer ao fluxo, a operação falhará.

NewFileObject

[in] O novo objeto de arquivo que o sistema operacional fará referência e armazenará internamente.

ChangeBackingType

[in] Um FSRTL_CHANGE_BACKING_TYPE valor de enumeração que indica qual estrutura interna deve ser alterada para referenciar NewFileObject.

Flags

[in] Reservado para uso futuro.

Retornar valor

A rotina FsRtlChangeBackingFileObject retornará STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, FsRtlChangeBackingFileObject retornará o código de erro apropriado. A tabela a seguir contém códigos de erro que FsRtlChangeBackingFileObject pode retornar.

Código de retorno Descrição
STATUS_INVALID_PARAMETER_2 A operação de alteração falhou porque o objeto de arquivo especificado por NewFileObject não representa o mesmo fluxo que CurrentFileObject.
STATUS_INVALID_PARAMETER_3 A operação de alteração falhou porque o chamador especificou um tipo de suporte inválido em ChangeBackingType.
STATUS_INVALID_PARAMETER_4 A operação de alteração falhou porque o chamador especificou um valor inválido em Flags.
STATUS_NOT_SUPPORTED A operação de alteração falhou porque o chamador obteve o objeto de arquivo de uma maneira que não permite a troca subsequente do objeto de arquivo. Por exemplo, se o chamador obteve o objeto de arquivo com uma chamada para CcGetFileObjectFromSectionPtrs, não é seguro trocar o objeto de arquivo.

Comentários

A rotina FsRtlChangeBackingFileObject altera o objeto de arquivo para um dos seguintes:

  • Uma das áreas de controle de imagem do gerenciador de memória para o fluxo

  • A área de controle de dados do gerenciador de memória para o fluxo

  • O mapa de cache compartilhado do gerenciador de cache para o fluxo

A rotina FsRtlChangeBackingFileObject não é síncrona. Ele processa a solicitação de uma alteração do objeto de arquivo e retorna imediatamente. O gerenciador de cache e o gerenciador de memória sincronizam a alteração do objeto de arquivo e não liberam o objeto de arquivo antigo até que todas as operações incompletas associadas ao objeto de arquivo antigo tenham sido concluídas. Um retorno status de STATUS_SUCCESS de FsRtlChangeBackingFileObject não significa que o sistema operacional já alterou o objeto de arquivo.

No entanto, depois que FsRtlChangeBackingFileObject for executado com êxito , o sistema operacional associará todas as operações futuras ao novo objeto de arquivo.

Para alterar o objeto de arquivo para mais de um tipo de suporte, o chamador deve chamar FsRtlChangeBackingFileObject várias vezes, uma vez para que cada tipo de suporte seja alterado.

Requisitos

Requisito Valor
Cliente mínimo com suporte A rotina FsRtlChangeBackingFileObject está disponível a partir do Windows Vista.
Plataforma de Destino Universal
Cabeçalho ntifs.h (inclua Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Regras de conformidade da DDI PowerIrpDDis(wdm)

Confira também

FSRTL_CHANGE_BACKING_TYPE