Freigeben über


KsStreamIo-Funktion (ks.h)

Die KsStreamIo--Funktion führt einen Datenstrom mit Lese- oder Schreibzugriff für das angegebene Dateiobjekt aus. Die Funktion versucht, FastIoDispatch- zu verwenden, oder es 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 ausgeführt werden soll.

[in, optional] Event

Enthält optional das Ereignis, das in der E/A verwendet werden soll. Wenn keine übergeben wird, wird davon ausgegangen, dass sich der Aufruf für ein synchrones Dateiobjekt befindet oder der Aufrufer auf das Ereignis des Dateiobjekts wartet oder asynchron abgeschlossen werden kann. Wenn dieses Attribut verwendet wird und das KSSTREAM_SYNCHRONOUS-Flag nicht festgelegt ist, muss es sich um ein Ereignis handeln, das vom Objekt-Manager zugewiesen wird. Wenn der Aufrufer asynchrone E/A-Vorgänge ausführt, muss er entweder auf das Ereignis des Dateiobjekts warten oder ein Ereignis in diesem Parameter übergeben und darauf warten. Wenn dies nicht geschehen ist, gibt es keine Möglichkeit für den Anrufer zu wissen, wann der IoStatusBlock vom Anruf aktualisiert wurde.

[in, optional] PortContext

Enthält optional Kontextinformationen für einen Abschlussport.

[in, optional] CompletionRoutine

Zeigt optional auf eine Abschlussroutine für dieses IRP.

[in, optional] CompletionContext

Wenn CompletionRoutine- angegeben ist, stellt dies einen Kontextzeiger im Abschlussroutinerückruf bereit.

[in, optional] CompletionInvocationFlags

Gibt Aufrufkennzeichnungen an, die angeben, wann die Abschlussroutine aufgerufen wird. In der folgenden Tabelle finden Sie die verwendeten Werte.

[out] IoStatusBlock

Speicherort, um die Statusinformationen zurückzugeben. Dies wird immer als gültige Adresse angenommen, 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 Ereignis, das im Parameter "Event" übergeben wird, bevor diese Adresse ungültig wird.

[in, out] StreamHeaders

Gibt die Liste der Datenstromheader an. Es wird davon ausgegangen, dass diese Adresse sowie die Adressen der Datenpuffer für den geeigneten Zugriff untersucht wurden. Kernelmodusclients, die Streamingheader übermitteln, müssen die Header aus dem NonPagedPool-Speicher zuweisen.

[in] Length

Gibt die Größe der übergebenen StreamHeaders an.

[in] Flags

Gibt verschiedene Flags für die E/A an. In der folgenden Tabelle finden Sie die verwendeten Werte.

[in] RequestorMode

Gibt den Prozessormodus an, der im IRP platziert werden soll, wenn ein Prozessor generiert werden muss. Diese Variable bestimmt auch, ob ein schneller E/A-Aufruf ausgeführt werden kann. Wenn der Anforderermodus nicht kernelmodus ist, aber der vorherige Modus ist, kann schnelle E/A nicht verwendet werden.

Rückgabewert

Die KsStreamIo--Funktion gibt STATUS_SUCCESS zurück, STATUS_PENDING, wenn die Aktion aussteht oder wenn die Aktion nicht erfolgreich ist, wenn ein E/A-Fehler zurückgegeben wird.

Bemerkungen

Die folgenden Aufzählungswerte werden für die CompletionInvocationFlags Variable verwendet und sind vom Typ KSCOMPLETION_INVOCATION:

CompletionInvocationFlags Beschreibung
KsInvokeOnSuccess Ruft die Abschlussroutine bei Erfolg auf.
KsInvokeOnError Ruft die Abschlussroutine beim Fehler auf.
KsInvokeOnCancel Ruft die Abschlussroutine 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 Standardeinstellung.
KSSTREAM_WRITE Gibt an, dass ein IOCTL_KS_STREAMWRITE IRP erstellt werden soll.
KSSTREAM_PAGED_DATA Gibt an, dass die Daten seitenfähig sind. Dies ist der Standardwert und kann jederzeit verwendet werden.
KSSTREAM_NONPAGED_DATA Gibt an, dass die Daten nichtpaged sind und als Leistungsverbesserung verwendet werden können.
KSSTREAM_SYNCHRONOUS Gibt an, dass das IRP synchron ist. Dies bedeutet, dass der Parameter "Event" nicht als Objekt-Manager-Ereignis behandelt wird und nicht darauf verwiesen oder abgeleitet wird.

KSSTREAM_READ entspricht KSPROBE_STREAMREAD.

Ebenso entspricht KSSTREAM_WRITE KSPROBE_STREAMWRITE.

Anforderungen

Anforderung Wert
Zielplattform- Universal
Header- ks.h (enthalten Ks.h)
Library Ks.lib