CBaseAllocator.Alloc 方法
[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayer、 IMFMediaEngine 和 音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
方法 Alloc
为缓冲区分配内存。
语法
virtual HRESULT Alloc();
参数
此方法没有任何参数。
返回值
返回以下 HRESULT 值之一。
返回代码 | 说明 |
---|---|
|
缓冲区要求未更改。 |
|
缓冲区要求已更改。 |
|
未设置缓冲区要求。 |
备注
此方法由 CBaseAllocator::Commit 方法调用。
在基类中,此方法不分配任何内存。 如果未设置缓冲区要求,则返回错误;如果要求未更改,则S_FALSE;如果要求已更改,则返回S_OK。
派生类应重写此方法以执行实际内存分配。 通常,派生类将执行以下步骤:
- 调用基类实现,以确定内存是否确实需要分配。
- 分配内存。
- 创建包含步骤 2 中内存块的 CMediaSample 对象。
- (CBaseAllocator::m_lFree) ,将每个 CMediaSample 对象添加到免费示例列表中。
有关示例,请参阅 CMemAllocator::Alloc。
要求
要求 | 值 |
---|---|
标头 |
|
库 |
|