AVCSTRM_ABORT_STREAMING
Le code de la fonction AVCSTRM_ABORT_STREAMING annule toutes les demandes de données en attente et libère les ressources utilisées.
Bloc d’état E/S
En cas de réussite, avcstrm.sys définit Irp-IoStatus.Status> sur STATUS_SUCCESS.
Les valeurs de retour d’erreur possibles sont les suivantes :
État de l’erreur | Description |
---|---|
STATUS_DEVICE_REMOVED | L’appareil correspondant à l’opération de AVCSTRM_READ n’existe plus. |
STATUS_CANCELLED | La demande n’a pas pu être effectuée. |
STATUS_INVALID_PARAMETER | Un paramètre spécifié dans l’IRP est incorrect, |
STATUS_INSUFFICIENT_RESOURCES | Il n’y avait pas suffisamment de ressources système pour terminer la demande. |
STATUS_PENDING | La demande a été reçue, mais nécessite un traitement supplémentaire. La routine d’achèvement des E/S gère la réponse finale. |
entrée AVC_STREAM_REQUEST_BLOCK
SizeOfThisBlock, Version et fonction
Utilisez la macro INIT_AVCSTRM_HEADER pour initialiser ces membres. Passez AVCSTRM_ABORT_STREAMING dans l’argument Request de la macro.
AVCStreamContext
Spécifie le contexte de flux (handle) retourné par un appel de AVCSTRM_OPEN antérieur qui est la cible de l’opération d’écriture de données.
Un pilote de sous-unité doit d’abord allouer un IRP et une structure AVC_STREAM_REQUEST_BLOCK .
Ensuite, il doit utiliser la macro INIT_AVCSTRM_HEADER pour initialiser la structure AVC_STREAM_REQUEST_BLOCK, en passant AVCSTRM_READ comme argument Request à la macro.
Ensuite, le pilote de sous-unité définit le membre AVCStreamContext sur le contexte de flux (handle) du flux pour abandonner la diffusion en continu.
Pour envoyer cette demande, une sous-unité envoie un IRP IRP_MJ_INTERNAL_DEVICE_CONTROL avec le membre IoControlCode de l’IRP défini sur IOCTL_AVCSTRM_CLASS et le membre Argument1 de l’IRP défini à la structure AVC_STREAM_REQUEST_BLOCK qui décrit l’opération d’abandon de diffusion en continu à avoir lieu.
Ce code de fonction doit être appelé au PASSIVE_LEVEL. Lorsqu’un IRP de données est annulé, il peut être exécuté à DISPATCH_LEVEL. Dans ce cas, une sous-unité doit démarrer un élément de travail et appeler cette fonction dans sa routine d’élément de travail, qui s’exécute au PASSIVE_LEVEL.
Commentaires
Notez que cette fonctionnalité annule tous les runtimes d’intégration en continu. Pour annuler un IRP individuel, utilisez IoCancelIrp.
Une sous-unité doit l’appeler lorsque son appareil cible est supprimé ou que l’IRP de données d’origine est annulé pour arrêter l’opération de flux.
Cette fonction n’utilise aucun membre de l’union CommandData dans la structure AVC_STREAM_REQUEST_BLOCK.
typedef struct _AVC_STREAM_REQUEST_BLOCK {
ULONG SizeOfThisBlock;
ULONG Version;
AVCSTRM_FUNCTION Function;
.
.
PVOID AVCStreamContext;
.
.
} AVC_STREAM_REQUEST_BLOCK, *PAVC_STREAM_REQUEST_BLOCK;
Spécifications
En-têtes: Déclaré dans avcstrm.h. Incluez avcstrm.h.