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.