Função RxStopMinirdr (mrx.h)

RxStopMinirdr é chamado para interromper um minidiretório de rede que foi iniciado anteriormente. Como parte do RxStopMinirdr, o RDBSS também desativará o driver de minidiretório de rede como um provedor UNC (convenção de nomenclatura universal) com o MUP (Provedor DE UNC Múltiplo) se o driver indicar suporte para nomes UNC.

Sintaxe

NTSTATUS RxStopMinirdr(
  [in]  IN PRX_CONTEXT RxContext,
  [out] OUT PBOOLEAN   PostToFsp
);

Parâmetros

[in] RxContext

Um ponteiro para a estrutura RX_CONTEXT a ser usada para obter o objeto do dispositivo e determinar se esse é um processo do sistema de arquivos.

[out] PostToFsp

Um ponteiro para um valor lógico definido como TRUE no retorno se a solicitação precisar ser postada para processamento posterior pelo processo do sistema de arquivos.

Retornar valor

RxStopMinirdr retornará STATUS_SUCCESS se a sequência de parada tiver sido bem-sucedida ou um dos seguintes valores de erro:

Código de retorno Descrição
STATUS_PENDING A sequência de parada para RDBSS e minidiretórios de rede deve ser concluída no contexto do processo do sistema de arquivos. Se a chamada para RxStopMinirdr vier de um processo diferente (uma solicitação de modo de usuário, por exemplo), a solicitação será postada para processamento posterior e STATUS_PENDING será retornado. Esse erro também poderá ser retornado se determinados bloqueios rdbss internos não puderem ser adquiridos sem esperar.
STATUS_REDIRECTOR_HAS_OPEN_HANDLES O minidiretório de rede tem identificadores abertos e não pode ser interrompido no momento.
STATUS_REDIRECTOR_STOPPED O minidiretório de rede já foi interrompido.

Comentários

Quando uma solicitação de parada é emitida para RDBSS, pode haver solicitações em andamento no RDBSS. Algumas das solicitações podem ser canceladas enquanto as solicitações restantes precisam ser processadas até a conclusão.

Há várias estratégias que podem ser empregadas para fechar o RDBSS. Atualmente, a abordagem mais conservadora é empregada. O cancelamento dessas operações que podem ser canceladas e a operação de parada é retida até que as solicitações restantes sejam executadas até a conclusão.

O RDBSS RxStopMinirdr geralmente é chamado como resultado de uma solicitação FSCTL ou IOCTL de um aplicativo ou serviço no modo de usuário para interromper o minidiretório de rede, embora essa chamada também possa ser feita do minidiretório de rede ou como parte do processamento de desligamento pelo sistema operacional.

Depois que uma chamada para RxStopMinirdr é emitida, as únicas operações permitidas pelo RDBSS e passadas para o minidiretório de rede são rerquests para os seguintes pacotes de solicitação de E/S:

  • IRP_MJ_CLEANUP
  • IRP_MJ_CLOSE

A sequência de parada para RDBSS e o minidiretório de rede deve ser concluída no contexto do processo do sistema de arquivos. Se a chamada para RxStopMinirdr vier de um processo diferente (uma solicitação de modo de usuário, por exemplo), a solicitação deverá ser postada para processamento posterior e STATUS_PENDING será retornado. Nesse caso, a ID de usuário efetiva (a ID de logon) do chamador é salva no membro FsdUid do parâmetro RxContext . Além disso, se determinados bloqueios RDBSS internos não puderem ser obtidos sem esperar, STATUS_PENDING será retornado e PostToFsp será definido como TRUE. Quando STATUS_PENDING for retornado, RxStopMinirdr será postado para processamento posterior por um processo do sistema de arquivos e concluído.

Se um minidiretório de rede indicar suporte para UNC ao registrar com RDBSS (o parâmetro Controls para RxRegisterMinirdr), o RxStopMinirdr tentará desregistrar o DeviceName do mini-redirecionador de rede como um provedor UNC com MUP (chama FsRtlDeregisterUncProvider em nome do minidiretório de rede). RxStopMinirdr também cancela o registro do sistema de arquivos com o gerenciador de E/S (chama IoUnregisterFileSystem) em nome do minidiretório de rede).

A rotina RxStopMinirdr chama a rotina de retorno de chamada mrxStop do minidiretor de rede se essa rotina for implementada. Se não houver FCBs ativos restantes, STATUS_SUCCESS será retornado. Se houver alguns FCBs ativos restantes, STATUS_REDIRECTOR_HAS_OPEN_HANDLES será retornado. Em ambos os casos, o dispatcher rdbss para o redrector é girado para baixo e o estado interno do minidiretório de rede no RDBSS é definido como RDBSS_STARTABLE.

Requisitos

Requisito Valor
Plataforma de Destino Área de Trabalho
Cabeçalho mrx.h (inclua Mrx.h)
IRQL <= APC_LEVEL

Confira também

FsRtlDeregisterUncProvider

IoUnregisterFileSystem

RxRegisterMinirdr

RxStartMiniRdr

RxUnregisterMinirdr

RxpUnregisterMinirdr