Freigeben über


FsRtlRegisterUncProvider-Funktion (ntifs.h)

Die FsRtlRegisterUncProvider-Routine registriert einen Netzwerkumleitungsor als UNC-Anbieter (Universal Naming Convention) beim System mit mehreren UNC-Anbietern (MUP).

Syntax

NTSTATUS FsRtlRegisterUncProvider(
  [out] PHANDLE          MupHandle,
        PCUNICODE_STRING RedirectorDeviceName,
  [in]  BOOLEAN          MailslotsSupported
);

Parameter

[out] MupHandle

Ein Zeiger auf einen Speicherort, an dem ein MUP-Handle zurückgegeben werden soll, das beim Aufrufen von FsRtlRegisterUncProvider verwendet werden soll, um die Registrierung der Netzwerkumleitung aufzuheben. Das zurückgegebene Handle ist nur gültig, wenn FsRtlRegisterUncProvider STATUS_SUCCESS zurückgibt.

RedirectorDeviceName

Ein Zeiger auf eine Unicode-Zeichenfolge, die den Gerätenamen des Netzwerkumleitungs enthält.

[in] MailslotsSupported

Legen Sie auf TRUE fest, wenn die Netzwerkumleitung mailslots unterstützt. Diese Option ist normalerweise für die Verwendung durch den Microsoft SMB-Redirector reserviert.

Rückgabewert

FsRtlRegisterUncProvider gibt bei Erfolg STATUS_SUCCESS oder einen geeigneten NTSTATUS-Wert zurück, z. B. einen der folgenden:

Rückgabecode Beschreibung
STATUS_ACCESS_DENIED
Der Ausführungsmodus des ursprünglichen Anforderers für den IRP-Vorgang, der an MUP gesendet wurde, stammte nicht aus dem Kernelmodus.
STATUS_ACCESS_VIOLATION
Beim Versuch des Zugriffs auf das MUP-Gerät ist eine Zugriffsverletzung aufgetreten.
STATUS_DATATYPE_MISALIGNMENT
Es gab eine falsche Ausrichtung der Daten.
STATUS_INSUFFICIENT_RESOURCES
Es waren nicht genügend Ressourcen verfügbar, um Speicher für Puffer zuzuweisen.
STATUS_INVALID_HANDLE
Im IRP wurde ein ungültiger Parameter an MUP übergeben.
STATUS_INVALID_USER_BUFFER
Im RedirDevName-Parameter wurde ein ungültiger Parameter übergeben, oder es kam zu einer abnormalen Beendigung.

Hinweise

Ein Netzwerkumleitungsor muss sich beim MUP registrieren, um UNC-Namen verarbeiten zu können. MUP ist eine Kernelmoduskomponente, die für die Kanalung aller Remotedateisystemzugriffe mithilfe eines UNC-Namens (Universal Naming Convention) an einen Netzwerkumleitungsanbieter (UNC-Anbieter) verantwortlich ist, der die Anforderungen des Remotedateisystems verarbeiten kann. MUP ist beteiligt, wenn ein UNC-Pfad von einer Anwendung verwendet wird, wie das folgende Beispiel veranschaulicht, das über eine Befehlszeile ausgeführt werden könnte:

notepad \\server\public\readme.txt

MUP ist nicht an einem Vorgang beteiligt, der einen zugeordneten Laufwerkbuchstaben erstellt (z. B. der Befehl "NET USE"). Dieser Vorgang wird vom Multiple Provider Router (MPR) und einer WNet-Anbieter-DLL für den Benutzermodus für die Netzwerkumleitung verarbeitet. Eine WNet-Anbieter-DLL im Benutzermodus kann jedoch während dieses Vorgangs direkt mit einem Kernelmodus-Netzwerkumleitungstreiber kommunizieren.

Unter Windows Server 2003, Windows XP und Windows 2000 werden Remotedateivorgänge, die auf einem zugeordneten Laufwerk ausgeführt werden, das kein DFS-Laufwerk (Distributed File System) darstellt, nicht über MUP ausgeführt. Diese Vorgänge gehen direkt an den Netzwerkanbieter, der die Laufwerkbuchstabenzuordnung verarbeitet hat.

Bei Netzwerkumleitungen, die dem Windows VistaRedirector-Modell entsprechen, ist MUP auch dann beteiligt, wenn ein zugeordnetes Netzwerklaufwerk verwendet wird. Dateivorgänge, die auf dem zugeordneten Laufwerk ausgeführt werden, gehen über MUP an den Netzwerkumleitungsor. Beachten Sie, dass MUP in diesem Fall den Vorgang einfach an den beteiligten Netzwerkumleitungsor übergibt.

Netzwerkumleitungen, die dem Windows Vista-Umleitungsmodell entsprechen, sollten FsRtlRegisterUncProviderEx und nicht FsRtlRegisterUncProvider verwenden.

FsRtlRegisterUncProvider sendet ein privates Dateisystemsteuerelement (Private File System Control, FSCTL) an MUP, um die Registrierung durchzuführen.

Der ProviderOrder-Registrierungswert bestimmt die Reihenfolge, in der MUP Präfixauflösungsanforderungen an einzelne Netzwerkumleitungen ausgibt. Dieser Registrierungswert befindet sich unter dem folgenden Registrierungsschlüssel:

HKLM\CurrentControlSet\Control\NetworkProvider\Order

Änderungen am ProviderOrder-Registrierungswert erfordern einen Neustart, um in MUP unter Windows Server 2003, Windows XP und Windows 2000 wirksam zu werden.

Nur ein Netzwerkanbieter auf einem System kann Mailslots unterstützen. Daher ist der Parameter MailslotsSupported normalerweise nur für den Microsoft SMB-Redirector auf TRUE festgelegt.

Ein Treiber, der IoCreateDevice aufruft , um ein Geräteobjekt für einen Netzwerkumleitungsanbieter zu erstellen, der sich als UNC-Anbieter registriert (ein Treiber, der FsRtlRegisterUncProvider aufruft), muss FILE_REMOTE_DEVICE als eine der Optionen im DeviceCharacteristics-Parameter übergeben, der an IoCreateDevice übergeben wird.

Um die Registrierung eines UNC-Anbieters aufzuheben, verwenden Sie FsRtlDeregisterUncProvider , und übergeben Sie den MupHandle-Parameter .

Wenn ein Treiber als lokales Datenträgerdateisystem registriert wird (ruft IoCreateDevice auf, wobei der DeviceType-Parameter auf FILE_DEVICE_DISK_FILE_SYSTEM und nicht auf FILE_NETWORK_FILE_SYSTEM festgelegt ist), darf der Treiber fsRtlRegisterUncProvider nicht aufrufen, um sich als UNC-Anbieter bei MUP zu registrieren.

Weitere Informationen finden Sie in den folgenden Abschnitten des Entwurfshandbuchs:

Unterstützung für UNC-Benennung und MUP

MUP-Änderungen in Microsoft Windows Vista

Anforderungen

Anforderung Wert
Zielplattform Universell
Header ntifs.h (include Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

Weitere Informationen

FsRtlDeregisterUncProvider

FsRtlRegisterUncProviderEx

IOCTL_REDIR_QUERY_PATH_EX

IoCreateDevice