Função FltCancelFileOpen (fltkernel.h)
Um driver de minifiltro pode usar a rotina FltCancelFileOpen para fechar um arquivo recém-aberto ou criado.
Sintaxe
VOID FLTAPI FltCancelFileOpen(
[in] PFLT_INSTANCE Instance,
[in] PFILE_OBJECT FileObject
);
Parâmetros
[in] Instance
Ponteiro de instância opaco para o chamador. Esse parâmetro é necessário e não pode ser NULL.
[in] FileObject
Ponteiro do objeto de arquivo para o arquivo. Esse parâmetro é necessário e não pode ser NULL.
Valor de retorno
Nenhum
Observações
Se um driver de minifiltro determinar que uma operação de criação de arquivo (IRP_MJ_CREATE) deve falhar depois que o sistema de arquivos já tiver concluído a operação com um valor NTSTATUS bem-sucedido, como STATUS_SUCCESS, o driver de minifiltro poderá chamar FltCancelFileOpen de sua rotina de retorno de chamada pós-criação para fechar o arquivo.
Observe que FltCancelFileOpen não desfaz nenhuma modificação no arquivo. Por exemplo, FltCancelFileOpen não exclui um arquivo recém-criado nem restaura um arquivo que foi substituído ou substituído em seu estado anterior.
FltCancelFileOpen deve ser chamado antes que os identificadores sejam criados para o arquivo. Os chamadores podem verificar o Flags membro da estrutura FILE_OBJECT à qual o parâmetro FileObject aponta. Se o sinalizador FO_HANDLE_CREATED estiver definido, isso significa que um ou mais identificadores foram criados para o arquivo, portanto, não é seguro chamar FltCancelFileOpen.
FltCancelFileOpen define o sinalizador FO_FILE_OPEN_CANCELLED no membro sinalizadores do objeto de arquivo para o qual o FileObject aponta. Esse sinalizador indica que a operação de criação foi cancelada e uma solicitação de fechamento (IRP_MJ_CLOSE) será emitida para esse objeto de arquivo.
Depois que a operação de criação tiver sido cancelada, ela não poderá ser relançada. Para obter mais informações, consulte FltReissueSynchronousIo .
FltCancelFileOpen só pode ser chamado da rotina de retorno de chamada pós-criação de um minifiltro. Chamar FltCancelFileOpen de uma rotina de retorno de chamada de postoperation (PFLT_POST_OPERATION_CALLBACK) para qualquer outro tipo de operação de E/S ou chamá-la de uma rotina de retorno de chamada de pré-operação (PFLT_PRE_OPERATION_CALLBACK) é um erro de programação.
Os chamadores de FltCancelFileOpen devem estar em execução no PASSIVE_LEVEL IRQL. No entanto, é seguro que os drivers de minifiltro chamem essa rotina de uma rotina de retorno de chamada pós-criação, pois as rotinas de retorno de chamada pós-criação têm a garantia de serem chamadas no IRQL PASSIVE_LEVEL, no contexto do thread que originou a solicitação de IRP_MJ_CREATE.
Requisitos
Requisito | Valor |
---|---|
da Plataforma de Destino | Universal |
cabeçalho | fltkernel.h (inclua Fltkernel.h) |
biblioteca | FltMgr.lib |
de DLL | Fltmgr.sys |
IRQL | PASSIVE_LEVEL (consulte a seção Comentários) |