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
A rotina de
Requisitos
Requisito | Valor |
---|---|
da Plataforma de Destino |
Área de trabalho |
cabeçalho | mrx.h (incluir Mrx.h) |
IRQL | <= APC_LEVEL |