Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der AVCSTRM_ABORT_STREAMING Funktionscode bricht alle ausstehenden Datenanforderungen ab und gibt die verwendeten Ressourcen frei.
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_ABORT_STREAMING 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.
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 Streams fest, um das Streaming abzubrechen.
Um diese Anforderung zu senden, sendet eine Untereinheit eine IRP_MJ_INTERNAL_DEVICE_CONTROL IRP, wobei das IoControlCode-Element des IRP auf IOCTL_AVCSTRM_CLASS festgelegt ist, und das Argument1-Element der IRP-Gruppe auf die AVC_STREAM_REQUEST_BLOCK-Struktur, die den abzubrechenden Streamingvorgang beschreibt.
Dieser Funktionscode muss bei PASSIVE_LEVEL aufgerufen werden. Wenn ein Daten-IRP abgebrochen wird, kann er bei DISPATCH_LEVEL ausgeführt werden. In diesem Fall sollte eine Untereinheit ein Arbeitselement starten und diese Funktion in ihrer Arbeitselementroutine aufrufen, die am PASSIVE_LEVEL ausgeführt wird.
Kommentare
Beachten Sie, dass diese Funktion alle Streaming-IRPs abbricht. Verwenden Sie IoCancelIrp, um eine einzelne IRP abzubrechen.
Eine Untereinheit sollte dies aufrufen, wenn das Zielgerät entfernt oder die ursprüngliche Daten-IRP abgebrochen wird, um den Streamvorgang zu beenden.
Diese Funktion verwendet kein Element der CommandData-Union in der AVC_STREAM_REQUEST_BLOCK-Struktur.
typedef struct _AVC_STREAM_REQUEST_BLOCK {
ULONG SizeOfThisBlock;
ULONG Version;
AVCSTRM_FUNCTION Function;
.
.
PVOID AVCStreamContext;
.
.
} AVC_STREAM_REQUEST_BLOCK, *PAVC_STREAM_REQUEST_BLOCK;
Anforderungen
Header: Deklariert in avcstrm.h. Schließen Sie avcstrm.h ein.