Index Topic Contents | |||
Previous Topic: CMediaType Class Next Topic: CMsg Class |
CMemAllocator Class
This class provides support for IMemAllocator by using the new operator to allocate memory. Derived from CBaseAllocator, it overrides the CBaseAllocator::Alloc member function to allocate a single block of memory large enough to hold all the requested data areas, and then allocates (using the new operator) a CMediaSample object for each requested buffer pointing into the data area.
The CBaseInputPin and CBaseOutputPin classes instantiate CMemAllocator objects as the default allocator if no other suitable allocator is provided.
All member functions in this class that return HRESULT and accept a pointer as a parameter return E_POINTER when passed a null pointer.
Member Functions
Name Description Alloc Allocates memory for a media sample (overrides CBaseAllocator::Alloc). CMemAllocator Constructs a CMemAllocator object. ReallyFree Frees memory when called from the destructor (or from Alloc when reallocating for new size or count). Overridable Member Functions
Name Description Free Indicates an overridden CBaseAllocator::Free member function, called when a decommit operation is complete to free memory. Implemented IMemAllocator Methods
Name Description CreateInstance Creates new instances of CMemAllocator in the factory template. SetProperties Sets the number of media samples and the size of each. CMemAllocator Class
CMemAllocator::AllocAllocates a media sample object.
HRESULT Alloc(void);
Return Values
Returns an HRESULT value.
Remarks
This member function instantiates CMediaSample objects, adds them to the m_lFree data members, and updates the m_lAllocated count. This member function is called from IMemAllocator::Commit when becoming active.
CMemAllocator Class
CMemAllocator::CMemAllocatorConstructs a CMemAllocator object.
CMemAllocator(
TCHAR * pName,
LPUNKNOWN lpUnk,
HRESULT * phr
);Parameters
- pName
- Name of the allocator object.
- lpUnk
- Pointer to LPUNKNOWN.
- phr
- Pointer to the general COM return value. Note that this value is changed only if this function fails.
Return Values
No return value.
Remarks
This constructor is passed to CBaseAllocator::CBaseAllocator, which initializes the data members.
CMemAllocator Class
CMemAllocator::CreateInstanceCreates new instances of CMemAllocator in the factory template.
static CUnknown *CreateInstance(
LPUNKNOWN pUnk,
HRESULT *phr
);Parameters
- pUnk
- Pointer to the IUnknown interface.
- phr
- Pointer to the HRESULT value into which to place resulting information.
Return Values
Returns the pUnkRet parameter, which is a CUnknown class object.
CMemAllocator Class
CMemAllocator::FreeFrees memory for a media sample object.
HRESULT Free(void);
Return Values
No return value.
Remarks
This member function overrides the pure virtual CBaseAllocator::Free member function called when a decommit operation has completed. Memory is actually freed in ReallyFree, which is called from the destructor, so this function is not used in this class.
CMemAllocator Class
CMemAllocator::ReallyFreeReleases all media samples in the free list.
void ReallyFree (void);
Return Values
No return value.
Remarks
The CMemAllocator class holds memory until the object is actually deleted. This member function can be overridden to handle freeing media samples when a decommit occurs.
This member function is protected.
CMemAllocator Class
CMemAllocator::SetPropertiesDetermines the size, number, and alignment of blocks.
HRESULT SetProperties(
ALLOCATOR_PROPERTIES * pRequest,
ALLOCATOR_PROPERTIES * pActual
);Parameters
- pRequest
- Requested allocator properties.
- pActual
- Allocator properties actually set.
Return Values
Returns an HRESULT value.
Remarks
The pRequest parameter is filled in by the caller with the requested values for the count, number, and alignment as specified by the ALLOCATOR_PROPERTIES structure. The pActual parameter is filled in by the allocator with the closest values it can provide for the request. This member function cannot be called unless the allocator has been decommitted using the IMemAllocator::Decommit method.
This member function replaces SetCountAndSize in previous releases.
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.