IMiniportWaveRTStreamNotification::AllocateBufferWithNotification 方法 (portcls.h)
如果要实现 DMA 驱动的事件通知,方法 AllocateAudioBufferWithNotification
为音频数据分配循环缓冲区。 如果不需要事件通知,则必须使用 IMiniportWaveRTStream::AllocateAudioBuffer。
语法
NTSTATUS AllocateBufferWithNotification(
[in] ULONG NotificationCount,
[in] ULONG RequestedSize,
[out] PMDL *AudioBufferMdl,
[out] ULONG *ActualSize,
[out] ULONG *OffsetFromFirstPage,
[out] MEMORY_CACHING_TYPE *CacheType
);
参数
[in] NotificationCount
指定每个缓冲区周期所需的通知数。 有效值为 1 或 2,其中 1 表示循环缓冲区末尾的单个通知,2 表示每个缓冲区周期有两个通知,一个在缓冲区的中间点,一个在末尾。
[in] RequestedSize
指定音频缓冲区的请求大小(以字节为单位)。
[out] AudioBufferMdl
内存描述符列表的输出指针 (描述音频缓冲区的 MDL) 。 此参数指向调用方分配的指针变量,方法将指针写入到 MDL。
[out] ActualSize
分配的缓冲区的实际大小(以字节为单位)的输出指针。 此参数指向一个 ULONG 变量,方法在其中写入大小值。
[out] OffsetFromFirstPage
从 MDL 的第一页开始,缓冲区) 偏移量 (的输出指针(以字节为单位)。 此参数指向调用方分配的 ULONG 变量,方法在其中写入偏移值。
[out] CacheType
指定客户端请求音频缓冲区的缓存类型。 此参数是 MEMORY_CACHING_TYPE 枚举值
返回值
AllocateBufferWithNotification
如果调用成功,则返回STATUS_SUCCESS。 否则,方法将返回相应的错误状态代码。 下表显示了一些可能的错误消息状态代码。
返回代码 | 说明 |
---|---|
|
驱动程序不支持缓冲区属性的指定组合。 |
|
内存不足,无法分配缓冲区。 |
|
设备未准备就绪。 |
注解
AllocateBufferWithNotification
方法以分配一个循环缓冲区,端口驱动程序稍后可以映射到客户端的虚拟地址空间。 AllocateBufferWithNotification
以类似于 IMiniportWaveRTStream::AllocateAudioBuffer 的方式运行。 此外, AllocateBufferWithNotification
向 WaveRT 端口驱动程序标识需要 DMA 驱动的事件通知,并指定循环缓冲区每个周期所需的通知数。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 Windows Vista 和更高版本的 Windows 操作系统中可用。 |
目标平台 | 通用 |
标头 | portcls.h |
IRQL | 被动级别。 |
另请参阅
IMiniportWaveRTStream::AllocateAudioBuffer
IMiniportWaveRTStreamNotification