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として指定されます。 また、有効な周期性範囲は、1,0000 HNSTIME 単位境界 (50000、60000、70000、80000、90000 など) でも 50000 ~ 90000 (5 ~ 9 ミリ秒) です。
上記の INF ファイルからの抜粋では、カスタマイズのために次のREG_BINARY データが提供されています。
8 ミリ秒の周期性は、HNSTIME 単位で 80000 として表されます。 この値は 16 進数表記で0x013880として表されます。 この 16 進数の値が一度に 4 ビット (ニブル) で書き込まれ、最初に下位ビットが書き込まれると、結果は 80,38,01 になります。 これは、REG_BINARYデータ型として提供される値です。
周期性は、VT_BLOBデータ型として指定されます。 これは、10 進値 65 で表されます。 16 進数形式 65 は値 41 で表され、上記の INF ファイルの抜粋は、最初の値が 41 のREG_BINARYデータ シーケンスを示しています。