IAsyncReader ::Request, méthode (strmif.h)
[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture in Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation au lieu de DirectShow, si possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]
La Request
méthode met en file d’attente une demande asynchrone de données.
Syntaxe
HRESULT Request(
IMediaSample *pSample,
[in] DWORD_PTR dwUser
);
Paramètres
pSample
Pointeur vers l’interface IMediaSample d’un exemple de média fourni par l’appelant.
[in] dwUser
Spécifie une valeur arbitraire qui est retournée à la fin de la demande.
Valeur retournée
Retourne une valeur HRESULT . Les valeurs possibles sont les suivantes.
Code de retour | Description |
---|---|
|
Réussite. |
|
La mémoire tampon n’est pas alignée correctement. |
|
L’échantillon n’a pas été horodaté. |
|
La broche est en cours de vidage. |
|
La position de début demandée est au-delà de la fin du fichier. |
|
Mémoire insuffisante. |
Remarques
Avant d’appeler cette méthode, récupérez un exemple de média à partir de l’allocateur de la broche. Horodatage de l’échantillon avec les décalages d’octets que vous demandez, premier et dernier inclus, multipliés par 10 000 000. Les décalages d’octets sont relatifs au début du flux.
Les positions de début et d’arrêt doivent correspondre à l’alignement qui a été décidé lors de la connexion des broches. Sinon, la méthode peut retourner VFW_E_BADALIGN. Si l’alignement convenu est plus grosseur que l’alignement réel du flux, la position d’arrêt peut dépasser la durée réelle. Si c’est le cas, la méthode arrondit la position d’arrêt à l’alignement réel.
Bien qu’il s’agisse techniquement d’une violation des règles COM, l’appelant doit laisser un nombre de références en suspens sur l’échantillon. La Request
méthode n’appelle pas AddRef ou Release. Le nombre de références est donc nécessaire pour maintenir l’exemple actif.
La méthode retourne avant la fin de la requête. Appelez la méthode IAsyncReader ::WaitForNext pour attendre la demande. Ne réutilisez pas l’exemple de média d’origine pendant que la demande est en attente. La méthode WaitForNext retourne un pointeur vers l’exemple d’origine. Si la demande a réussi, l’exemple contient les données demandées. La méthode WaitForNext retourne également la valeur spécifiée dans le paramètre dwUser . L’appelant peut utiliser cette valeur pour identifier l’exemple.
Exemples
L’exemple suivant montre une fonction d’assistance possible pour une broche d’entrée, pour mettre en file d’attente les demandes :
C++ |
---|
|
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | strmif.h (include Dshow.h) |
Bibliothèque | Strmiids.lib |