水底

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-Bluetooth-Policy/Operational">
                      <Select Path="Microsoft-Windows-Bluetooth-Policy/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