RxFsdDispatch-Funktion (mrx.h)
RxFsdDispatch implementiert den FSD-Dispatch (File System Driver) für RDBSS, um ein E/A-Anforderungspaket (IRP) zu verarbeiten. Ein Zeiger auf diese Routine wird über die Verteilungstabelle des Gerätetreibers für den Netzwerkminiumleitungstreiber von der RxDriverEntry-Routine kopiert, wenn RDBSS initialisiert wird.
Syntax
NTSTATUS RxFsdDispatch(
[in] IN PRDBSS_DEVICE_OBJECT RxDeviceObject,
[in] IN PIRP Irp
);
Parameter
[in] RxDeviceObject
Ein Zeiger auf das RDBSS-Geräteobjekt für diesen Netzwerkminiumleitungsor.
[in] Irp
Ein Zeiger auf das E/A-Anforderungspaket, das verarbeitet wird.
Rückgabewert
RxFsdDispatch gibt einen der folgenden Werte zurück:
Rückgabecode | Beschreibung |
---|---|
STATUS_INVALID_DEVICE_REQUEST | Es wurde eine Anforderung für ein ungültiges Geräteobjekt gestellt. Dieser Fehler wird beispielsweise zurückgegeben, wenn ein Dateisystemobjekt als RxDeviceObject-Parameter übergeben wird. Dieser status Wert gibt einen Fehler an. |
STATUS_OBJECT_NAME_INVALID | Es wurde eine ungültige Anforderung zum Erstellen einer Named Pipe oder eines Maillots gestellt (das MajorFunction-Element des Irp war IRP_MJ_CREATE_MAILSLOT oder IRP_MJ_CREATE_NAMED_PIPE). Dieser status Wert gibt einen Fehler an. |
STATUS_PENDING | Es wurde eine asynchrone Anforderung gestellt, und die status der Anforderung steht aus. |
STATUS_SUCCESS | Der RxFsdDispatch-Routineaufruf war erfolgreich. |
Hinweise
RxFsdDispatch wird von RDBSS aufgerufen, um ein E/A-Anforderungspaket (IRP) zu verarbeiten. Diese IRPs werden normalerweise von RDBSS als Reaktion auf eine Benutzermodusanwendung empfangen, die Vorgänge für eine Datei anfordert. Es ist auch möglich, dass ein anderer Kerneltreiber eine solche IRP ausgibt.
Ein Zeiger auf die RxFsdDispatch-Routine wird über die Treiberverteilungstabelle für einen Netzwerkminiumleitungstreiber kopiert, wenn die RxDriverEntry-Routine aufgerufen wird, um RDBSS zu initialisieren.
Intern verwaltet RDBSS zwei Verteilvektoren:
Ein allgemeiner Verteilervektor für die meisten Vorgänge.
Ein privater Verteilungsvektor für FCB-Vorgänge des Dateigeräts.
Wenn es sich bei der IRP um eine IRP_MJ_CREATE-Anforderung handelt, verwendet RxFsdDispatch einen gemeinsamen Verteilvektor. Wenn der IRP für einen Vorgang für einen FCB eines Dateiobjekts bestimmt ist, überprüft RxFsdDispatch , ob ein privater Verteilvektor verwendet werden soll. Andernfalls wird ein allgemeiner Verteilungsvektor verwendet, um die IRP zu verarbeiten.
RxFsdDispatch ruft interne Routinen auf, um die Standard-IRPs zu verarbeiten, von denen die meisten zu einem Aufruf einer der Vom Netzwerk-Miniumleitungstreiber implementierten Rückrufroutinen führen.
Einige IRPs werden als speziell behandelt und intern von RDBSS behandelt. Beispielsweise wird die IRP_MJ_SYSTEM_CONTROL intern verwendet, wenn WMI aktiviert ist. IRP_MJ_CREATE_MAILSLOT oder IRP_MJ_CREATE_NAMED_PIPE Anforderungen werden speziell behandelt und abgelehnt (ein STATUS_OBJECT_NAME_INVALID Fehler wird zurückgegeben).
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Desktop |
Kopfzeile | mrx.h (einschließlich Mrx.h, Rxstruc.h, Struchdr.h) |
IRQL | <= APC_LEVEL |