Partager via


SRB_CLOSE_STREAM

Le pilote de classe envoie cette requête pour fermer un flux.

Valeur de retour

Le minidriver doit définir l’un des éléments suivants comme status dans le SRB :

STATUS_SUCCESS
Indique la réussite de l’exécution de la commande.

STATUS_NOT_IMPLEMENTED
Indique que la fonction n’est pas prise en charge par le minidriver.

STATUS_IO_DEVICE_ERROR
Indique qu’une défaillance matérielle s’est produite.

Commentaires

Le pilote de classe fournit une mémoire tampon HW_STREAM_OBJECT dans pSrb-StreamObject>, avec pSrb-StreamObject-StreamNumber>> défini sur le numéro du flux à fermer. Le pointeur pSrb pointe vers une structure HW_STREAM_REQUEST_BLOCK . StreamNumber correspond au décalage du flux dans la structure HW_STREAM_DESCRIPTOR que le minidriver fournit en réponse à une demande de SRB_GET_STREAM_INFO .

Si le minidriver ferme correctement le flux, le minidriver retourne STATUS_SUCCESS. Sinon, elle retourne une erreur appropriée status.

Lorsque la commande SRB_CLOSE_STREAM est reçue par le minidriver, la routine de minidriver qui répond doit :

  1. Libérez toutes les ressources allouées par le minidriver lorsque le flux a été ouvert.

  2. Arrêtez de référencer l’horloge si une horloge a été utilisée pour le flux.

  3. Réinitialisez l’état du flux sur Arrêter.

Notez qu’un flux peut être fermé arbitrairement pendant la diffusion en continu si une application en mode utilisateur associée se bloque. Par conséquent, vous devez libérer toutes les ressources en attente pour le flux, terminer toutes les SSR en attente pour le flux et remettre le flux dans un état de suspension.