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 |