Freigeben über


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