PMRX_CHANGE_BUFFERING_STATE_CALLDOWN função de retorno de chamada (mrx.h)
A rotina de MRxCompleteBufferingStateChangeRequest é chamada por 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.
Valor de retorno
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. |
Observações
Antes de chamar MRxCompleteBufferingStateChangeRequest, RDBSS:
Adquire um bloqueio exclusivo na estrutura FCB.
Define o fcbState membro do SrvOpen->Fcb para FCB_STATE_BUFFERSTATE_CHANGING.
Modifica os seguintes membros na estrutura RX_CONTEXT apontada pelo parâmetro RxContext:
- pRelevantSrvOpen está 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 LowIoContext.ParamsFor.Locks.LockList membro da estrutura RX_CONTEXT.
O redirecionador SMB (Server Message Block) usa MRxCompleteBufferingStateChangeRequest para enviar uma resposta de interrupção oplock ou 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 LowIoContext.ParamsFor.Locks.LockList membro da estrutura RX_CONTEXT. O novo nível de oplock é passado no parâmetro MrxContext.
O RDBSS ignora o valor retornado de MRxCompleteBufferingStateChangeRequest .
Requisitos
Requisito | Valor |
---|---|
da Plataforma de Destino | Área de trabalho |
cabeçalho | mrx.h (incluir Mrx.h) |