The CMemAllocator 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
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
Free Indicates an overridden CBaseAllocator::Free member function, called when a decommit operation is complete to free memory.
Implemented IMemAllocator Methods
CreateInstance Creates new instances of CMemAllocator in the factory template. SetProperties Sets the number of media samples and the size of each.
Allocates a media sample object.
Syntax
HRESULT Alloc(void);
Return Value
Returns an HRESULT value.
Remarks
This member function creates instances of 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.
Constructs a CMemAllocator object.
Syntax
CMemAllocator( TCHAR *pName, LPUNKNOWN lpUnk, HRESULT *phr );
Parameters
- pName
- Pointer to the name of the allocator object.
- lpUnk
- Pointer to the controlling IUnknown interface.
- phr
- Pointer to the general COM return value. This value is changed only if this function fails.
Return Value
No return value.
Remarks
This constructor is passed to CBaseAllocator::CBaseAllocator, which initializes the data members.
Creates new instances of CMemAllocator in the factory template.
Syntax
static CUnknown *CreateInstance( LPUNKNOWN pUnk, HRESULT *phr );
Parameters
Return Value
Returns the pUnkRet parameter, which is a CUnknown class object.
Frees memory for a media sample object.
Syntax
HRESULT Free(void);
Return Value
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.
Releases all media samples in the free list.
Syntax
void ReallyFree (void);
Return Value
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.
Determines the size, number, and alignment of blocks.
Syntax
HRESULT SetProperties( ALLOCATOR_PROPERTIES *pRequest, ALLOCATOR_PROPERTIES *pActual );
Parameters
- pRequest
- Pointer to requested allocator properties.
- pActual
- Pointer to allocator properties actually set.
Return Value
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.
Top of Page
© 2000 Microsoft and/or its suppliers. All rights reserved. Terms of Use.