PMRX_CHANGE_BUFFERING_STATE_CALLDOWN função de retorno de chamada (mrx.h)

A rotinaMRxCompleteBufferingStateChangeRequest é chamada pelo RDBSS para notificar o minidiretório de rede de que uma solicitação de alteração de estado de buffer foi concluída.

Sintaxe

PMRX_CHANGE_BUFFERING_STATE_CALLDOWN PmrxChangeBufferingStateCalldown;

NTSTATUS PmrxChangeBufferingStateCalldown(
  [in, out] IN OUT PRX_CONTEXT RxContext,
  [in, out] IN OUT PMRX_SRV_OPEN SrvOpen,
  [in]      IN PVOID MRxContext
)
{...}

Parâmetros

[in, out] RxContext

Um ponteiro para a estrutura RX_CONTEXT. Esse parâmetro contém o IRP que está solicitando a operação.

[in, out] SrvOpen

Um ponteiro para um parâmetro de contexto para uso pela rotina de retorno de chamada do minidiretório de rede.

[in] MRxContext

Um ponteiro para a estrutura SRV_OPEN e a estrutura FCB associada a ser alterada.

Retornar valor

MRxCompleteBufferingStateChangeRequest retorna STATUS_SUCCESS com êxito ou um valor NTSTATUS apropriado, como o seguinte:

Código de retorno Descrição
STATUS_NOT_SUPPORTED Não há suporte para uma opção na alteração da solicitação de buffer.

Comentários

Antes de chamar MRxCompleteBufferingStateChangeRequest, RDBSS:

  • Adquire um bloqueio exclusivo na estrutura FCB.

  • Define o membro FcbState de SrvOpen-Fcb> como FCB_STATE_BUFFERSTATE_CHANGING.

  • Modifica os seguintes membros na estrutura RX_CONTEXT apontada pelo parâmetro RxContext :

    • pRelevantSrvOpen é definido como a estrutura SRV_OPEN.
    • pFcb é definido como a estrutura FCB.
    • pFobx é definido como a estrutura FOBX.

Se o buffer de bloqueio estiver habilitado, MRxCompleteBufferingStateChangeRequest precisará liberar os bloqueios de intervalo de bytes para o servidor. A lista de regiões bloqueadas é passada para o minidiretório de rede no membro LowIoContext.ParamsFor.Locks.LockList da estrutura RX_CONTEXT.

O redirecionador SMB (Server Message Block) usa MRxCompleteBufferingStateChangeRequest para enviar uma resposta de interrupção de oplock ou para fechar o identificador em uma quebra de oplock se o arquivo não estiver mais em uso. Os bloqueios de intervalo de bytes que precisam ser liberados para o servidor são passados para o minidiretório de rede no membro LowIoContext.ParamsFor.Locks.LockList da estrutura RX_CONTEXT. O novo nível oplock é passado no parâmetro MrxContext .

O RDBSS ignora o valor retornado de MRxCompleteBufferingStateChangeRequest.

Requisitos

Requisito Valor
Plataforma de Destino Área de Trabalho
Cabeçalho mrx.h (inclua Mrx.h)

Confira também

MRxComputeNewBufferingState

MRxGetConnectionId