Freigeben über


AVCSTRM_WRITE

Der AVCSTRM_WRITE Funktionscode wird verwendet, um einen Datenpuffer zu übermitteln, der an den angegebenen Stream übertragen werden soll.

E/A-Statusblock

Bei erfolgreicher Ausführung legtavcstrm.sysIrp-IoStatus.Status> auf STATUS_SUCCESS fest.

Mögliche Fehlerrückgabewerte sind:

Fehlerstatus BESCHREIBUNG
STATUS_DEVICE_REMOVED Das Gerät, das dem AVCSTRM_READ Vorgangs entspricht, ist nicht mehr vorhanden.
STATUS_CANCELLED Die Anforderung konnte nicht abgeschlossen werden.
STATUS_INVALID_PARAMETER Ein in der IRP angegebenen Parameter ist falsch.
STATUS_INSUFFICIENT_RESOURCES Es gab nicht genügend Systemressourcen, um die Anforderung abzuschließen.
STATUS_PENDING Die Anforderung wurde empfangen, erfordert jedoch eine weitere Verarbeitung. Die E/A-Vervollständigungsroutine verarbeitet die endgültige Antwort.

AVC_STREAM_REQUEST_BLOCK Eingabe

SizeOfThisBlock, Version und Funktion
Verwenden Sie das makro INIT_AVCSTRM_HEADER , um diese Member zu initialisieren. Übergeben Sie AVCSTRM_WRITE im Argument Request des Makros.

AVCStreamContext
Gibt den Streamkontext (Handle) an, der von einem früheren AVCSTRM_OPEN Aufruf zurückgegeben wird, der das Ziel für den Datenschreibvorgang ist.

Pufferstruktur
Gibt den Puffer an, aus dem der Schreibvorgang Daten abrufen soll.

Ein Untereinheitstreiber muss zuerst eine IRP und eine AVC_STREAM_REQUEST_BLOCK Struktur zuordnen.

Als Nächstes sollte das Makro INIT_AVCSTRM_HEADER verwendet werden, um die AVC_STREAM_REQUEST_BLOCK-Struktur zu initialisieren und AVCSTRM_READ als Request-Argument an das Makro zu übergeben.

Als Nächstes legt der Untereinheitstreiber den AVCStreamContext-Member auf den Streamkontext (Handle) des Datenstroms fest, der das Ziel des Schreibdatenvorgangs ist. Schließlich legt der Untereinheitstreiber den BufferStruct-Member der CommandData-Union fest, der den Puffer beschreibt, aus dem der Schreibvorgang Daten abruft.

Um diese Anforderung zu senden, sendet eine Untereinheit eine IRP_MJ_INTERNAL_DEVICE_CONTROL IRP mit dem IoControlCode-Member des IRP auf IOCTL_AVCSTRM_CLASS und dem Argument1-Element der IRP-Gruppe auf die AVC_STREAM_REQUEST_BLOCK-Struktur, die den auszuführenden Schreibvorgang beschreibt.

Dieser Befehl wird asynchron abgeschlossen. Nach Abschluss wird die im IRP festgelegte E/A-Vervollständigungsroutine aufgerufen.

Dieser Funktionscode muss unter IRQL = PASSIVE_LEVEL aufgerufen werden.

Kommentare

Diese Funktion verwendet den BufferStruct-Member der CommandData-Union in der AVC_STREAM_REQUEST_BLOCK-Struktur, wie unten gezeigt.

typedef struct _AVC_STREAM_REQUEST_BLOCK {
  ULONG  SizeOfThisBlock;
  ULONG  Version;
  AVCSTRM_FUNCTION  Function;
  .
  .
  PVOID AVCStreamContext;
  .
  .
  union _tagCommandData {
    .
    .
    AVCSTRM_BUFFER_STRUCT  BufferStruct;
    .
    .
  } CommandData;
} AVC_STREAM_REQUEST_BLOCK, *PAVC_STREAM_REQUEST_BLOCK;

Anforderungen

Header: Deklariert in avcstrm.h. Schließen Sie avcstrm.h ein.

Weitere Informationen

AVC_STREAM_REQUEST_BLOCK

INIT_AVCSTRM_HEADER

IRP_MJ_INTERNAL_DEVICE_CONTROL

IOCTL_AVCSTRM_CLASS

AVCSTRM_BUFFER_STRUCT

AVCSTRM_FUNCTION