UsePositionLock
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_GETREADPACKET}
{KSPROPSETID_RtAudio, KSPROPERTY_RTAUDIO_SETWRITEPACKET}
{KSPROPSETID_RtAudio, KSPROPERTY_RTAUDIO_PRESENTATION_POSITION}
{KSPROPSETID_RtAudio, KSPROPERTY_RTAUDIO_PACKETCOUNT}
{KSPROPSETID_Audio,KSPROPERTY_AUDIO_POSITION}
{KSPROPSETID_Audio, KSPROPERTY_AUDIO_POSITIONEX}
つまり、次のミニポートのコールバックは、他のプロパティ要求 (set-state 要求を含む) でシリアル化されません。