Funzione RxStopMinirdr (mrx.h)

RxStopMinirdr viene chiamato per arrestare un mini-redirector 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 MULTI UNC (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 del file system.

[out] PostToFsp

Puntatore a un valore logico impostato su TRUE in caso di restituzione se la richiesta deve essere registrata per un'elaborazione successiva da parte del processo del file system.

Valore restituito

RxStopMinirdr restituisce STATUS_SUCCESS se la sequenza di interruzione 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 del file system. Se la chiamata a RxStopMinirdr proviene da un processo diverso (una richiesta in modalità utente, ad esempio), la richiesta verrà inviata per l'elaborazione successiva e STATUS_PENDING verrà restituita. Questo errore può essere restituito anche se non è possibile acquisire determinati blocchi RDBSS interni senza attendere.
STATUS_REDIRECTOR_HAS_OPEN_HANDLES Il mini-redirector di rete ha handle aperti e non può essere arrestato in questo momento.
STATUS_REDIRECTOR_STOPPED Il mini-reindirizzamento di rete è già stato arrestato.

Commenti

Quando viene inviata una richiesta di arresto a RDBSS, potrebbero esserci richieste in corso in SERVIZI Desktop remoto. Alcune richieste possono essere annullate mentre le richieste rimanenti devono essere elaborate fino al completamento.

Esistono diverse strategie che possono essere utilizzate per chiudere rdbss. Attualmente, viene impiegato l'approccio più conservativo. 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 MDFTL o IOCTL da un'applicazione o un servizio in modalità utente per arrestare il mini-redirector di rete, anche se questa chiamata può essere effettuata anche dal mini-redirector di rete o come parte dell'elaborazione dell'arresto da parte del sistema operativo.

Dopo l'emissione di 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-redirector di rete devono essere completati nel contesto del processo del 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 alcuni blocchi RDBSS interni non possono essere ottenuti senza attendere, STATUS_PENDING viene restituito e PostToFsp è impostato su TRUE. Quando viene restituito STATUS_PENDING, RxStopMinirdr verrà inserito 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 per RxRegisterMinirdr), RxStopMinirdr tenterà di annullare la registrazione del deviceName del mini-redirector di rete come provider UNC con MUP (chiama FsRtlDeregisterUncProvider per conto del mini-redirector di rete). RxStopMinirdr annulla anche la registrazione del file system con il gestore di I/O (chiama IoUnregisterFileSystem) per conto del mini-redirector di rete.

La routine RxStopMinirdr chiama quindi la routine di callback MrxStop mini-redirector di rete se questa routine viene implementata. Se non sono presenti fcb attivi rimanenti, 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 redrector viene attivato e lo stato interno del mini redirector 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