Storport イベント ログ拡張
他の多くの種類のドライバーと同様に、Storport ミニポート ドライバーは、接続されているストレージ デバイスの状態を管理者に知らせるために、システム イベント ログにエントリを作成する必要があります。 これらのイベント ログ エントリは、多くの場合、デバイス関連のエラーに対応して作成されます。 イベントは、テレメトリ、デバッグ、および最適化のためにログに記録することもできます。
Windows カーネル自体は、イベント ログ エントリを作成するための柔軟なインターフェイスを提供しますが、Storport ミニポート モデルでは、ミニポート ドライバーがそのインターフェイスに直接アクセスすることはできません。 代わりに、Storport はカーネルのシステム イベント ログ機能のラッパーを提供し、ミニポート ドライバーはラッパーを使用してイベント ログ エントリを作成します。
具体的には、Storport には次のイベント ログ ルーチンが用意されています。
- StorPortLogTelemetryEx を使用すると、ミニポートは、ミニポートによってカスタマイズされたデータ (Windows 10 バージョン 1903 以降) を使用して、トレース ログメジャーまたはテレメトリ イベントをログに記録できます。
- StorPortEtwChannelEvent2、StorPortEtwChannelEvent4、StorPortEtwChannelEvent8 を使用すると、ミニポートは ETW イベントをストレージ トレース チャネル (Windows 10 バージョン 1809 以降) に発行できます。
- StorPortLogSystemEvent を使用すると、ミニポートはイベント ログ エントリ (Windows 7 以降) を作成できます。
Storport は、"Microsoft-Windows-Storage-Storport" プロバイダー名でイベントをログに記録します。 エラーは Operational チャネルに、デバッグ/分析は診断 Diagnose (Analytic および Debug) チャネルに記録されます。 Event Viewer アプリケーションを使用する場合は、最初に Diagnose チャネルを有効にして表示する必要があります (有効にするには、[分析の表示]> と [デバッグ ログ] をクリックします)。
上記の関数は、Storport 拡張関数として実装され、既存の拡張関数インターフェイスを使用してミニポート ドライバーで使用できます。 拡張関数インターフェイスを使用すると、新しい関数への直接ダイナミック リンク参照を回避できます。 この直接参照を回避することで、新しい関数を使用するミニポート ドライバーは、関数をサポートしていないオペレーティング システムで正しく読み込まれます。サポートされていない場合、関数は STOR_STATUS_NOT_IMPLEMENTED を返します。 これにより、ベンダーは、サポートされている新しいイベント ログ機能を利用して、複数の OS リリースで実行される 1 つのミニポート ドライバーを作成できます。
注: Windows 7 より前のバージョンの Storport では、Storport のシステム イベント ログ インターフェイス である StorPortLogError によって、ミニポート ドライバーにカーネルのシステム イベント ログ機能のごく一部へのアクセス権しか付与されず、ミニポート イベント ログ エントリの有用性に影響します。
Windows イベントに関する一般的な情報については、Windows イベントを参照してください。