Funzione FsRtlRegisterUncProviderEx (ntifs.h)

La routine FsRtlRegisterUncProviderEx registra un redirector di rete come provider UNC (Universal Naming Convention) con il sistema più provider UNC (MUP).

Sintassi

NTSTATUS FsRtlRegisterUncProviderEx(
  [out] PHANDLE                  MupHandle,
  [in]  PCUNICODE_STRING         RedirDevName,
  [in]  PDEVICE_OBJECT           DeviceObject,
  [in]  FSRTL_UNC_PROVIDER_FLAGS Flags
);

Parametri

[out] MupHandle

Puntatore a un percorso in cui restituire un handle MUP da usare quando si chiama FsRtlDeregisterUncProvider per annullare la registrazione del redirector di rete. L'handle restituito è valido solo se FsRtlRegisterUncProviderEx restituisce STATUS_SUCCESS.

[in] RedirDevName

Puntatore a una stringa Unicode contenente il nome del dispositivo del redirector di rete. MUP usa questo nome del dispositivo per creare un collegamento simbolico nello spazio dei nomi Di Gestione oggetti la cui destinazione è \Device\Mup.

[in] DeviceObject

Puntatore a un oggetto dispositivo senza nome che rappresenta il redirector di rete.

[in] Flags

Maschera di bit che indica le funzionalità supportate dal redirector di rete. Un redirector di rete imposta un bit per indicare che una funzionalità è supportata. Il parametro Flags include due opzioni:

FSRTL_UNC_PROVIDER_FLAGS_MAILSLOTS_SUPPORTED

Il reindirizzamento di rete supporta mailslots. Questa opzione è in genere riservata per l'uso da parte del redirector SMB Microsoft.

FSRTL_UNC_PROVIDER_FLAGS_CSC_ENABLED

Il reindirizzamento di rete supporta l'accesso offline tramite la memorizzazione nella cache lato client.

Valore restituito

FsRtlRegisterUncProviderEx restituisce STATUS_SUCCESS in caso di esito positivo o di un valore NTSTATUS appropriato, ad esempio uno dei seguenti:

Codice restituito Descrizione
STATUS_ACCESS_DENIED
La modalità richiedente dell'IRP inviata a MUP non è dalla modalità kernel.
STATUS_ACCESS_VIOLATION
Si è verificata una violazione di accesso quando si tenta di accedere al dispositivo MUP.
STATUS_DATATYPE_MISALIGNMENT
Si è verificato un disallineamento dei dati.
STATUS_INSUFFICIENT_RESOURCES
Sono disponibili risorse insufficienti per allocare memoria per i buffer.
STATUS_INVALID_DEVICE_REQUEST
È stata effettuata una richiesta per registrare un provider noto già registrato.
STATUS_INVALID_PARAMETER
Il parametro RedirDevName non è valido perché la lunghezza di RedirDevName è zero.
STATUS_OBJECT_TYPE_MISMATCH
È stata rilevata una mancata corrispondenza del tipo di oggetto con il parametro DeviceObject .

Commenti

Un redirector di rete deve registrarsi con più provider UNC (MUP) per gestire i nomi UNC (Universal Naming Convention). MUP è un componente in modalità kernel responsabile del canale di tutti gli accessi al file system remoto tramite un nome UNC (Universal Naming Convention) a un redirector di rete (provider UNC) in grado di gestire le richieste remote del file system. MUP è coinvolto quando un percorso UNC viene usato da un'applicazione come illustrato nell'esempio seguente che può essere eseguito da una riga di comando:

notepad \\server\public\readme.txt

MUP non è coinvolto durante un'operazione che crea una lettera di unità mappata ,ad esempio il comando "NET USE". Questa operazione viene gestita da più router provider (MPR) e da una DLL del provider WNet in modalità utente per il redirector di rete. Tuttavia, una DLL del provider di rete WNet in modalità utente potrebbe comunicare direttamente con un driver del redirector di rete in modalità kernel durante questa operazione.

Per i reindirizzamenti di rete conformi al modello di reindirizzamento di Windows Vista, MUP è coinvolto anche quando viene usata un'unità di rete mappata. Le operazioni sui file eseguite nell'unità mappata passano attraverso MUP al redirector di rete. Si noti che in questo caso MUP passa semplicemente l'operazione al redirector di rete coinvolto.

FsRtlRegisterUncProviderEx invia un controllo del file system privato (MDFTL) a MUP per eseguire la registrazione.

Il nome del dispositivo specificato nel parametro RedirDevName nella chiamata a FsRtlRegisterUncProviderEx diventa un collegamento simbolico a \device\Mup nello spazio dei nomi di Gestione oggetti. Inoltre, una richiesta aperta del nome del dispositivo , RedirDevName, instrada se stessa all'oggetto dispositivo di reindirizzamento di rete effettivo a cui punta il parametro DeviceObject .

I redirector di rete che chiamano FsRtlRegisterUncProviderEx non devono registrarsi come file system (i redirector di rete non devono chiamare IoRegisterFileSystem). I mini-reindirizzamenti di rete che usano Servizi Desktop remoto di Windows Vista (collegamento dinamico o statico) non verranno registrati come file system.

Gli oggetti file nello stack del file system remoto di proprietà di un redirector di rete conforme al modello di reindirizzamento di Windows Vista vengono risolti in MUP. Quindi IoGetDeviceAttachmentBaseRef restituisce l'oggetto dispositivo per MUP, non il redirector di rete proprietario dell'oggetto file. Tuttavia, il contenuto dell'oggetto file è ancora di proprietà del redirector di rete.

Il valore del Registro di sistema ProviderOrder determina l'ordine in cui MUP emette richieste di risoluzione del prefisso a singoli redirector di rete. Questo ordine può essere modificato in modo dinamico senza un riavvio. Questo valore del Registro di sistema si trova nella seguente chiave del Registro di sistema:

HKLM\CurrentControlSet\Control\NetworkProvider\Order

Solo un provider di rete in un sistema può supportare mailslots. L'opzione FSRTL_UNC_PROVIDER_FLAGS_MAILSLOTS_SUPPORTED nel parametro Flags viene in genere impostata solo per il redirector SMB di Microsoft.

Per annullare la registrazione di un provider UNC, usare FsRtlDeregisterUncProvider e passare il parametro MupHandle .

Se un driver viene registrato come file system del disco locale (chiamando IoCreateDevice con il parametro DeviceType impostato su FILE_DEVICE_DISK_FILE_SYSTEM), il driver non deve chiamare FsRtlRegisterUncProviderEx per la registrazione come provider UNC con MUP.

Per altre informazioni, vedere le sezioni seguenti nella Guida alla progettazione:

Supporto per la denominazione UNC e MUP

Modifiche MUP in Microsoft Windows Vista

Requisiti

Requisito Valore
Client minimo supportato Windows Vista
Piattaforma di destinazione Universale
Intestazione ntifs.h (include Ntifs.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Regole di conformità DDI HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

Vedi anche

FsRtlCancellableWaitForSingleObject

FsRtlDeregisterUncProvider

FsRtlRegisterUncProvider

IOCTL_REDIR_QUERY_PATH_EX

IoCreateDevice

IoGetDeviceAttachmentBaseRef

IoRegisterFileSystem