Freigeben über


KsSetMajorFunctionHandler-Funktion (ks.h)

Die KsSetMajorFunctionHandler-Funktion legt den Handler für eine angegebene Hauptfunktion fest, um die interne Verteilerfunktion zu verwenden. Es wird durch eine KSDISPATCH_TABLE, die im undurchsichtigen Objektheader enthalten ist, weitergeleitet, um das erste Element innerhalb einer Struktur zu sein, auf die ein FsContext in einem Dateiobjekt verweist. Bei der Verteilung wird davon ausgegangen, dass die Tabelle und die FsContext-Struktur vom Gerät mit KsAllocateObjectHeader initialisiert werden.

Syntax

KSDDKAPI NTSTATUS KsSetMajorFunctionHandler(
  [in] PDRIVER_OBJECT DriverObject,
  [in] ULONG          MajorFunction
);

Parameter

[in] DriverObject

Gibt das Treiberobjekt an, dessen Hauptfunktion behandelt werden soll.

[in] MajorFunction

Gibt den zu behandelnden Hauptfunktionsbezeichner an. Dadurch wird der Hauptfunktionszeiger im Treiberobjekt auf eine interne Funktion festgelegt, die dann an die KSDISPATCH_TABLE-Funktion verteilt wird. Es wird angenommen, dass der Zeiger auf diese Tabelle das erste Element in einer Struktur ist, auf die fsContext im Dateiobjekt des spezifischen IRP verweist, das verteilt wird. Die gültigen Hauptfunktionsbezeichner sind wie aufgeführt.

Bezeichner BESCHREIBUNG
IRP_MJ_CREATE Create IRP. In diesem instance kann eine Erstellungsanforderung entweder zum Erstellen einer neuen instance eines Filters oder zum Erstellen eines Objekts wie einer Stecknadel unter einem Filter oder einer Uhr unter einer Stecknadel verwendet werden. Dabei wird davon ausgegangen, dass das erste Element in der Ausdehnung des Treiberobjekts eine KSDEVICE_HEADER-Struktur enthält, die verwendet wird, um den Typ des zu erstellenden Objekts basierend auf dem übergebenen Namen zu finden. Wenn ein übergeordnetes Dateiobjekt angegeben wird, wird dieses Objekt KSDISPATCH_TABLE. ChildCreateHandlerTable im FsContext wird untersucht, um zu bestimmen, welcher Handler für die Erstellung oder die Tabelle des Geräteobjekts verwendet werden soll.
IRP_MJ_CLOSE Schließen Sie IRP.
IRP_MJ_DEVICE_CONTROL GerätesteuerungS-IRP.
IRP_MJ_READ Lesen Sie IRP.
IRP_MJ_WRITE Schreiben Sie IRP.
IRP_MJ_FLUSH_BUFFERS IRP leeren.
IRP_MJ_QUERY_SECURITY Abfragen von Sicherheitsinformationen.
IRP_MJ_SET_SECURITY Legen Sie Sicherheitsinformationen fest.
KSDISPATCH_FASTIO Dieses Flag kann dem MajorFunction-Bezeichner hinzugefügt werden, um anzugeben, dass der Eintrag auf die Schnelle E/A-Verteilertabelle und nicht auf den typischen Hauptfunktionseintrag verweist. Dies gilt nur für IRP_MJ_READ, IRP_MJ_WRITE oder IRP_MJ_DEVICE_CONTROL. Der Treiber ist für die Erstellung der Tabelle DriverObject-FastIoDispatch> verantwortlich. Wie bei der normalen Verteilung müssen alle Dateiobjekte, wenn ein Handler für das Treiberobjekt festgelegt ist, diese schnelle E/A verarbeiten, auch wenn der Eintrag nur auf DispatchFastIoDeviceControlFailure oder eine ähnliche Funktion verweist.

Rückgabewert

Gibt STATUS_SUCCESS zurück, wenn der MajorFunction-Bezeichner gültig ist.

Hinweise

Wenn ein Hauptfunktionshandler für ein Treiberobjekt festgelegt ist, müssen alle Dateiobjekte diese Hauptfunktion verarbeiten, auch wenn der Eintrag nur auf KsDispatchInvalidDeviceRequest verweist.

KSDISPATCH_FASTIO

Dieses Flag kann verwendet werden, um anzugeben, dass anstelle des IRP-basierten Eintrags der schnelle E/A-Eintrag festgelegt werden soll.

Anforderungen

Anforderung Wert
Zielplattform Universell
Header ks.h (ks.h einschließen)
Bibliothek Ks.lib