Rotina MRxLowIOSubmit[LOWIO_OP_READ]
A rotina MRxLowIOSubmit[LOWIO_OP_READ] é chamada pelo RDBSS para emitir uma solicitação de leitura para o minidiretório de rede.
Sintaxe
PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_READ];
NTSTATUS MRxLowIOSubmit[LOWIO_OP_READ](
_Inout_ PRX_CONTEXT RxContext
)
{ ... }
Parâmetros
RxContext [in, out]
Um ponteiro para a estrutura RX_CONTEXT. Esse parâmetro contém o IRP que está solicitando a operação.
Retornar valor
MRxLowIOSubmit[LOWIO_OP_READ] retorna STATUS_SUCCESS com êxito ou um valor NTSTATUS apropriado, como um dos seguintes:
Código de retorno | Descrição |
---|---|
STATUS_FILE_CLOSED | A estrutura fcb foi adquirida, mas a estrutura de SRV_OPEN associada foi fechada. |
STATUS_INSUFFICIENT_RESOURCES | Não havia recursos suficientes para concluir a solicitação. |
STATUS_INVALID_DEVICE_REQUEST | Uma solicitação de dispositivo inválida foi especificada. |
STATUS_INVALID_PARAMETER | Um parâmetro inválido foi especificado em RxContext. |
STATUS_NOT_IMPLEMENTED | Essa rotina não é implementada. |
STATUS_NOT_SUPPORTED | Não há suporte para a solicitação especificada pelo minidiretório de rede. |
Comentários
O RDBSS chama MRxLowIOSubmit[LOWIO_OP_READ] em resposta ao recebimento de uma solicitação de IRP_MJ_READ .
Antes de chamar MRxLowIOSubmit[LOWIO_OP_READ], o RDBSS modifica os seguintes membros na estrutura RX_CONTEXT apontada pelo parâmetro RxContext :
O membro LowIoContext.Operation está definido como LOWIO_OP_READ.
O membro LowIoContext.ResourceThreadId é definido como o thread do processo que iniciou a operação no RDBSS.
O membro LowIoContext.ParamsFor.ReadWrite.Key é definido como o valor de IrpSp-Parameters.Read.Key>.
O membro ParamsFor.ReadWrite.Flags tem o bit LOWIO_READWRITEFLAG_PAGING_IO está definido se Irp-Flags> tiver o IRP_PAGING_IO bit ativado.
O membro ParamsFor.ReadWrite.Buffer está definido como o buffer de usuário bloqueado para IoReadAccess.
O membro LowIoContext.ParamsFor.ReadWrite.ByteCount é definido como o valor de IrpSp-Parameters.Read.Length>.
Normalmente, uma solicitação de leitura é implementada por um minidiretório de rede como uma operação assíncrona porque pode levar um tempo considerável. A operação geralmente consiste em enviar uma solicitação de rede para o servidor remoto. A resposta é obtida quando a solicitação de leitura é concluída no servidor. Este é um exemplo de uma operação para a qual o minidiretório de rede pode precisar registrar um contexto para lidar com cancelamentos iniciados localmente.
Enquanto a rotina MRxLowIOSubmit[LOWIO_OP_READ] está sendo processada, o membro LowIoContext.ResourceThreadId de RX_CONTEXT é garantido para indicar o thread do processo que iniciou a operação no RDBSS. O membro LowIoContext.ResourceThreadId pode ser usado para liberar a estrutura FCB em nome de outro thread. Quando uma rotina assíncrona é concluída, a estrutura FCB adquirida do thread inicial pode ser liberada. A estrutura FCB pode ser liberada chamando RxReleaseFcbResourceForThreadInMRx.
Requisitos
Plataforma de destino |
Área de Trabalho |
parâmetro |
Mrx.h (inclua Mrx.h) |
Confira também
MRxLowIOSubmit[LOWIO_OP_EXCLUSIVELOCK]
MRxLowIOSubmit[LOWIO_OP_FSCTL]
MRxLowIOSubmit[LOWIO_OP_IOCTL]
MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]
MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK]
MRxLowIOSubmit[LOWIO_OP_UNLOCK]
MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE]