estrutura FS_FILTER_CALLBACK_DATA (ntifs.h)
FS_FILTER_CALLBACK_DATA é a estrutura de dados de retorno de chamada para a operação de FS_FILTER_CALLBACK ou FS_FILTER_COMPLETION_CALLBACK de um FS_FILTER_CALLBACKS.
Sintaxe
typedef struct _FS_FILTER_CALLBACK_DATA {
ULONG SizeOfFsFilterCallbackData;
UCHAR Operation;
UCHAR Reserved;
struct _DEVICE_OBJECT *DeviceObject;
struct _FILE_OBJECT *FileObject;
FS_FILTER_PARAMETERS Parameters;
} FS_FILTER_CALLBACK_DATA, *PFS_FILTER_CALLBACK_DATA;
Membros
SizeOfFsFilterCallbackData
Tamanho dessa estrutura, em bytes. Defina como sizeof(FS_FILTER_CALLBACK_DATA)
.
Operation
Operação do sistema de arquivos para a qual a rotina de retorno de chamada deve ser invocada. Essa operação pode ser uma das seguintes:
- FS_FILTER_ACQUIRE_FOR_SECTION_SYNCHRONIZATION
- FS_FILTER_RELEASE_FOR_SECTION_SYNCHRONIZATION
- FS_FILTER_ACQUIRE_FOR_MOD_WRITE
- FS_FILTER_RELEASE_FOR_MOD_WRITE
- FS_FILTER_ACQUIRE_FOR_CC_FLUSH
- FS_FILTER_RELEASE_FOR_CC_FLUSH FS_FILTER_QUERY_OPEN
Reserved
Reservado para uso do sistema.
DeviceObject
Objeto de dispositivo para esta operação.
FileObject
Objeto de arquivo para esta operação.
Parameters
União que contém parâmetros específicos da operação. Consulte Observações.
Comentários
é um membro da estrutura FS_FILTER_CALLBACKS , que é passada para FsRtlRegisterFileSystemFilterCallbacks em um sistema de arquivos ou a rotina DriverEntry do driver de filtro.
A união Parâmetros é definida da seguinte maneira:
typedef union _FS_FILTER_PARAMETERS {
//
// AcquireForModifiedPageWriter
//
struct {
PLARGE_INTEGER EndingOffset;
PERESOURCE *ResourceToRelease;
} AcquireForModifiedPageWriter;
//
// ReleaseForModifiedPageWriter
//
struct {
PERESOURCE ResourceToRelease;
} ReleaseForModifiedPageWriter;
//
// AcquireForSectionSynchronization
//
struct {
FS_FILTER_SECTION_SYNC_TYPE SyncType;
ULONG PageProtection;
PFS_FILTER_SECTION_SYNC_OUTPUT OutputInformation;
ULONG Flags;
} AcquireForSectionSynchronization;
//
// QueryOpen
//
struct {
PIRP Irp;
PVOID FileInformation;
PULONG Length;
FILE_INFORMATION_CLASS FileInformationClass;
NTSTATUS CompletionStatus;
} QueryOpen;
//
// Other
//
struct {
PVOID Argument1;
PVOID Argument2;
PVOID Argument3;
PVOID Argument4;
PVOID Argument5;
} Others;
} FS_FILTER_PARAMETERS, *PFS_FILTER_PARAMETERS;
Os membros da estrutura da união FS_FILTER_PARAMETERS são descritos da seguinte maneira.
AcquireForModifiedPageWriter
- EndingOffset: deslocamento do último byte que está sendo gravado mais um.
- ResourceToRelease: recurso a ser liberado. Esse parâmetro não deve ter um valor NULL .
ReleaseForModifiedPageWriter
- ResourceToRelease: recurso a ser liberado. Esse parâmetro não deve ter um valor NULL .
AcquireForSectionSynchronization
SyncType: tipo de sincronização solicitado para a seção. Defina como SyncTypeCreateSection se uma seção estiver sendo criada; Caso contrário, SyncTypeOther .
PageProtection: tipo de proteção de página solicitada para a seção. Deve ser zero se SyncType for SyncTypeOther. Caso contrário, um dos seguintes sinalizadores, possivelmente ORed com PAGE_NOCACHE:
- PAGE_NOACCESS
- PAGE_READONLY
- PAGE_READWRITE
- PAGE_WRITECOPY
- PAGE_EXECUTE
- PAGE_EXECUTE_READ
- PAGE_EXECUTE_READWRITE
- PAGE_EXECUTE_WRITECOPY
- PAGE_GUARD
- PAGE_NOCACHE
- PAGE_WRITECOMBINE
OutputInformation: uma estrutura FS_FILTER_SECTION_SYNC_OUTPUT que contém as informações de saída estendidas da seção.
Sinalizadores: quando SyncType é SyncTypeCreateSection, Flags pode ser um dos seguintes valores:
- FS_FILTER_SECTION_SYNC_IN_FLAG_DONT_UPDATE_LAST_ACCESS (0x00000001): o sistema de arquivos não deve atualizar a hora do último acesso ao arquivo por meio da seção que está sendo criada.
- FS_FILTER_SECTION_SYNC_IN_FLAG_DONT_UPDATE_LAST_WRITE (0x00000002): o sistema de arquivos não deve atualizar o último tempo de gravação para modificações no arquivo por meio da seção que está sendo criada.
QueryOpen
Irp: ponteiro para o IRP associado a essa operação.
FileInformation: ponteiro para um buffer alocado pelo chamador no qual a rotina grava as informações solicitadas sobre o objeto de arquivo. O membro FileInformationClass especifica o tipo de informação que o chamador solicita.
Comprimento: o tamanho, em bytes, do buffer apontado por FileInformation.
CompletionStatus: um valor NTSTATUS que recebe a conclusão final status e informações sobre a operação. CompletionStatus pode ser definido pelo retorno de chamada PostQueryOpen para falhar na operação, pois os retornos de chamada pós não têm nenhum valor retornado. Isso é usado principalmente para que o retorno de chamada postQueryOpen possa retornar STATUS_FLT_DISALLOW_FSFILTER_IO para solicitar fallback para o caminho lento. Isso faz com que o gerenciador de E/S ate a solicitação executando uma abertura/consulta/fechamento do arquivo. Da mesma forma, o retorno de chamada PreQueryOpen pode retornar STATUS_FLT_DISALLOW_FSFILTER_IO para solicitar fallback para o caminho lento.
FileInformationClass: tipo de informação a ser retornado sobre o arquivo, no buffer para o qual FileInformation aponta. Os drivers intermediários e de dispositivo podem especificar qualquer um dos seguintes valores de FILE_INFORMATION_CLASS . Outros valores causam falha na chamada e não devem ser passados para chamadas PreQueryOpen/PostQueryOpen.
FILE_INFORMATION_CLASS valor Tipo de informação retornada FileStatInformation Uma estrutura FILE_STAT_INFORMATION . Essa estrutura contém uma máscara de acesso. Para obter mais informações sobre máscaras de acesso, consulte ACCESS_MASK. FileStatLxInformation Uma estrutura FILE_STAT_LX_INFORMATION . Essa estrutura contém uma máscara de acesso. Para obter mais informações sobre máscaras de acesso, consulte ACCESS_MASK. FileCaseSensitiveInformation Uma estrutura FILE_CASE_SENSITIVE_INFORMATION . Others
- Argument1: reservado para uso futuro.
- Argument2: reservado para uso futuro.
- Argument3: reservado para uso futuro.
- Argumento4: reservado para uso futuro.
- Argumento5: reservado para uso futuro.
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | ntifs.h |
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de