Compartilhar via


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

Confira também

FLT_CALLBACK_DATA

FLT_IS_FASTIO_OPERATION

FLT_IS_FS_FILTER_OPERATION

FLT_IS_IRP_OPERATION

IoIsOperationSynchronous