水底

ScalaとかC#とかk8sとか

VoicemeeterでUSBデバイス接続時の挙動を改善する

ふと思い立って前回のUSBデバイス版です。共通部分は省略。調べるのが面倒だったので使うIDとか一部適当です。

  1. USB接続イベントログを有効化
    • Event Viewerを開き,Applications and Services Logs > Microsoft > Windows > DriverFrameworks > UserMode > Operationalコンテキストメニューから Enable Log を選択
      • デフォルトでは無効になっているはず
  2. 対象のUSBデバイスのアドレスを確認
    • USB接続イベントログを有効化した状態で実際に接続すると Event ID=2100 (ID違うかも)としてログが吐かれるので,Event Properties > DetailsUserData > InstanceIdLifetimeId かも。適当)をメモ
  3. Task Schedulerの設定
    • Task Schedulerを開き,てきとうなディレクトリで Create Task
      • お作法をよくわかっていないが,Task Scheduler Library/Users を作っておいた
    • 以下を設定
      • General > Name: てきとう
      • Trigger > New: Begin the task=On an event
        • Settings > Custom > New Event FilterXMLタブから Edit query manually を有効化して以下を入力
          • 対象のUSBデバイスのIDはイベントログからメモったもの
            • & が含まれる場合はエスケープ (&) が必要
          • <QueryList>
                <Query Id="0" Path="Microsoft-Windows-DriverFrameworks-UserMode/Operational">
                    <Select Path="Microsoft-Windows-DriverFrameworks-UserMode/Operational">
                        *[System[Provider[@Name='Microsoft-Windows-DriverFrameworks-UserMode'] and EventID=2100]] and *[UserData[UMDFHostDeviceRequest[InstanceId='【対象のUSBデバイスのID】']]]
                    </Select>
                </Query>
            </QueryList>
            
      • Actions > New: Action=Start a program Program/script=【作成したVBスクリプトのパス】
      • その他の設定はデフォルトでok