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 |