Funzione RxStopMinirdr (mrx.h)

RxStopMinirdr viene chiamato per arrestare un mini-reindirizzamento di rete avviato in precedenza. Come parte di RxStopMinirdr, RDBSS deregistrerà anche il driver mini-redirector di rete come provider UNC (Universal naming Convention) con il provider UNC multiple (MUP) se il driver indica il supporto per i nomi UNC.

Sintassi

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

Parametri

[in] RxContext

Puntatore alla struttura RX_CONTEXT da usare per ottenere l'oggetto dispositivo e determinare se si tratta di un processo di file system.

[out] PostToFsp

Puntatore a un valore logico impostato su TRUE per restituire se la richiesta deve essere pubblicata per l'elaborazione successiva dal processo di file system.

Valore restituito

RxStopMinirdr restituisce STATUS_SUCCESS se la sequenza di arresto ha avuto esito positivo o uno dei valori di errore seguenti:

Codice restituito Descrizione
STATUS_PENDING La sequenza di arresto per RDBSS e mini-redirector di rete deve essere completata nel contesto del processo di file system. Se la chiamata a RxStopMinirdr proviene da un processo diverso (una richiesta in modalità utente, ad esempio), la richiesta verrà pubblicata per l'elaborazione successiva e la STATUS_PENDING verrà restituita. Questo errore può essere restituito anche se alcuni blocchi RDBSS interni non possono essere acquisiti senza attendere.
STATUS_REDIRECTOR_HAS_OPEN_HANDLES Il mini-reindirizzamento di rete ha handle aperti e non può essere arrestato in questo momento.
STATUS_REDIRECTOR_STOPPED Il mini-reindirizzamento della rete è già stato arrestato.

Commenti

Quando viene emessa una richiesta di arresto a RDBSS, potrebbero essere presenti richieste in corso in RDBSS. Alcune delle richieste possono essere annullate mentre le richieste rimanenti devono essere elaborate per il completamento.

Esistono diverse strategie che possono essere usate per chiudere RDBSS. Attualmente, l'approccio più conservativo è impiegato. L'annullamento di tali operazioni che possono essere annullate e l'operazione di arresto viene mantenuta fino al completamento delle richieste rimanenti.

RdBSS RxStopMinirdr viene in genere chiamato come risultato di una richiesta FSCTL o IOCTL da un'applicazione o un servizio in modalità utente per arrestare il mini-reindirizzamento della rete, anche se questa chiamata può essere eseguita anche dal mini-reindirizzamento di rete o come parte dell'elaborazione di arresto dal sistema operativo.

Una volta rilasciata una chiamata a RxStopMinirdr , le uniche operazioni consentite da RDBSS e passate al mini-reindirizzamento di rete sono richieste per i pacchetti di richiesta di I/O seguenti:

  • IRP_MJ_CLEANUP
  • IRP_MJ_CLOSE

La sequenza di arresto per RDBSS e il mini-reindirizzamento di rete devono essere completati nel contesto del processo di file system. Se la chiamata a RxStopMinirdr proviene da un processo diverso (una richiesta in modalità utente, ad esempio), la richiesta deve essere pubblicata per l'elaborazione successiva e STATUS_PENDING verrà restituita. In questo caso, l'ID utente effettivo (ID di accesso) del chiamante viene salvato nel membro FsdUid del parametro RxContext . Inoltre, se non è possibile ottenere determinati blocchi RDBSS interni senza attendere, STATUS_PENDING viene restituito e PostToFsp è impostato su TRUE. Quando viene restituito STATUS_PENDING, RxStopMinirdr verrà pubblicato per l'elaborazione successiva da un processo di file system e completato.

Se un mini-redirector di rete indica il supporto per UNC durante la registrazione con RDBSS (il parametro Controls su RxRegisterMinirdr), RxStopMinirdr tenterà di deregistrare il nome dispositivo del mini-reindirizzamento di rete come provider UNC con MUP (chiama FsRtlDeregisterUncProvider per conto del mini-reindirizzamento della rete). RxStopMinirdr deregistra anche il file system con gestione I/O (chiama IoUnregisterFileSystem) per conto del mini-reindirizzamento di rete.

La routine RxStopMinirdr chiama quindi la routine di callback di rete mini-redirector MrxStop se questa routine viene implementata. Se non sono presenti fcB attivi, viene restituito STATUS_SUCCESS. Se sono presenti alcuni FCB attivi rimanenti, viene restituito STATUS_REDIRECTOR_HAS_OPEN_HANDLES. In entrambi i casi, il dispatcher RDBSS per il reindirizzamento viene attivato e lo stato interno del mini-reindirizzamento di rete in RDBSS è impostato su RDBSS_STARTABLE.

Requisiti

Requisito Valore
Piattaforma di destinazione Desktop
Intestazione mrx.h (include Mrx.h)
IRQL <= APC_LEVEL

Vedi anche

FsRtlDeregisterUncProvider

IoUnregisterFileSystem

RxRegisterMinirdr

RxStartMiniRdr

RxUnregisterMinirdr

RxpUnregisterMinirdr