UsePositionLock 登錄值會變更 PortCls 序列化其 I/O 的方式。 如果您的音訊驅動程式因 portcls 用於序列化的全域裝置鎖定而發生故障,啟用此設定可能會有所幫助。 請注意,當啟用 UsePositionLock 時,由音訊驅動程式決定是否在下列回呼與其他屬性回呼之間套用任何序列化(如果需要)。 預設情況下不會啟用此旗標。 開啟之前,請務必先檢查驅動程式,以瞭解驅動程式回呼之間是否有任何競爭條件。
使用下列 INF 設定來啟用此行為。
[MyAudioDevice.AddReg]
HKR, DispatchSettings, UsePositionLock, 3, 01, 00, 00, 00
當此值設定為 1 或更高時,portcls 會使用串流位置鎖定來序列化下列回呼。 如果不存在或設定為零,預設行為是使用全域裝置鎖定。 第一次新增裝置時會讀取此值。
此 INF 設定會儲存在登錄中的裝置實例下,其路徑包含 {4d36e96c-e325-11ce-bfc1-08002be10318} 的媒體 GUID。
此 INF 設定會建立登錄值,其中包含 {4d36e96c-e325-11ce-bfc1-08002be10318} 的媒體 GUID,其中包含音訊裝置的實例。
UsePositionLock 設定僅支援 WaveRT 和拓撲篩選。 Portcls 會在裝置新增時讀取此登錄值,且設定會持續存在,直到移除功能裝置物件 (FDO) 為止。
如果 portcls 偵測到此旗標已開啟,則不會使用全域裝置鎖定序列化下列屬性。
{KSPROPSETID_RtAudio, KSPROPERTY_RTAUDIO_SETWRITEPACKET}
{KSPROPSETID_RtAudio, KSPROPERTY_RTAUDIO_PRESENTATION_POSITION}
這表示以下小型埠的回呼不會與其他屬性請求(包括狀態設定請求)一起序列化。