Rotina MRxStop
A rotinaMRxStop é chamada pelo RDBSS para interromper o minidiretório de rede.
Sintaxe
PMRX_CALLDOWN_CTX MRxStop;
NTSTATUS MRxStop(
_Inout_ PRX_CONTEXT RxContext,
_Inout_ PRDBSS_DEVICE_OBJECT RxDeviceObject
)
{ ... }
Parâmetros
RxContext [in, out]
Um ponteiro para a estrutura RX_CONTEXT. Esse parâmetro contém o IRP que solicitou que o minidiretório de rede parasse.
RxDeviceObject [in, out]
Um ponteiro para a estrutura de RDBSS_DEVICE_OBJECT para esse minidiretório de rede.
Retornar valor
MRxStop retorna STATUS_SUCCESS com êxito ou um valor NTSTATUS apropriado, como um dos seguintes:
Código de retorno | Descrição |
---|---|
STATUS_REDIRECTOR_HAS_OPEN_HANDLES | O minidiretório de rede tem identificadores abertos que impedem que ele pare no momento. |
STATUS_REDIRECTOR_NOT_STARTED | O minidiretório de rede não foi iniciado. |
Comentários
O MRxStop para e não inicializa o minidiretório de rede da perspectiva do RDBSS. Parar o minidiretório de rede provavelmente pode exigir a liberação de alocações de memória e outros recursos do sistema.
Antes de chamar MRxStop, o RDBSS modifica os seguintes valores:
O membro MajorFunction na estrutura RX_CONTEXT apontada por RxContext é definido como a função principal do IRP.
O membro LowIoContext.ParamsFor.FsCtl.FsControlCode na estrutura de RX_CONTEXT apontada por RxContext será definido como o código FSCTL para o IRP se esta for uma solicitação FSTCL usada para interromper o minidiretório de rede.
O membro StartStopContext.State da estrutura RDBSS_DEVICE_OBJECT apontada por RxDeviceObject é definido como RDBSS_STOP_IN_PROGRESS
O membro StartStopContext.pStopContext da estrutura RDBSS_DEVICE_OBJECT apontada por RxDeviceObject é definido como o parâmetro RxContext .
MRxStop é chamado pelo RDBSS da rotina RxStopMinirdr .
Se MRxStop retornar STATUS_SUCCESS, a rotina foi bem-sucedida. Qualquer outro valor retornado indica que ocorreu um erro ao interromper o minidiretório de rede.
Se MRxStop retornar STATUS_SUCCESS, o RDBSS definirá o estado do RDBSS como RDBSS_STARTABLE. Esse estado é armazenado no membro StartStopContext.State da estrutura RDBSS_DEVICE_OBJECT apontada por RxDeviceObject.
Um minidiretório de rede normalmente manteria uma variável interna indicando se o minidiretório de rede foi iniciado. Por exemplo, um minidiretório de rede pode acompanhar quando ele é interrompido, iniciado e quando uma operação de início ou parada está em andamento.
Requisitos
Plataforma de destino |
Área de Trabalho |
parâmetro |
Mrx.h (inclua Mrx.h) |