イベントビューアーで disk エラーを抽出

MS-Windows 上で HDD や SSD のエラーをいちはやく検出するには、SMART モニターを見るやり方もあるが、それだけでは不十分。

イベントビューアーで Disk エラーや Atapi エラーを確認して実際のエラーを把握しよう。

# 想定


一般ユーザが日常的にチェックできるように、呼び出しを簡単に & 表示を GUI で。
↓
希望のデータをイベントビューアで表示する方法を考える。




# 環境

- MS-Windows 10 Pro 20H2



# イベントビューアはアレ

イベントビューアの 「Windows  ログ」-「システム」で、 disk を探す。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/d6b1b202-a4f4-6f79-520b-e5f1e5c4a6eb.png)

disk エラーを遡りたいのだけれど、イベントビューアーのソートやフィルター、検索の使い心地はサイテーだ。

「カスタムビュー」-「管理イベント」で「情報」などを除外した情報は出てくるが、ディスク関連エラーを抽出してどうにかするにはどうしたらいいかな？

# ワンライナーでさくっと

## 最初の1回目

「Windows キー」+ 「R」 でファイル名を指定して実行

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/3e7ba930-d642-e5ff-5605-0c0502e2815c.png)


```

eventvwr.exe /f:"<QueryList><Query Id='0' Path='System'><Select Path='System'>*[System[Provider[@Name='atapi' or @Name='Microsoft-Windows-ATAPort' or @Name='disk' or @Name='Microsoft-Windows-Disk']]]</Select></Query></QueryList>\"

```

上記ワンライナーを張り付けて「OK」

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/e3a01851-4a70-3a64-9182-07c5bb26a75b.png)

「コマンドラインからのビュー」はイベントビューアに保存されるので、名前を「ディスクエラービュー」などと変更しておくと今後の利用に便利です。

## 2回目以降

「Windows キー」+ 「R」 でファイル名を指定して実行

「eventvwr.exe」と入力して「OK」で確認できます。

------

# 以下はおまけです

上記を設定するための調査などの説明。



## disk エラーイベントを調べる

ひとつのイベントの内容を見てみると・・・

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/acd0f5c7-6037-6873-fbef-b35b565de48b.png)

ということで、ソースが disk となっている。


このようなイベントを抽出して表示するために・・・


# カスタムビューをつくる

「カスタムビューの作成」で「ソースごと」を選び、「disk」にチェックをつける。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/a6311429-477b-e547-1da2-008d7754739e.png)

同様に、関連しそうな「Disk」「atapi」「ATAPort」もチェックをつける

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/d48bb368-62be-e8ff-3b87-1ddab8d22393.png)

フィルタ設定は以下の通り。これをインポートしても良い。


```

<QueryList>
  <Query Id="0" Path="Microsoft-Windows-ATAPort/General">
    <Select Path="Microsoft-Windows-ATAPort/General">*[System[Provider[@Name='atapi' or @Name='Microsoft-Windows-ATAPort' or @Name='disk' or @Name='Microsoft-Windows-Disk'] and (Level=1  or Level=2 or Level=3)]]</Select>
    <Select Path="Microsoft-Windows-ATAPort/SATA-LPM">*[System[Provider[@Name='atapi' or @Name='Microsoft-Windows-ATAPort' or @Name='disk' or @Name='Microsoft-Windows-Disk'] and (Level=1  or Level=2 or Level=3)]]</Select>
    <Select Path="Microsoft-Windows-Disk/Operational">*[System[Provider[@Name='atapi' or @Name='Microsoft-Windows-ATAPort' or @Name='disk' or @Name='Microsoft-Windows-Disk'] and (Level=1  or Level=2 or Level=3)]]</Select>
    <Select Path="Microsoft-Windows-Storage-ATAPort/Admin">*[System[Provider[@Name='atapi' or @Name='Microsoft-Windows-ATAPort' or @Name='disk' or @Name='Microsoft-Windows-Disk'] and (Level=1  or Level=2 or Level=3)]]</Select>
    <Select Path="Microsoft-Windows-Storage-ATAPort/Analytic">*[System[Provider[@Name='atapi' or @Name='Microsoft-Windows-ATAPort' or @Name='disk' or @Name='Microsoft-Windows-Disk'] and (Level=1  or Level=2 or Level=3)]]</Select>
    <Select Path="Microsoft-Windows-Storage-ATAPort/Debug">*[System[Provider[@Name='atapi' or @Name='Microsoft-Windows-ATAPort' or @Name='disk' or @Name='Microsoft-Windows-Disk'] and (Level=1  or Level=2 or Level=3)]]</Select>
    <Select Path="Microsoft-Windows-Storage-ATAPort/Diagnose">*[System[Provider[@Name='atapi' or @Name='Microsoft-Windows-ATAPort' or @Name='disk' or @Name='Microsoft-Windows-Disk'] and (Level=1  or Level=2 or Level=3)]]</Select>
    <Select Path="Microsoft-Windows-Storage-ATAPort/Operational">*[System[Provider[@Name='atapi' or @Name='Microsoft-Windows-ATAPort' or @Name='disk' or @Name='Microsoft-Windows-Disk'] and (Level=1  or Level=2 or Level=3)]]</Select>
    <Select Path="Microsoft-Windows-Storage-Disk/Admin">*[System[Provider[@Name='atapi' or @Name='Microsoft-Windows-ATAPort' or @Name='disk' or @Name='Microsoft-Windows-Disk'] and (Level=1  or Level=2 or Level=3)]]</Select>
    <Select Path="Microsoft-Windows-Storage-Disk/Analytic">*[System[Provider[@Name='atapi' or @Name='Microsoft-Windows-ATAPort' or @Name='disk' or @Name='Microsoft-Windows-Disk'] and (Level=1  or Level=2 or Level=3)]]</Select>
    <Select Path="Microsoft-Windows-Storage-Disk/Debug">*[System[Provider[@Name='atapi' or @Name='Microsoft-Windows-ATAPort' or @Name='disk' or @Name='Microsoft-Windows-Disk'] and (Level=1  or Level=2 or Level=3)]]</Select>
    <Select Path="Microsoft-Windows-Storage-Disk/Diagnose">*[System[Provider[@Name='atapi' or @Name='Microsoft-Windows-ATAPort' or @Name='disk' or @Name='Microsoft-Windows-Disk'] and (Level=1  or Level=2 or Level=3)]]</Select>
    <Select Path="Microsoft-Windows-Storage-Disk/Operational">*[System[Provider[@Name='atapi' or @Name='Microsoft-Windows-ATAPort' or @Name='disk' or @Name='Microsoft-Windows-Disk'] and (Level=1  or Level=2 or Level=3)]]</Select>
  </Query>
</QueryList>

```

このビューを設定すると、今後もこのビューを使用することができる。しかしながらこの設定を行うのは一般ユーザには敷居が高いかな。

# イベントの xml データ

さきほどのイベントの詳細を見てみると・・・

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/b0b1d92c-69c9-6b6a-a935-6a0fcc815648.png)

xml 形式で見てみると・・・

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/f389ca0a-dc74-ae86-63da-747022fbbae6.png)


ということで、さきほどのクエリをもうちょっと整理して

```

<QueryList>
  <Query Id="0" Path="System">
    <Select Path="System">*[System[Provider[@Name='atapi' or @Name='Microsoft-Windows-ATAPort' or @Name='disk' or @Name='Microsoft-Windows-Disk']]]</Select>
  </Query>
</QueryList>
```

これをワンライナーにした。