PKEY_AudioEngine_OEMPeriod

Windows 音频引擎以预先确定的间隔运行,这些间隔称为音频引擎的周期。 在 Windows 7 及更高版本的 Windows 中,音频引擎默认情况下以 10 毫秒周期运行。 在 Windows 7 中,可以使用 INF 文件和新的注册表项 PKEY_AudioEngine_OEMPeriod,自定义音频设备驱动程序的周期。 这是按终结点的设置。

来自 INF 文件的以下摘录显示了如何使用 INF AddReg 指令自定义音频设备驱动程序的周期。

[Version]
Signature="$Windows NT$"
Class=MEDIA
ClassGuid={4d36e96c-e325-11ce-bfc1-08002be10318}
Provider=%ExampleProvider%
CatalogFile=ExampleCatalog.cat
PnpLockdown=1

...

[USBAudio]
Include=ks.inf, wdmaudio.inf, wdma_usb.inf
Needs=KS.Registration, WDMAUDIO.Registration, USBAudio.CopyList, USBAudioOEM.AddReg

[USBAudio.Interfaces]
AddInterface=%KSCATEGORY_AUDIO%,"GLOBAL",USBAudio.Interface
AddInterface=%KSCATEGORY_RENDER%,"GLOBAL",USBAudio.Interface

[USBAudio.Interface]
AddReg=USBAudio.Interface.AddReg, OEMSettingsOverride.AddReg
...
;;
;; All EP\\0 entries in the same grouping
;;
;; Set default periodicity to 8ms
;;
;; 0x013880 == 80000 (HNSTIME) == 8ms
;;
[OEMSettingsOverride.AddReg]
HKR,"EP\\0", %PKEY_AudioEndpoint_Association%,,%KSNODETYPE_ANY%
HKR,"EP\\0", %PKEY_AudioEngine_OEMPeriod%, %REG_BINARY%, 41,00,63,00,08,00,00,00,80,38,01,00,00,00,00,00

[Strings]
ExampleProvider = "Example Provider"
PKEY_AudioEndpoint_Association = "{1DA5D803-D492-4EDD-8C23-E0C0FFEE7F0E},2"
PKEY_AudioEngine_OEMPeriod = "{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},6"
REG_BINARY          = "0x00000001"

其中将周期指定为 VT_BLOB。 甚至在 10000 HNSTIME 单位边界(例如 50000、60000、70000、80000 或 90000),有效周期范围也为 50000-90000(5-9 毫秒)。

在来自 INF 文件的上述摘录中,提供了以下 REG_BINARY 数据供自定义:

8 毫秒的周期在采用 HNSTIME 单位时表示为 80000。 在十六进制表示法中,此值表示为 0x013880。 当此十六进制值一次写入四位(小数位),且先写入最低有效位时,结果为 80,38,01。 这是作为 REG_BINARY 数据类型提供的值。

周期被指定为 VT_BLOB 数据类型。 这由十进制值 65 表示。 采用十六进制格式时,65 表示为值 41,前面的 INF 文件摘录显示第一个值为 41 的 REG_BINARY 数据序列。