Função FltOplockFsctrlEx (fltkernel.h)
A rotina FltOplockFsctrlEx executa várias operações de bloqueio oportunista (oplock) em nome de um driver de minifiltro.
Sintaxe
FLT_PREOP_CALLBACK_STATUS FLTAPI FltOplockFsctrlEx(
[in] POPLOCK Oplock,
[in] PFLT_CALLBACK_DATA CallbackData,
[in] ULONG OpenCount,
[in] ULONG Flags
);
Parâmetros
[in] Oplock
Ponteiro oplock oplock opaco para o arquivo. Esse ponteiro deve ter sido inicializado por uma chamada anterior para FltInitializeOplock.
[in] CallbackData
Ponteiro para a estrutura de FLT_CALLBACK_DATA para a operação de E/S. Esse parâmetro é necessário e não pode ser NULL.
[in] OpenCount
Número de identificadores de usuário para o arquivo, se um oplock exclusivo estiver sendo solicitado. Definir um valor diferente de zero para uma solicitação oplock de nível 2, R ou RH indica que há bloqueios de intervalo de bytes no arquivo. Para obter informações sobre tipos oplock, consulte Visão geral do Oplock.
[in] Flags
Uma máscara de bits para as operações oplock associadas. Um driver de minifiltro define bits para especificar o comportamento de FltOplockFsctrlEx. O parâmetro Flags tem as seguintes opções:
Valor | Significado |
---|---|
OPLOCK_FSCTRL_FLAG_ALL_KEYS_MATCH (0x00000001) | O sistema de arquivos verificou que todas as chaves oplock em todos os identificadores que estão abertos atualmente correspondem. Ao especificar esse sinalizador, você permite que o pacote oplock conceda um oplock de nível RW ou RWH quando houver mais de um identificador aberto para o arquivo. Para obter mais informações sobre tipos oplock, consulte Visão geral do Oplock. |
Retornar valor
FltOplockFsctrlEx retorna FLT_PREOP_PENDING para algumas operações FSCTL. Para obter mais informações, consulte as páginas de referência para os códigos FSCTL listados na seção Comentários a seguir. Caso contrário, FltOplockFsctrlEx retornará FLT_PREOP_COMPLETE.
Comentários
Um driver de minifiltro chama FltOplockFsctrlEx para executar várias operações de bloqueio oportunistas para uma operação de criação ou operação de E/S de controle do sistema de arquivos.
A estrutura FLT_CALLBACK_DATA apontada pelo parâmetro CallbackData deve representar uma operação de IRP_MJ_FILE_SYSTEM_CONTROL ou IRP_MJ_CREATE baseada em IRP.
Se a operação for uma operação IRP_MJ_FILE_SYSTEM_CONTROL, FltOplockFsctrlEx poderá ser usado com os seguintes códigos FSCTL:
- FSCTL_OPBATCH_ACK_CLOSE_PENDING
- FSCTL_OPLOCK_BREAK_ACK_NO_2
- FSCTL_OPLOCK_BREAK_ACKNOWLEDGE
- FSCTL_OPLOCK_BREAK_NOTIFY
- FSCTL_REQUEST_BATCH_OPLOCK
- FSCTL_REQUEST_FILTER_OPLOCK
- FSCTL_REQUEST_OPLOCK_LEVEL_1
- FSCTL_REQUEST_OPLOCK_LEVEL_2
- FSCTL_REQUEST_OPLOCK
O código FSCTL é definido no membro FsControlCode da estrutura FLT_PARAMETERS para a operação. Para obter mais informações sobre FsControlCode e outros parâmetros de IRP_MJ_FILE_SYSTEM_CONTROL, consulte FLT_PARAMETERS para IRP_MJ_FILE_SYSTEM_CONTROL.
Para obter mais informações sobre bloqueios oportunistas, consulte a documentação do SDK do Microsoft Windows.
Se a operação for uma solicitação IRP_MJ_CREATE , FltOplockFsctrl poderá ser usado para solicitar um bloqueio oportunista de filtro pendente se todas as seguintes condições forem verdadeiras:
- O valor do parâmetro OpenCount deve ser 1.
- O valor do parâmetro DesiredAccess para a solicitação IRP_MJ_CREATE é FILE_READ_ATTRIBUTES. Esse parâmetro é definido no membro SecurityContext da estrutura FLT_PARAMETERS da operação. Para obter mais informações, consulte FLT_PARAMETERS para IRP_MJ_CREATE.
- O valor do parâmetro ShareAccess para a operação de IRP_MJ_CREATE é FILE_SHARE_READ, FILE_SHARE_WRITE ou FILE_SHARE_DELETE. Esse parâmetro é definido no membro ShareAccess da estrutura FLT_PARAMETERS para a operação. Para obter mais informações, consulte FLT_PARAMETERS para IRP_MJ_CREATE.
Filtros e sistemas de arquivos que chamam essa função devem sincronizar chamadas no pacote oplock fornecido pelo sistema. Consulte Sincronização do Oplock para obter mais informações.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Essa rotina está disponível a partir do Windows 8. |
Plataforma de Destino | Universal |
Cabeçalho | fltkernel.h (inclua Fltkernel.h) |
Biblioteca | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | <= APC_LEVEL |
Confira também
FLT_PARAMETERS para IRP_MJ_CREATE
FLT_PARAMETERS para IRP_MJ_FILE_SYSTEM_CONTROL
FSCTL_OPBATCH_ACK_CLOSE_PENDING