Compartilhar via


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 backup 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 valor de enumeração FSRTL_CHANGE_BACKING_TYPE que indica qual estrutura interna deve ser alterada para referenciar NewFileObject.

Flags

[in] Reservado para uso futuro.

Valor de retorno

A rotina FsRtlChangeBackingFileObject retorna STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, FsRtlChangeBackingFileObject retorna 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 que NewFileObject especifica 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 backup 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.

Observações

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 liberarão o objeto de arquivo antigo até que todas as operações incompletas associadas ao objeto de arquivo antigo tenham sido concluídas. Um status de retorno de STATUS_SUCCESS de FsRtlChangeBackingFileObject não significa que o sistema operacional já alterou o objeto de arquivo.

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

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

Requisitos

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

Consulte também

FSRTL_CHANGE_BACKING_TYPE