Partager via


Méthode CBaseAllocator.SetProperties

[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 SetProperties méthode spécifie le nombre de mémoires tampons à allouer et la taille de chaque mémoire tampon. Cette méthode implémente la méthode IMemAllocator::SetProperties .

Syntaxe

HRESULT SetProperties(
   ALLOCATOR_PROPERTIES *pRequest,
   ALLOCATOR_PROPERTIES *pActual
);

Paramètres

pRequest

Pointeur vers une structure ALLOCATOR_PROPERTIES qui contient les exigences de mémoire tampon.

pActual

Pointeur vers une structure ALLOCATOR_PROPERTIES qui reçoit les propriétés de mémoire tampon réelles.

Valeur renvoyée

Retourne l’une des valeurs HRESULT suivantes.

Code de retour Description
S_OK
Opération réussie.
E_POINTER
Argument pointeur NULL .
VFW_E_ALREADY_COMMITTED
Impossible de modifier la mémoire allouée pendant que le filtre est actif.
VFW_E_BADALIGN
Un alignement non valide a été spécifié.
VFW_E_BUFFERS_OUTSTANDING
Une ou plusieurs mémoires tampons sont toujours actives.

Notes

Cette méthode spécifie les exigences de mémoire tampon, mais n’alloue aucune mémoire tampon. Appelez la méthode CBaseAllocator::Commit pour allouer des mémoires tampons.

L’appelant alloue deux structures ALLOCATOR_PROPERTIES. Le paramètre pRequest contient les exigences de la mémoire tampon de l’appelant, y compris le nombre de mémoires tampons et la taille de chaque mémoire tampon. Lorsque la méthode retourne, le paramètre pActual contient les propriétés de mémoire tampon réelles, telles que définies par l’allocateur. Dans la classe de base, en supposant que la méthode réussit, les propriétés réelles correspondent toujours aux propriétés demandées. Les classes dérivées peuvent remplacer ce comportement.

L’allocateur ne doit pas être commité et ne doit pas avoir de mémoires tampons en attente. Dans la classe de base, l’alignement doit être égal à 1. La classe CMemAllocator remplace cette exigence.

Configuration requise

Condition requise Valeur
En-tête
Amfilter.h (include Streams.h)
Bibliothèque
Strmbase.lib (builds de vente au détail) ;
Strmbasd.lib (builds de débogage)

Voir aussi

CBaseAllocator, classe