AVCSTRM_GET_STATE
Le code de la fonction AVCSTRM_GET_STATE obtient l’état actuel du flux spécifié.
Bloc d’état E/S
En cas de réussite, avcstrm.sys définit Irp-IoStatus.Status> sur STATUS_SUCCESS.
En cas de réussite, une STATUS_SUCCESS est retournée. Le membre StreamState de l’union CommandData a l’état actuel du flux. Il peut s’agir de KSSTATE_STOP, de KSTATE_PAUSE ou de KSSTATE_RUN.
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_GET_STATE dans l’argument Request de la macro.
AVCStreamContext
Spécifie le contexte de flux (handle) retourné par un appel de AVCSTRM_OPEN antérieur à partir duquel obtenir l’état du flux.
StreamState
Si AVCSTRM_GET_STATE retourne correctement, ce membre contient l’état actuel du flux.
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_GET_STATE en tant qu’argument Request à la macro. Ensuite, le pilote de sous-unité définit le membre AVCStreamContext sur le contexte de flux (handle) du flux à partir duquel obtenir l’état du flux.
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 le flux à partir duquel obtenir l’état du flux.
Un pilote de sous-unité peut s’attendre à ce que cette commande soit exécutée de manière synchrone. Le résultat retourne immédiatement sans opération en attente dans avcstrm.sys.
Ce code de fonction doit être appelé dans IRQL = PASSIVE_LEVEL.
Commentaires
Cette fonction utilise le membre StreamState de l’union CommandData dans la structure AVC_STREAM_REQUEST_BLOCK, comme indiqué ci-dessous.
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;
Spécifications
En-têtes: Déclaré dans avcstrm.h. Incluez avcstrm.h.