Compartilhar via


Função RxStopMinirdr (mrx.h)

RxStopMinirdr é chamado para interromper um minidiretório de rede iniciado anteriormente. Como parte do RxStopMinirdr, o RDBSS também cancelará o registro do driver de minidiretório de rede como um provedor UNC (convenção de nomenclatura universal) com o MUP (Provedor MULTI UNC) 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.

Valor de retorno

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 interrupção para RDBSS e minidiretórios de rede deve ser concluída no contexto do processo do sistema de arquivos. Se a chamada para RxStopMinirdr for proveniente 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.

Observações

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 para 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 RxStopMinirdr do RDBSS 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 for emitida, as únicas operações permitidas pelo RDBSS e passadas para o minidiretório de rede são solicitações para os seguintes pacotes de solicitação de E/S:

  • IRP_MJ_CLEANUP
  • IRP_MJ_CLOSE

A sequência de interrupção 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 for proveniente 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 FsdUid membro 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 estiver definido como TRUE. Quando STATUS_PENDING é 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 se registrar no RDBSS (o parâmetro controles de para RxRegisterMinirdr), RxStopMinirdr tentará para cancelar o registro do devicename do minidiretório de rede como um provedor UNC com MUP (chamadas FsRtlDeregisterUncProvider em nome do minidiretório de rede). RxStopMinirdr também descreve o sistema de arquivos com o gerenciador de E/S (chama IoUnregisterFileSystem) em nome do minidiretório de rede).

A rotina de RxStopMinirdr chama o minidiretor de rede o MrxStop rotina de retorno de chamada 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 redirecionador é reduzido e o estado interno do minidiretório de rede no RDBSS é definido como RDBSS_STARTABLE.

Requisitos

Requisito Valor
da Plataforma de Destino Área de trabalho
cabeçalho mrx.h (incluir Mrx.h)
IRQL <= APC_LEVEL

Consulte também

FsRtlDeregisterUncProvider

IoUnregisterFileSystem

RxRegisterMinirdr

RxStartMiniRdr

RxUnregisterMinirdr

RxpUnregisterMinirdr