RxPrepareToReparseSymbolicLink-Funktion (rxprocs.h)
RxPrepareToReparseSymbolicLink richtet den Dateinamen ein, um eine Analyse zu erleichtern. Diese Routine wird von den Netzwerkminiumleitungen verwendet, um symbolische Verbindungen zu durchlaufen.
Syntax
NTSTATUS RxPrepareToReparseSymbolicLink(
PRX_CONTEXT RxContext,
BOOLEAN SymbolicLinkEmbeddedInOldPath,
PUNICODE_STRING NewPath,
BOOLEAN NewPathIsAbsolute,
PBOOLEAN ReparseRequired
);
Parameter
RxContext
Ein Zeiger auf die RX_CONTEXT-Struktur.
SymbolicLinkEmbeddedInOldPath
Ein boolescher Wert, der angibt, dass eine symbolische Verknüpfung aufgetreten ist. Wenn der Wert TRUEist, wurde im Rahmen der Durchquerung des alten Pfads eine symbolische Verknüpfung gefunden.
NewPath
Ein Zeiger auf eine Unicode-Zeichenfolge, die den neuen Pfadnamen enthält, der durchlaufen werden soll.
NewPathIsAbsolute
Ein boolescher Wert, der angibt, ob der neue Pfad absolut ist. Wenn dieser Wert FALSE-ist, sollte \Device\Mup NewPathvorangestellt werden. Wenn dieser Wert TRUEist, ist der parameter NewPath der vollständige Pfad zum Neuparieren. In diesem Fall wird der Puffer, der NewPath- enthält, direkt verwendet, anstatt einen neuen Puffer zu zuordnen.
ReparseRequired
Ein Zeiger auf einen booleschen Wert, der angibt, ob eine Analyse erforderlich ist. Wenn dieser Wert TRUEist, ist eine Analyse erforderlich.
Rückgabewert
RxPrepareToReparseSymbolicLink gibt STATUS_SUCCESS bei Erfolg oder einen der folgenden Fehlerwerte für fehler zurück:
Rückgabecode | Beschreibung |
---|---|
|
Fehler bei einer Anforderung zum Löschen. |
|
Es waren unzureichende Ressourcen verfügbar. |
|
An die Routine wurde ein ungültiger Parameter übergeben. Dieser Fehler wird zurückgegeben, wenn das MajorFunction Mitglied von RxContext-nicht IRP_MJ_CREATE ist. |
Bemerkungen
Die RxPrepareToReparseSymbolicLink Routine würde nur von einem Netzwerk-Miniumleitungsmodul verwendet werden, der symbolische Verknüpfungen unterstützt und Analysepunkte verwendet, um symbolische Verknüpfungen zu implementieren. Die RxPrepareToReparseSymbolicLink Routine würde normalerweise von einem Netzwerk-Miniumleitungsmodul aus seiner MrxCreate Rückrufroutine aufgerufen werden.
Der an diese Routine übergebene parameter SymbolicLinkEmbeddedInOldPath ist sehr wichtig. Um die richtige Semantik beizubehalten, sollte sie sorgfältig verwendet werden. Betrachten Sie z. B. den alten Pfad \A\B\C\D, wobei C eine symbolische Verknüpfung ist. In diesem Fall ist die symbolische Verknüpfung in den Pfad eingebettet, und SymbolicLinkEmbeddedInOldPath- sollte auf TRUE-festgelegt werden. Im Gegensatz dazu unterscheidet sich dies sehr von dem Fall, wenn D ein symbolischer Zusammenhang ist. Im früheren Fall stellt die Analyse einen Zwischenschritt dar. Im zweiten Beispiel stellt die Analyse den letzten Schritt der Namensauflösung dar und SymbolicLinkEmbeddedInOldPath- sollte auf FALSE-festgelegt werden.
Wenn DER DELETE-Zugriff angegeben ist, wird der Öffnen- oder Erstellungsvorgang für alle Fälle verweigert, in denen die symbolische Verknüpfung nicht eingebettet ist. Es ist möglich, dass, wenn DER DELETE-Zugriff der einzige angegebene war, der geöffnete Versuch ohne Analyse erfolgreich sein muss. Dies entspricht der UNIX-Symbolischen Verknüpfungsemantik.
Im Rahmen dieser Routine wird auch RxContext- entsprechend markiert. Dadurch wird sichergestellt, dass der Rückgabewert mit dem Aufruf dieser Routine durchgecheckt werden kann. Sobald RxPrepareToReparseSymbolicLink aufgerufen wird, muss der Netzwerkminiumleitungs-Umleitungsmodul STATUS_REPARSE zurückgeben.
Der Wert des ReparseRequired Parameter setzt nur dann eine Bedeutung voraus, wenn STATUS_SUCCESS von dieser Routine zurückgegeben wird. Wenn ReparseRequiredFALSEist, bedeutet dies, dass kein Analyseversuch erforderlich ist und die symbolische Verknüpfungsdatei selbst im Gegensatz zum Ziel des Links bearbeitet werden sollte. Wenn ReparseRequiredTRUEist, bedeutet dies, dass ein Analyseversuch erfolgreich eingerichtet wurde. In solchen Fällen ist es zwingend erforderlich, dass der Netzwerk-Miniumleitung STATUS_REPARSE für den zugeordneten MRxCreate Aufruf zurückgibt. RDBSS initiiert eine Überprüfung auf diese Bedingung.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Desktop |
Header- | rxprocs.h (include Rxprocs.h) |
IRQL- | <= APC_LEVEL |