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
标识到需要 DMA 驱动的事件通知的 WaveRT 端口驱动程序,并指定需要循环缓冲区每个周期的通知数。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 在 Windows Vista 和更高版本的 Windows作系统中可用。 |
目标平台 | 普遍 |
标头 | portcls.h |
IRQL | 被动级别。 |
另请参阅
IMiniportWaveRTStream::AllocateAudioBuffer
IMiniportWaveRTStreamNotification