Freigeben über


RxFsdDispatch-Funktion (mrx.h)

RxFsdDispatch implementiert den Dateisystemtreiber -Dispatch (FSD) für RDBSS zum Verarbeiten eines E/A-Anforderungspakets (IRP). Ein Zeiger auf diese Routine wird über die Verteilertabelle des Gerätetreibers für den Netzwerkminiumleitungstreiber durch den 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 Netzwerkminiumleitungsmodul.

[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 Eine Anforderung wurde an einem ungültigen Geräteobjekt gestellt. Dieser Fehler wird beispielsweise zurückgegeben, wenn ein Dateisystemobjekt als RxDeviceObject Parameter übergeben wird. Dieser Statuswert gibt einen Fehler an.
STATUS_OBJECT_NAME_INVALID Es wurde eine ungültige Anforderung zum Erstellen einer benannten Pipe oder eines Maillots (das MajorFunction Mitglied der Irp- wurde IRP_MJ_CREATE_MAILSLOT oder IRP_MJ_CREATE_NAMED_PIPE). Dieser Statuswert gibt einen Fehler an.
STATUS_PENDING Eine asynchrone Anforderung wurde gestellt, und der Status der Anforderung steht aus.
STATUS_SUCCESS Der RxFsdDispatch Routineanruf war erfolgreich.

Bemerkungen

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 ein solches IRP ausgibt.

Ein Zeiger auf RxFsdDispatch Routine wird über die Treiberverteilertabelle für einen Netzwerkminiumleitungstreiber kopiert, wenn die RxDriverEntry-Routine aufgerufen wird, um RDBSS zu initialisieren.

Intern verwaltet RDBSS zwei Verteilervektoren:

  • Ein allgemeiner Verteilervektor für die meisten Vorgänge.

  • Ein privater Verteilervektor für FCB-Vorgänge des Dateigeräts.

Wenn das IRP eine IRP_MJ_CREATE Anforderung ist, verwenden RxFsdDispatch- einen gemeinsamen Verteilervektor. Wenn das IRP für einen Vorgang auf einem FCB eines Dateiobjekts vorgesehen ist, überprüft RxFsdDispatch, ob ein Vektor für private Verteiler verwendet werden soll. Andernfalls wird ein gemeinsamer Verteilervektor verwendet, um das IRP zu verarbeiten.

RxFsdDispatch ruft interne Routinen auf, um die standard-IRPs zu verarbeiten, von denen die meisten einen Aufruf an eine der Rückrufroutinen führen, die vom Netzwerk-Miniumleitungstreiber implementiert werden.

Einige IRPs werden intern von RDBSS als speziell behandelt und 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
Header- mrx.h (einschließlich Mrx.h, Rxstruc.h, Struchdr.h)
IRQL- <= APC_LEVEL

Siehe auch

RxDriverEntry-