AVCSTRM_GET_STATE

Der AVCSTRM_GET_STATE Funktionscode ruft den aktuellen Streamstatus des angegebenen Datenstroms ab.

E/A-Statusblock

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

Bei erfolgreicher Ausführung wird ein STATUS_SUCCESS zurückgegeben. Das StreamState-Mitglied der CommandData-Union hat den aktuellen Streamstatus. Es kann KSSTATE_STOP, KSTATE_PAUSE oder KSSTATE_RUN sein.

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_GET_STATE im Argument Request des Makros.

AVCStreamContext
Gibt den Streamkontext (Handle) an, der von einem früheren AVCSTRM_OPEN Aufruf zurückgegeben wird, aus dem der Streamzustand abgerufen werden soll.

StreamState
Wenn AVCSTRM_GET_STATE erfolgreich zurückgegeben wird, enthält dieses Element den aktuellen Streamstatus.

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_GET_STATE als Request-Argument an das Makro zu übergeben. Als Nächstes legt der Untereinheitstreiber den AVCStreamContext-Member auf den Streamkontext (Handle) des Datenstroms fest, aus dem der Streamstatus abgerufen werden soll.

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 Stream beschreibt, aus dem der Streamzustand abgerufen werden soll.

Ein Untereinheitstreiber kann erwarten, dass dieser Befehl synchron abgeschlossen wird. Das Ergebnis wird sofort ohne ausstehender Vorgang in avcstrm.syszurückgegeben.

Dieser Funktionscode muss unter IRQL = PASSIVE_LEVEL aufgerufen werden.

Kommentare

Diese Funktion verwendet das StreamState-Element 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 {
    .
    .
    KSSTATE  StreamState;
    .
    .
  } 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

KSSTATE

AVCSTRM_FUNCTION