KsStreamIo-Funktion (ks.h)
Die KsStreamIo-Funktion führt einen Datenstrom mit Lese- oder Schreibvorgängen für das angegebene Dateiobjekt aus. Die Funktion versucht, FastIoDispatch nach Möglichkeit zu verwenden, oder sie generiert eine Lese- oder Schreibanforderung für das Geräteobjekt.
Syntax
KSDDKAPI NTSTATUS KsStreamIo(
[in] PFILE_OBJECT FileObject,
[in, optional] PKEVENT Event,
[in, optional] PVOID PortContext,
[in, optional] PIO_COMPLETION_ROUTINE CompletionRoutine,
[in, optional] PVOID CompletionContext,
[in, optional] KSCOMPLETION_INVOCATION CompletionInvocationFlags,
[out] PIO_STATUS_BLOCK IoStatusBlock,
[in, out] PVOID StreamHeaders,
[in] ULONG Length,
[in] ULONG Flags,
[in] KPROCESSOR_MODE RequestorMode
);
Parameter
[in] FileObject
Gibt das Dateiobjekt an, für das die E/A-Vorgänge ausgeführt werden sollen.
[in, optional] Event
Enthält optional das Ereignis, das in der E/A verwendet werden soll. Wenn keines übergeben wird, wird davon ausgegangen, dass sich der Aufruf für ein synchrones Dateiobjekt befindet, oder der Aufrufer wartet auf das Ereignis des Dateiobjekts, oder er kann asynchron abgeschlossen werden. Wenn das KSSTREAM_SYNCHRONOUS-Flag nicht festgelegt ist, muss es sich um ein vom Objekt-Manager zugewiesenes Ereignis handeln. Wenn der Aufrufer asynchrone E/A ausführt, muss er entweder auf das Ereignis des Dateiobjekts warten oder ein Ereignis in diesem Parameter übergeben und darauf warten. Wenn dies nicht geschieht, kann der Aufrufer nicht wissen, wann der IoStatusBlock durch den Anruf aktualisiert wurde.
[in, optional] PortContext
Enthält optional Kontextinformationen für einen Vervollständigungsport.
[in, optional] CompletionRoutine
Zeigt optional auf eine Vervollständigungsroutine für diese IRP.
[in, optional] CompletionContext
Wenn CompletionRoutine angegeben ist, stellt dies einen Kontextzeiger im Rückruf der Vervollständigungsroutine bereit.
[in, optional] CompletionInvocationFlags
Gibt Aufrufflags an, die angeben, wann die Vervollständigungsroutine aufgerufen wird. Die verwendeten Werte finden Sie in der folgenden Tabelle.
[out] IoStatusBlock
Speicherort zum Zurückgeben der status Informationen. Es wird immer davon ausgegangen, dass es sich um eine gültige Adresse handelt, unabhängig vom Anforderermodus. Der Wert muss gültig bleiben, bis der Aufruf den status aktualisiert hat. Der Aufrufer muss entweder synchrone E/A ausführen oder warten, bis das Ereignis des Dateiobjekts oder ein im Event-Parameter übergebenes Ereignis übergeben wird, bevor diese Adresse ungültig wird.
[in, out] StreamHeaders
Gibt die Liste der Streamheader an. Es wird davon ausgegangen, dass diese Adresse sowie die Adressen der Datenpuffer auf einen entsprechenden Zugriff untersucht wurden. Kernelmodusclients, die Streamingheader übermitteln, müssen die Header aus nonPagedPool-Arbeitsspeicher zuordnen.
[in] Length
Gibt die Größe der übergebenen StreamHeader an.
[in] Flags
Gibt verschiedene Flags für die E/A an. Die verwendeten Werte finden Sie in der folgenden Tabelle.
[in] RequestorMode
Gibt den Prozessormodus an, der in der IRP platziert werden soll, wenn eine generiert werden muss. Diese Variable bestimmt auch, ob ein schneller E/A-Aufruf ausgeführt werden kann. Wenn der Anforderermodus nicht der Kernelmodus, sondern der vorherige Modus ist, kann keine schnelle E/A verwendet werden.
Rückgabewert
Die KsStreamIo-Funktion gibt STATUS_SUCCESS zurück, wenn die Aktion erfolgreich war, STATUS_PENDING, wenn die Aktion aussteht oder wenn sie nicht erfolgreich ist, einen E/A-Fehler zurückgibt.
Hinweise
Die folgenden aufgezählten Werte werden für die CompletionInvocationFlags-Variable verwendet und sind vom Typ KSCOMPLETION_INVOCATION:
CompletionInvocationFlags | BESCHREIBUNG |
---|---|
KsInvokeOnSuccess | Ruft die Vervollständigungsroutine bei Erfolg auf. |
KsInvokeOnError | Ruft die Vervollständigungsroutine bei Einem Fehler auf. |
KsInvokeOnCancel | Ruft die Vervollständigungsroutine beim Abbruch auf. |
Die folgenden definierten Werte werden für die Flags-Variable verwendet:
Flags | BESCHREIBUNG |
---|---|
KSSTREAM_READ | Gibt an, dass ein IOCTL_KS_STREAMREAD IRP erstellt werden soll. Dies ist die Standardoption. |
KSSTREAM_WRITE | Gibt an, dass ein IOCTL_KS_STREAMWRITE IRP erstellt werden soll. |
KSSTREAM_PAGED_DATA | Gibt an, dass die Daten ausgelagert werden können. Dies ist der Standardwert und kann jederzeit verwendet werden. |
KSSTREAM_NONPAGED_DATA | Gibt an, dass die Daten nicht aus der Seite stehen und als Leistungsverbesserung verwendet werden können. |
KSSTREAM_SYNCHRONOUS | Gibt an, dass die IRP synchron ist. Dies bedeutet, dass der Ereignisparameter , wenn er übergeben wird, nicht als Objekt-Manager-Ereignis behandelt und nicht referenziert oder deferiert wird. |
KSSTREAM_READ entspricht KSPROBE_STREAMREAD.
Ebenso entspricht KSSTREAM_WRITE KSPROBE_STREAMWRITE.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Universell |
Header | ks.h (einschließlich Ks.h) |
Bibliothek | Ks.lib |