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 |