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) |