狀況
請考慮下列案例。
狀況1
-
您安裝的應用程式正在執行 Windows 8.1 或 Windows Server 2012 R2 的電腦使用的 IOCTL_SCSI_PASS_THROUGH 裝置控制碼。
-
應用程式會將讀取或寫入指令傳送到非靜態記憶體 Express (NVMe) 的介面使用 SCSI 傳遞機制。NVMe 介面,在 Windows 中的元件是 Stornvme.sys。
-
緩衝區大小不是磁區大小的倍數。
在這個案例中,就會發生資料損毀。
狀況2
假設您在 Windows 8.1 或 Windows Server 2012 R2 為基礎的電腦上安裝 NVMe 裝置。當 NVMe 裝置報告健康狀態問題或自我監視、 分析和報告技術系統 (SMART) 狀態問題,藉由使用非同步事件時,許多的非同步事件,將用在意外。
原因
狀況1
之所以發生這個問題,是因為 NVMe 裝置和 StorNVMe 介面支援實體區域頁面 (PRP) 只列出資料傳輸作業。
當 Windows 執行資料傳輸作業時,裝置就會收到記憶體起始位址及傳輸的磁區計數。因此,當資料的緩衝區大小不是的倍數的磁區的大小,讀取和寫入指令無法正確運作。更具體地說,讀取指令會導致裝置傳輸資料的緩衝區大小比更多的資料和寫入命令導致裝置寫入磁碟以隨機的核心記憶體資料緩衝區中的資料。
注意不支援散佈-收集式列出具有緩衝區長度,以位元組為單位的其他裝置通訊協定,像資料傳輸的 PRP 清單只知道要傳輸的磁區計數。因此,StorNVMe 會將資料傳輸大小將磁區大小。
狀況2
Stornvme.sys 驅動程式清除的報表,當 NVMe 裝置產生智慧的非同步事件時,就會發生這個問題。因此,裝置是在迴圈中的傳送非同步事件,如果控制站的健康狀態不會變更。
解決方案
更新資訊
若要解決這個問題,請安裝更新彙總套件 2887595。如需有關如何取得此更新彙總套件的詳細資訊,請按一下下面的文章編號,移至「Microsoft 知識庫」中的文件:
2887595 Windows RT 8.1、 Windows 8.1 和 Windows Server 2012 R2 更新彙總套件︰ 年 11 月 2013年
狀態
Microsoft 已確認這是<套用>一節所列出的 Microsoft 產品的問題。
更多的資訊
如需有關軟體更新術語的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
用來描述 Microsoft 軟體更新標準術語的編號 824684描述