PMRX_CHANGE_BUFFERING_STATE_CALLDOWN función de devolución de llamada (mrx.h)
RDBSS llama a la rutinaMRxCompleteBufferingStateChangeRequest para notificar al minidirector de red que se ha completado una solicitud de cambio de estado de almacenamiento en búfer.
Sintaxis
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
Puntero a la estructura RX_CONTEXT. Este parámetro contiene el IRP que solicita la operación.
[in, out] SrvOpen
Puntero a un parámetro de contexto para que lo use la rutina de devolución de llamada minidirector de red.
[in] MRxContext
Puntero a la estructura SRV_OPEN y a la estructura FCB asociada que se va a cambiar.
Valor devuelto
MRxCompleteBufferingStateChangeRequest devuelve STATUS_SUCCESS correctamente o un valor NTSTATUS adecuado, como el siguiente:
Código devuelto | Descripción |
---|---|
STATUS_NOT_SUPPORTED | No se admite una opción en el cambio de solicitud de almacenamiento en búfer. |
Comentarios
Antes de llamar a MRxCompleteBufferingStateChangeRequest, RDBSS:
Adquiere un bloqueo exclusivo en la estructura FCB.
Establece el miembro FcbState de SrvOpen-Fcb> en FCB_STATE_BUFFERSTATE_CHANGING.
Modifica los siguientes miembros de la estructura RX_CONTEXT a la que apunta el parámetro RxContext :
- pRelevantSrvOpen se establece en la estructura SRV_OPEN.
- pFcb se establece en la estructura FCB.
- pFobx se establece en la estructura FOBX.
Si el almacenamiento en búfer de bloqueo está habilitado, MRxCompleteBufferingStateChangeRequest tendrá que vaciar los bloqueos de intervalo de bytes en el servidor. La lista de regiones bloqueadas se pasa al minidirector de red en el miembro LowIoContext.ParamsFor.Locks.LockList de la estructura RX_CONTEXT.
El redirector del bloque de mensajes del servidor (SMB) usa MRxCompleteBufferingStateChangeRequest para enviar una respuesta de interrupción de oplock o para cerrar el identificador en una interrupción de interbloqueo si el archivo ya no está en uso. Los bloqueos de intervalo de bytes que deben vaciarse en el servidor se pasan al minidirector de red en el miembro LowIoContext.ParamsFor.Locks.LockList de la estructura RX_CONTEXT. El nuevo nivel de interbloqueo se pasa en el parámetro MrxContext .
RDBSS omite el valor devuelto de MRxCompleteBufferingStateChangeRequest.
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Escritorio |
Encabezado | mrx.h (incluya Mrx.h) |