Compartilhar via


Rotina MRxLowIOSubmit[LOWIO_OP_FSCTL]

A rotina MRxLowIOSubmit[LOWIO_OP_FSCTL] é chamada pelo RDBSS para solicitar que um minidiretório de rede emita a solicitação de controle do sistema de arquivos no arquivo remoto.

Sintaxe

PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_FSCTL];

NTSTATUS MRxLowIOSubmit[LOWIO_OP_FSCTL](
  _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_FSCTL] retorna STATUS_SUCCESS em caso de êxito ou um valor NTSTATUS apropriado, como um dos seguintes:

Código de retorno Descrição
STATUS_CONNECTION_DISCONNECTED

A conexão foi desconectada.

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_NETWORK_RESPONSE

Uma resposta inválida foi recebida do servidor remoto.

STATUS_INVALID_PARAMETER

Um parâmetro inválido foi especificado em RxContext.

STATUS_LINK_FAILED

Falha na tentativa de reconectar-se a um servidor remoto para concluir a solicitação.

STATUS_NOT_IMPLEMENTED

Essa rotina não é implementada.

STATUS_NOT_SUPPORTED

O FSCTL especificado não é compatível com o minidiretório de rede.

STATUS_UNSUCCESSFUL

A chamada não foi bem-sucedida.

Comentários

O RDBSS chama MRxLowIOSubmit[LOWIO_OP_FSCTL] em resposta ao recebimento de uma solicitação de IRP_MJ_FILE_SYSTEM_CONTROL .

Antes de chamar MRxLowIOSubmit[LOWIO_OP_FSCTL], o RDBSS modifica os seguintes membros na estrutura RX_CONTEXT apontada pelo parâmetro RxContext :

O membro LowIoContext.Operation está definido como LOWIO_OP_FSCTL.

O membro LowIoContext.ResourceThreadId é definido como o thread do processo que iniciou a operação no RDBSS.

O membro LowIoContext.ParamsFor.FsCtl.FsControlCode é definido como o código de controle principal FSCTL.

O membro LowIoContext.ParamsFor.FsCtl.MinorFunction é definido como o código de controle secundário FSCTL.

O membro LowIoContext.ParamsFor.FsCtl.pInputBuffer é definido como o buffer de entrada.

O membro LowIoContext.ParamsFor.FsCtl.InputBufferLength é definido como o comprimento do buffer de entrada.

O membro LowIoContext.ParamsFor.FsCtl.pOutputBuffer é definido como o buffer de saída.

O membro LowIoContext.ParamsFor.FsCtl.OutputBufferLength é definido como o comprimento do buffer de saída.

As solicitações de FSCTL (código de controle do sistema de arquivos) manipuladas por um minidiretório de rede podem ser classificadas em uma das várias categorias:

  • FSCTLs que são implementados e usados pelo RDBSS e pelo minidiretório de rede

  • FSCTLs que são implementados e usados apenas pelo minidiretório de rede

  • FSCTLs que nunca devem ser vistos pelo minidiretório de rede. Essas FSCTLs são destinadas exclusivamente como um auxílio de depuração.

Enquanto a rotina MRxLowIOSubmit[LOWIO_OP_FSCTL] está sendo processada, o membro LowIoContext.ResourceThreadId do RX_CONTEXT é garantido para indicar o thread do processo que iniciou a operação no RDBSS. O membro LowIoContext.ResourceThreadId do RX_CONTEXT pode ser usado para liberar o recurso de entrada em nome de outro thread. Quando uma rotina assíncrona é concluída, o recurso de entrada adquirido do thread inicial pode ser liberado.

Requisitos

Plataforma de destino

Área de Trabalho

parâmetro

Mrx.h (inclua Mrx.h)

Confira também

MRxLowIOSubmit[LOWIO_OP_EXCLUSIVELOCK]

MRxLowIOSubmit[LOWIO_OP_IOCTL]

MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]

MRxLowIOSubmit[LOWIO_OP_READ]

MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK]

MRxLowIOSubmit[LOWIO_OP_UNLOCK]

MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE]

MRxLowIOSubmit[LOWIO_OP_WRITE]