PodCastをダウンロードしているとロックアップ、完全解決しました。

先に書いたHKEY_LOCAL_MACHINE\Drivers\BuiltIn\SDBusDriver\ThreadPriorityを小さく設定することで確かに効果があるのですが、長時間ダウンロードするとまだロックアップすることがありました。

最近ではハードウエアを疑い始め、いじりまわす用にWS003SHをもう一台購入しました。熱による誤動作ではないかと疑い、分解してケースの無い基板むき出しの状態で、むりやり電池を洗濯ばさみで固定して通電してみたりしましたが、状況に変化ありませんでした。

この問題に向き合って、かれこれ7ヶ月くらいになりますがやっと解決策を見出しましたので後進の方のために書きとめて置きます。

HKEY_LOCAL_MACHINE\Drivers\SDCARD\ClientDrivers\Class\SDMemory_ClassキーにSingleBlockWritesという名前でDWORD値1を作成する。このレジストリ値の存在を知ったのはここです。

この回避策を自分なりに想像すると以下のような説明になります。SDカードのプロトコルにはシングルブロック操作をするコマンドとマルチブロック操作をするコマンドがあります。プロセッサの中のメモリカードコントローラが悪いのかドライバが悪いのかははっきりしませんがとにかくマルチブロックライト動作をすると具合が悪いんじゃないかと思います。以前書いたSDカードドライバの優先順位を上げる変更を行うと無線LAN側から渡ってくるデータをすばやく受け取れるようになり、その結果バッファの溜りがすぐ消化されるために、マルチブロックライトをするする機会が減り、その結果調子が良くなったのじゃないかと考えています。いっそのことマルチブロックライトをしないように設定してしまおうというのが私の考えです。

私はminiSDからリードするときにも過去に一度だけロックアップしたことがあったので、BlockTransferSize も64から32に減らしました。これをあまり小さくしすぎるとリードの時のブロック長が短くなって読み出し速度が落ちて動画を再生するときにちょっと辛くなります。

まとめると、miniSDに大きなファイルを無線LAN経由でダウンロードするとロックアップする問題の回避策として私が行っているのは以下の変更です。
HKEY_LOCAL_MACHINE\Drivers\SDCARD\ClientDrivers\Class\SDMemory_ClassにSingleBlockWrites =1を追加する。
HKEY_LOCAL_MACHINE\Drivers\SDCARD\ClientDrivers\Class\SDMemory_ClassのBlockTransferSizeを32(10進)にする。