Função FsRtlOplockBreakToNoneEx (ntifs.h)
A rotina
Sintaxe
NTSTATUS FsRtlOplockBreakToNoneEx(
[in, out] POPLOCK Oplock,
[in] PIRP Irp,
[in] ULONG Flags,
[in, optional] PVOID Context,
[in, optional] POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine,
[in, optional] POPLOCK_FS_PREPOST_IRP PostIrpRoutine
);
Parâmetros
[in, out] Oplock
Um ponteiro oplock oplock opaco para o arquivo. Esse ponteiro deve ter sido inicializado por uma chamada anterior para FsRtlInitializeOplock.
[in] Irp
Um ponteiro para o IRP para a operação de E/S.
[in] Flags
Uma máscara de bits para a operação de E/S do arquivo associado. Um sistema de arquivos ou driver de filtro define bits para especificar o comportamento de FsRtlOplockBreakToNoneEx. O parâmetro sinalizadores de
OPLOCK_FLAG_COMPLETE_IF_OPLOCKED (0x00000001)
Especifica para permitir que uma quebra de oplock prossiga sem bloquear ou aguardar a operação que causou a interrupção do oplock. Normalmente, esse sinalizador só será usado se o IRP que o parâmetro Irp apontar para declarar uma operação de IRP_MJ_CREATE.
[in, optional] Context
Um ponteiro para informações de contexto definidas pelo chamador a serem passadas para as rotinas de retorno de chamada para as quais os parâmetros
[in, optional] CompletionRoutine
Um ponteiro para uma rotina de retorno de chamada fornecida pelo chamador. Se uma quebra de oplock estiver em andamento, essa rotina será chamada quando a interrupção for concluída. Esse parâmetro é opcional e pode ser NULL. Se for NULL, o chamador será colocado em um estado de espera até que a interrupção do oplock seja concluída.
Essa rotina é declarada da seguinte maneira:
typedef VOID
(*POPLOCK_WAIT_COMPLETE_ROUTINE) (
IN PVOID Context,
IN PIRP Irp
);
Essa rotina tem os seguintes parâmetros:
Contexto
Um ponteiro de informações de contexto que foi passado no parâmetro Context para FsRtlOplockBreakToNoneEx.
Irp
Um ponteiro para o IRP para a operação de E/S.
[in, optional] PostIrpRoutine
Um ponteiro para uma rotina de retorno de chamada fornecida pelo chamador a ser chamada se a operação de E/S estiver pendente. A rotina é chamada antes do pacote oplock aguardar o IRP. Esse parâmetro é opcional e pode ser NULL.
Essa rotina é declarada da seguinte maneira:
typedef VOID
(*POPLOCK_FS_PREPOST_IRP) (
IN PVOID Context,
IN PIRP Irp
);
Contexto
Um ponteiro de informações de contexto que foi passado no parâmetro Context para FsRtlOplockBreakToNoneEx.
Irp
Um ponteiro para o IRP para a operação de E/S.
Valor de retorno
FsRtlOplockBreakToNoneEx retorna STATUS_SUCCESS ou um código NTSTATUS apropriado, como um dos seguintes:
Código de retorno | Descrição |
---|---|
|
O IRP foi cancelado. STATUS_CANCELLED é um código de erro. |
|
Uma quebra de oplock está em andamento. Portanto, o IRP estava pendente. STATUS_PENDING é um código de sucesso. |
|
Uma quebra de bloqueio oportunista (oplock) está em andamento. STATUS_OPLOCK_BREAK_IN_PROGRESS é um código de êxito que |
Observações
Para obter mais informações sobre bloqueios oportunistas, consulte a documentação do SDK do Microsoft Windows.
Os minifiltros devem chamar FltOplockBreakToNoneEx em vez de FsRtlOplockBreakToNoneEx .
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | A rotina FsRtlOplockBreakToNoneEx está disponível a partir do Windows 7. |
da Plataforma de Destino |
Universal |
cabeçalho | ntifs.h (inclua Ntifs.h) |
biblioteca | NtosKrnl.lib |
de DLL |
NtosKrnl.exe |
IRQL | <= APC_LEVEL |