|
こんばんは。
この問題、僕の環境でも発生したのでCrystalDiskInfo 4 Dev6aのソースを使って軽くデバッグしてみました。
僕の環境で発生していたのは、ストレージのデバイス名が短いときに発生するバグのようです。
OCZのVertex30GB版(デバイス名が"OCZ-VERTEX")のみドライブレターが表示されていませんでした。
対策としては、AtaSmart.cppの1204行目あたりに
model.Replace(_T(" SATA Disk Device"), _T(""));
を付け加えると直りました。
バグの詳細は以下の通りです。
CAtaSmart::Init関数内において、Vertexに対応するmodel変数の内容が"OCZ-VERT EX SATA Disk Device"になるので、cmp1変数の内容が"OCZ-VERTEXSATADi"になってしまいます。
一方、cmp2変数は"OCZ-VERTEX"なので、1229行目のif文がfalseとなり、1247行目でvars.RemoveAt(index)が呼ばれてvarsからVertexが除去されてしまいます。
この状態でドライブレターの列挙処理に入るので、Vertexを除いた残りのストレージにドライブレターが表示されます。
その後、1542行目で再度GetDiskInfo関数が呼ばれ、Vertexが復活しますが、ドライブレターは割り当てられていない状態になります。
以上、ご報告でした。
|
|