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 de objeto de arquivo para o arquivo. Esse parâmetro é necessário e não pode ser NULL.
Retornar valor
Nenhum
Comentários
Se um driver de minifiltro determinar que uma operação de abertura de arquivo ou de criação de arquivos (IRP_MJ_CREATE) deve falhar depois que o sistema de arquivos já tiver concluído a operação com um valor NTSTATUS de êxito, 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 ao estado anterior.
FltCancelFileOpen deve ser chamado antes que os identificadores sejam criados para o arquivo. Os chamadores podem marcar o membro Flags da estrutura FILE_OBJECT para a 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 Flags do objeto de arquivo para o qual 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 reemissada. Para obter mais informações, consulte FltReissueSynchronousIo.
FltCancelFileOpen só pode ser chamado da rotina de retorno de chamada pós-criação de um driver de 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 |
---|---|
Plataforma de Destino | Universal |
Cabeçalho | fltkernel.h (inclua Fltkernel.h) |
Biblioteca | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | PASSIVE_LEVEL (consulte a seção Comentários) |