Condividi tramite


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 MULTIPLE 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 di file system.

[out] PostToFsp

Puntatore a un valore logico impostato su TRUE in caso di restituzione se la richiesta deve essere inserita per un'elaborazione successiva da parte del processo del 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 del file system. Se la chiamata a RxStopMinirdr proviene da un processo diverso (una richiesta in modalità utente, ad esempio), la richiesta verrà pubblicata per un'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 dispone di handle aperti e non può essere arrestato in questo momento.
STATUS_REDIRECTOR_STOPPED Il mini-reindirizzamento di rete è già stato arrestato.

Osservazioni

Quando viene inviata una richiesta di arresto a RDBSS, potrebbero essere presenti richieste in corso in RDBSS. 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 utilizzato l'approccio più conservativo. Annullamento di tali operazioni che possono essere annullate e l'operazione di arresto viene mantenuta fino al completamento delle richieste rimanenti.

Il servizio RDBSS RxStopMinirdr viene in genere chiamato come risultato di una richiestaFSTL o IOCTL da un'applicazione o un servizio in modalità utente per arrestare il mini-reindirizzamento 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-redirector 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 completate 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 registrata per un'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à inserito per un'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-reindirizzamento di rete.

La routine RxStopMinirdr chiama il mini-redirector di rete MrxStop routine di callback 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 redirector viene attivato e lo stato interno del mini-redirector di rete in RDBSS è impostato su RDBSS_STARTABLE.

Fabbisogno

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

Vedere anche

FsRtlDeregisterUncProvider

IoUnregisterFileSystem

RxRegisterMinirdr

RxStartMiniRdr

RxUnregisterMinirdr

RxpUnregisterMinirdr