[小ネタ]「ハードウェア変更のスキャン」をDevconコマンドでやってみた。#Surface Dock 認識しない

Surface ドックの再認識をWindows Device Console (Devcon.exe)のrescanコマンド(ハードウェア変更のスキャン)でやってみました。
2018.10.12

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

福岡オフィスの梶原です。

自分は業務ではWindows派なので、Surface Laptopを使用しているのですが
Surface Laptopって、質感とかデザインとかほんと最高です。ただ。
USBポートが1個しかないんですよね、1個しかないんですよね。

ということで、Surface ドックの登場です

ドッキング ステーションを使用すると、Surface が完全なデスクトップ PC に変身します。ドッキング ステーションでは、Surface をフルサイズのモニター、イーサネット、外部スピーカーなどに接続すると共に、Surface への充電も行うことができます。

https://support.microsoft.com/ja-jp/help/4023451/surface-using-surface-dock-and-surface-docking-stations

間違ってないです。電源をとると同時に、外付けキーボード、マウス、ディスプレイ、有線LANなどなど
1タッチで、つくのでもう、手ばなせません、惚れてます。

が!、こいつ安定してないです。(2018/10/12現在)

今まで何回か、ファームアップデートが実施されており、そのたびに良くなっていると思うんですが(これはまちがいない(頑張って中の人!)
やっぱりマウスが認識しなくなったり、ディスプレイが写らなかったりする不具合があります。
なんて気分屋なんでしょう。可愛いやつですね。

まぁ、惚れてなければ、あきらめもつくのですが、そこは
一応エンジニアの端くれなので、自分でなんとかしてみます。

デバイスを再認識させてみる

さて、前置きが長かったですが、本題にはいります。
上記のようなSurface ドックに嫌われている認識しない場合、

一番手っ取り早いのは抜き差しです。

ただ、これがまた瞬間の抜き差しだと微妙にだめです。
1秒くらい間を開ける必要があります。
WifiをON/OFFをパパっとやっても認識しなかったりするのと一緒ですね。
外れたことを認識、ついたことを認識させることが必要です。
はい。めんどくさいです。

ということで、どうにかならないかってことなんですが、
これまた、めんどくさい手段があります。

「コンピュータの管理」→「デバイスマネージャー」→「操作」→「ハードウェア変更のスキャン」 を実施します。

なにも変更してないのにハードウェア変更のスキャンをしなきゃいけない。
まぁ、付き合いってだいたいそんなもんですね。
こちらを実施すれば、一応自分の環境では、認識しないデバイスなどは再認識してくれます。

デバイスの再スキャンをコマンドラインで

さて、本当の本題にはいります、この作業が年に1回とかならいいんですが、
機嫌がわるくなる時は、日に何回か無視されます。
そこで、なんとか少ない動きで「ハードウェア変更のスキャン」ができないか?
ってことで、世界に向かって叫んでみました。

コマンドで「ハードウェア変更のスキャン」ありました。
元ネタはこちら
http://www.atmarkit.co.jp/ait/articles/1804/03/news008.html

すばらです。

devcon.exeを使って、デバイスの再スキャン

さて、サクサク行きます。
Windows Device Console (Devcon.exe)が必要なので
https://docs.microsoft.com/en-us/windows-hardware/drivers/devtest/devcon

の手順にそって
https://docs.microsoft.com/ja-jp/windows-hardware/drivers/download-the-wdk

手順 1: Visual Studio 2017 をインストールします。

(自分はVisual Studio Community 2017 をすでにインストールしていたので Skipしました。(デバイス開発しなければ不要だと思ってます)

手順 2: インストール WDK

Windows 10、バージョン 1809
wdksetup.exeダウンロードして、インストールします。

インストールパスの確認

インストールが正常に行っていれば
%WindowsSdkDir%\tools\x64\devcon.exe
OR
%WindowsSdkDir%\tools\x86\devcon.exe
にインストールされているかと思います。
自分のパスは
"C:\Program Files (x86)\Windows Kits\10\Tools\x64\devcon.exe"
となってます。

再スキャン用BATファイルの作成

あとは、こちらを使用してデバイスの再スキャンを実施するBATファイルを作成し、devcon-rescan.bat として保存します

devcon-rescan.bat

"C:\Program Files (x86)\Windows Kits\10\Tools\x64\devcon.exe" rescan

あとは、これを管理者権限で実行すればいいのですが ちょっとだけ、一工夫

BATファイルのショートカット作成

上記のバッチのショートカットを作成して
「詳細設定」を選択し「管理者権限で実行」にチェックをいれておけば
上記のショートカットをクリックでデバイスの再スキャンが実施されます。
(設定に応じて、管理者権限での実行の確認画面が表示されるので押下ください)
あと、このショートカットにショートカットキーを割り当てれば
キーボードから手を放さずにデバイスの再スキャンが実施できます。

まとめ

時々、機嫌が悪くなることもあるけれど、
Surface ドックは便利です。
もう少しすれば、ファームのアップデートできっときっと良くなると思います。
またSurface ドックに限らず、見失いがちなデバイスを持たれる方の役に立てば幸いです。

また、Devconでできることは再スキャンだけではないので、
デバイスマネージャーでできることを自動化したいなーとか思っている人は 以下のDevconのコマンドで見つけることができるかもしれません。

https://docs.microsoft.com/en-us/windows-hardware/drivers/devtest/devcon-general-commands