KSRTAUDIO_HWREGISTER 结构 (ksmedia.h)

KSRTAUDIO_HWREGISTER 结构指定客户端请求的硬件寄存器的地址和其他信息。 驱动程序通过 KSPROPERTY_RTAUDIO_POSITIONREGISTERKSPROPERTY_RTAUDIO_CLOCKREGISTER来响应注册请求时填充。

语法

typedef struct {
  PVOID     Register;
  ULONG     Width;
  ULONGLONG Numerator;
  ULONGLONG Denominator;
  ULONG     Accuracy;
} KSRTAUDIO_HWREGISTER, *PKSRTAUDIO_HWREGISTER;

成员

Register

指向寄存器的指针。 此成员指定寄存器映射到的虚拟地址。

Width

指定寄存器的宽度(以位为单位)。 此成员的值可以是 32 或 64。

Numerator

指定时钟寄存器递增的频率的分子。 请参阅以下备注。 部分。

Denominator

指定时钟寄存器递增的频率的分母。 请参阅以下备注。 部分。

Accuracy

指定时钟或位置寄存器的准确性。 请参阅以下“备注”部分。

注解

对于通过 KSPROPERTY_RTAUDIO_POSITIONREGISTER硬件位置寄存器请求,驱动程序将填充 RegisterWidthAccuracy 成员,因为其他成员特定于时钟寄存器。 对于通过 KSPROPERTY_RTAUDIO_CLOCKREGISTER硬件时钟寄存器请求,驱动程序将填充整个结构。

时钟寄存器是一个计数器,它以驱动音频设备内部总线的内部硬件时钟的频率递增。 寄存器随时钟的每个刻度递增一。 当设备打开时,寄存器开始计数,并继续运行,直到设备关机。 软件使用时钟寄存器将两个或多个设备与独立的硬件时钟同步。

成员 分子分母 共同指定时钟寄存器递增的频率。 频率是通过将 分子 除以 分母计算的。

时钟寄存器以音频设备内部时钟的频率递增。 这是音频设备通常用于在其内部总线或外部编解码器链路上时钟事件的频率。 硬件通过除以内部时钟频率来派生音频采样频率。

音频设备可以从芯片上晶体振动或外部时钟信号派生其内部时钟。 例如,如果设备通过将 33-MHz 外部时钟除以 2 来派生 16.5-MHz 内部时钟,则分子和分母可以分别指定为 33,000,000 和 2。

Accuracy 参数指定位置或时钟寄存器读取中的最大误差。 这实质上是寄存器更新速率的表示形式。 对于时钟寄存器, Accuracy 参数指示寄存器更新之间的时钟周期数。 在前面的 16.5-MHz 内部时钟示例中,如果时钟寄存器每 4 个时钟更新一次, 则 Accuracy 参数将设置为 4,因为寄存器需要以时钟计时周期单位表示时钟寄存器的准确性。

对于位置寄存器, Accuracy 参数表示位置寄存器的准确性(以字节为单位)。 例如,2 声道 16 位 PCM 流的音频帧大小为 4 个字节。 如果位置寄存器 () 样本时钟每秒计时周期一次的帧大小递增 2 倍,则精度值为 8 字节。 如果位置寄存器 () 样本时钟的第四个刻度递增一次帧大小四倍,则精度值为 16 字节,依依类图。

要求

要求
最低受支持的客户端 在 Windows Vista 和更高版本的 Windows 操作系统中可用。
标头 ksmedia.h

另请参阅

KSPROPERTY_RTAUDIO_CLOCKREGISTER

KSPROPERTY_RTAUDIO_POSITIONREGISTER

KSRTAUDIO_HWREGISTER_PROPERTY