現象
次のシナリオを検討してください。
シナリオ 1
-
Windows 8.1 または Windows Server 2012 R2 を実行しているコンピューターに IOCTL_SCSI_PASS_THROUGH デバイスの制御コードを使用するアプリケーションをインストールするとします。
-
アプリケーションは、非揮発性メモリ (NVMe) インターフェイスに SCSI パススルー機構を使用して、読み取りまたは書き込みのコマンドを送信します。Windows の NVMe インタ フェースのコンポーネントは、Stornvme.sys です。
-
バッファー サイズは、セクター サイズの倍数ではありません。
このシナリオでは、データの破損が発生します。
シナリオ 2
Windows 8.1 ベースまたは Windows Server 2012 R2 ベースのコンピューターでは、NVMe デバイスをインストールすることを想定しています。NVMe デバイスは、非同期イベントを使用して正常性の状態の問題や自己監視、分析、およびレポート作成技術 (スマート) の状態に関する問題を報告する多くの非同期イベントが予期せずに使用されます。
原因
シナリオ 1
この問題は、NVMe デバイスおよび StorNVMe インタ フェースのサポートのみのデータの物理的な領域のページ (PRP) の一覧が表示の操作を転送するために発生します。
Windows では、データ転送操作を実行すると、デバイスはメモリ アドレスと転送されるセクター数を受け取ります。したがって、データのバッファー サイズの倍数ではありませんとセクター サイズでは、読み書きコマンドが正常に機能しません。具体的には、コマンドにより、データ バッファーのサイズより多くのデータを転送するデバイスと書き込みのコマンドにより、データ バッファー内のランダムなカーネル メモリのデータをディスクに書き込むデバイスを参照してください。
注: スキャッター/ギャザ バッファーの長さをバイト単位であることの一覧が表示をサポートするその他のデバイス プロトコルとは異なり、PRP のリストのデータ転送は転送するセクターの数のみを認識します。したがって、StorNVMe は、データ転送サイズをセクター サイズに変換します。
シナリオ 2
この問題は、Stornvme.sys ドライバーは、NVMe デバイスは、スマートの非同期イベントを生成したときにレポートをクリアするために発生します。したがって、デバイスは、コント ローラーの正常性状態が変化しない場合は、非同期イベントを送信するループです。
解決策
更新プログラムの情報
この問題を解決するのに 2887595 の更新プログラム ロールアップをインストールします。この更新ロールアップ パッケージを入手する方法の詳細については、次の文書番号をクリックしてください。
2887595 Windows RT 8.1、Windows 8.1 では、Windows Server 2012 R2 更新プログラムのロールアップ: 2013年 11 月
状況
マイクロソフトは、この問題を「対象製品」セクションに記載されているマイクロソフト製品の問題として認識しています。
詳細
ソフトウェア更新プログラムの用語の詳細については、次の文書番号をクリックして、マイクロソフト サポート技術情報の資料を参照してください。
824684マイクロソフトのソフトウェア更新プログラムを記述するために使用される一般的な用語説明