Função FltIsOperationSynchronous (fltkernel.h)
A rotina FltIsOperationSynchronous determina se uma determinada estrutura de dados de retorno de chamada (FLT_CALLBACK_DATA) representa uma operação de E/S síncrona ou assíncrona.
Sintaxe
BOOLEAN FLTAPI FltIsOperationSynchronous(
[in] PFLT_CALLBACK_DATA CallbackData
);
Parâmetros
[in] CallbackData
Ponteiro para a estrutura de dados de retorno de chamada para a operação (FLT_CALLBACK_DATA).
Retornar valor
FltIsOperationSynchronous retornará TRUE se a operação for síncrona e FALSE se a operação for assíncrona.
Comentários
FltIsOperationSynchronous determina se uma determinada estrutura de dados de retorno de chamada (FLT_CALLBACK_DATA) representa uma operação de E/S síncrona ou assíncrona, de acordo com as seguintes condições:
Se a operação não for uma operação de E/S baseada em IRP, a operação será síncrona. Para determinar se uma operação é baseada em IRP, use a macro FLT_IS_IRP_OPERATION .
Se a operação for uma operação de E/S de paginação assíncrona, a operação será assíncrona, mesmo que uma das outras condições nessa lista seja verdadeira.
Se a operação for uma operação de E/S de paginação síncrona, a operação será síncrona.
Se o objeto de arquivo da operação tiver sido aberto para E/S síncrona, a operação será síncrona.
Se o sinalizador IRP_SYNCHRONOUS_API estiver definido no IRP para a operação, a operação será síncrona. Esse sinalizador é definido para operações, como IRP_MJ_QUERY_INFORMATION e IRP_MJ_SET_INFORMATION, que são sempre síncronas, mesmo quando executadas em um objeto de arquivo que foi aberto para E/S assíncrona.
Se nenhuma das condições acima for verdadeira, a operação será assíncrona.
Observação
FltIsOperationSynchronous também retornará TRUE se a estrutura de dados de retorno de chamada representar uma operação de IRP_MJ_DEVICE_CONTROL, IRP_MJ_INTERNAL_DEVICE_CONTROL ou IRP_MJ_FILE_SYSTEM_CONTROL com um IOCTL (código de controle de E/S) ou um código de controle do sistema de arquivos (FSCTL) definido com METHOD_BUFFERED, mesmo que o objeto de arquivo tenha sido aberto para E/S assíncrona. É provável que essa solicitação seja síncrona pelo sistema de arquivos, mas isso não é necessariamente verdadeiro em todos os casos.
Quando FltIsOperationSynchronous retorna TRUE, isso não indica que a operação de E/S está sincronizada. Ou seja, o valor TRUE não indica que um driver de minifiltro retornou FLT_PREOP_SYNCHRONIZE na rotina de retorno de chamada de pré-operação (PFLT_POST_OPERATION_CALLBACK) para essa operação. Em vez disso, FltIsOperationSynchronous retorna TRUE para indicar que a operação de E/S é síncrona da perspectiva do gerente de E/S.
FltIsOperationSynchronous pode ser chamado para todas as classes de operações: E/S rápida, retornos de chamada FSFilter (filtro do sistema de arquivos) e operações baseadas em IRP.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Universal |
Cabeçalho | fltkernel.h (inclua Fltkernel.h) |
Biblioteca | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | Qualquer nível |