報告板2010/8/22:本掲示板は閲覧専用です。データが一部破損しておりますがご了承ください。3.3.0にて、>SiI3512(非RAIDのBIOS)に接続した2台のうち1台しかSMARTを取得できなかったので、ソースコードを見せていただいたところ、IOCTL_STORAGE_PREDICT_FAILUREが使われていませんでした。WD15EADS>という環境で、IOCTL_STORAGE_PREDICT_FAILUREを試したところ、2台とものSMARTを取得できました。ご提案ありがとうございます。>ATAコマンドをパススルーで送って取得できない場合の代替手段として、IOCTL_STORAGE_PREDICT_FAILUREを使ってみてはどうでしょうか。>>添付ファイルにIOCTL_STORAGE_PREDICT_FAILUREのサンプルを貼っておきます。サンプルまで用意してくださってありがとうございました。前々から目はつけていたのですが、うまく動かなかったというレポートをいくつかみかけたので、対応するメリットはないと判断しておりました。対応は今後も難しそうなので、対応する意義はありそうですね。インストールしていないため、ビルドできませんでした。お手数ですが実行ファイルも添付いただけると助かります。*他の方も試せますし。Temperatureこれらの値が変化したのを確認しました。インストールしていないため、ビルドできませんでした。お手数ですが実行ファイルも添付いただけると助かります。>*他の方も試せますし。すみません、添付しました。0のように、ディスクの番号を半角数字で引数に与えて実行すると、以下のように表示されます。-引用なしパスワード※皆様よかせさんが作成されたサンプルアプリを試す際は、コマンドプロンプトを管理者権限で開いてから実行してください。ユーザー)非管理者権限では動作しません。いう情報はぜひご投稿願います。Temperature>これらの値が変化したのを確認しました。インストールしていないため、ビルドできませんでした。お手数ですが実行ファイルも添付いただけると助かります。>>*他の方も試せますし。>>すみません、添付しました。ご対応ありがとうございました。0>のように、ディスクの番号を半角数字で引数に与えて実行すると、以下のように表示されます。結果が得られないので対応機能などがわからないのが残念なところではありますが。バイトの配列を横取りできないものか。結果が得られないので対応機能などがわからないのが残念なところではありますが。バイトの配列を横取りできないものか。SiliconImageのRAID管理ツールが発行しているDeviceIoControlをモニタして、IDENTIFY_DEVICEを取得するカスタムのControlCodeを調べてみたところ、ちょっと行儀の悪い方法ではありますが、添付ファイルのコードで取得できました。ドライブが1台のみの場合にどうなるのか、3112(3512)以外のチップのときにどうなるのか、RAIDドライバのときにどうなるのかなど、試せていません。SiI以外のドライバにDeviceIoControlしてしまったときの安全性は、各ドライバの堅牢性次第だと思います。-引用なしパスワード▼よかせさん:>SiliconImageのRAID管理ツールが発行しているDeviceIoControlをモニタして、>IDENTIFY_DEVICEを取得するカスタムのControlCodeを調べてみたところ、>ちょっと行儀の悪い方法ではありますが、添付ファイルのコードで取得できました。これは、モニター用フィルタドライバをかまして調べたということでしょうか?>ドライブが1台のみの場合にどうなるのか、3112(3512)以外のチップのときにどうなるのか、RAIDドライバのときにどうなるのかなど、試せていません。SiI以外のドライバにDeviceIoControlしてしまったときの安全性は、各ドライバの堅牢性次第だと思います。新年早々神降臨の予感wでも、出張中なので全然試せないんです。帰宅したら色々試してみますね。-引用なしパスワード▼ひよひよさん:>▼よかせさん:>>SiliconImageのRAID管理ツールが発行しているDeviceIoControlをモニタして、>>IDENTIFY_DEVICEを取得するカスタムのControlCodeを調べてみたところ、>>ちょっと行儀の悪い方法ではありますが、添付ファイルのコードで取得できました。>これは、モニター用フィルタドライバをかまして調べたということでしょうか?Win32APIコールをフックして調べました。OnlineさんのIrpTrackerでやりました。さきほど書き忘れましたが、以下のような感じになりますシリアル番号を隠す機能は付けなかったので、手で消しました。-引用なしパスワード▼よかせさん:>▼ひよひよさん:>>▼よかせさん:>>>SiliconImageのRAID管理ツールが発行しているDeviceIoControlをモニタして、>>>IDENTIFY_DEVICEを取得するカスタムのControlCodeを調べてみたところ、>>>ちょっと行儀の悪い方法ではありますが、添付ファイルのコードで取得できました。>>これは、モニター用フィルタドライバをかまして調べたということでしょうか?>>Win32APIコールをフックして調べました。OnlineさんのIrpTrackerでやりました。教えてくださりありがとうございます。>さきほど書き忘れましたが、以下のような感じになります>シリアル番号を隠す機能は付けなかったので、手で消しました。-引用なしパスワード何処にレスを付けたらよいのか解らなかったのでここに投下します。...............V-----------------------------------------シリアルナンバーは隠さないと駄目なんですかね。0aなぜ貼り付けたかというと、CrystalDiscInfo3.3.0で健康状態と温度が表示されていないので原因が解ればいいなと思ったからであります。X64に最初から入っているAHCIドライバです。書き忘れましたが、http://www.century.co.jp/products/pc/hdd-case/ex35es5.htmlこれをSATA2E2-PCIeに繋いで使ってます。Imageから落としてきた1.0.15.6でも変わらないようです。今、再確認の気力無し。(ぉい蛇足ですがラトックのTemp2k.exeだとマザーボード側とSil3132両方のSMARTが読めているようなのですがAMDのAHCIドライバだとM3A78-T側のSMARTが読めなくなってます。CrystalDiscInfo3.3.0の場合はM3A78-T側がIDEモードなら問題なく読めてます。これもドライバはMS標準なんですけどね。-引用なしパスワードPMPの先も見えたようです。SiI3124のドライバ1.3.21.0で、PMPの先に接続したドライブの09,C1,C2の値の変化を確認できました。C2についてはFANを止めてみて上昇することが確認できています。(後述の値は止めた後のものです)RATOCの温度計測ソフトから取得した値ともざっと比較してみましたが、同じ値が取れているようです。確認した際にわかったのですが、RATOCの温度計測ソフトを動作させた後はソフトと使用しているサービス(TempService)を停止しても以下のエラーで取得できなくなりました。GetLastError=1117この状態はOS再起動で復旧(再度取得できた)しました。以降は取得できた値です。?)では取得出来ませんでした。3132CreateFile(\\.\tempBusSil3132)に失敗しました。-引用なしパスワード▼SMART依存症さん:>PMPの先も見えたようです。SiI3124のドライバ1.3.21.0>で、PMPの先に接続したドライブの09,C1,C2の値の変化を確認できました。>C2についてはFANを止めてみて上昇することが確認できています。(後述の値は止めた後のものです)>RATOCの温度計測ソフトから取得した値ともざっと比較してみましたが、同じ値が取れているようです。おぉ〜、ポートマルチプライヤー配下でも見えるとなると夢が広がりますねぇ。>確認した際にわかったのですが、RATOCの温度計測ソフトを動作させた後は>ソフトと使用しているサービス(TempService)を停止しても以下のエラーで取得できなくなりました。おっと、でもなにやら条件がありそうな感じですねぇ。GetLastError=1117>この状態はOS再起動で復旧(再度取得できた)しました。対応する意味はありそうです。?)では取得出来ませんでした。ご連絡ありがとうございます。ドライバしだいなんでしょうねぇ。”を使ってHDD一台をデータのバックアップ用に使っています。利用して40MBに80MBを追加しています。次回システムを停止させた時にでも複数のHDDを繋げて調べてみようと思います。(単に箱を開けるのが面倒なだけ。)それで、質問が有ります。-引用なしパスワード▼眠り猫さん:>それで、質問が有ります。>http://www.kuroutoshikou.com/modules/display/?iid=95>や>http://www.kuroutoshikou.com/modules/display/?iid=96>など、ドライバなどをダウンロードできるように置いて有りますが>これらをご参考にして、各チップセットに対応できるようになりませんか?う〜ん、今の私の実力では難しいですね。今後外付けカードへの対応を検討したいとは思いますが、あまり期待しないでください。ユーティリティがほとんどない(私は知らない)ことから難易度が高いことは理解いただけるかと。-引用なしパスワード▼ひよひよさん:>う〜ん、今の私の実力では難しいですね。>今後外付けカードへの対応を検討したいとは思いますが、あまり期待しないでください。開発に数年はかかると思いますから、待っています。(SiI3114)RAID5で使用していますが、TestSilGetIdentifyは問題ないようです。型番指定だとうまくいきませんでした。3114CreateFile(\\.\tempBusSil3114)に失敗しました。(SiI3114)>>RAID5で使用していますが、TestSilGetIdentifyは問題ないようです。>ただ、型番指定だとうまくいきませんでした。ご連絡ありがとうございます。情報は取得できないようですね。(SiI3114)>>RAID5で使用していますが、TestSilGetIdentifyは問題ないようです。>ただ、型番指定だとうまくいきませんでした。3114>CreateFile(\\.\tempBusSil3114)に失敗しました。GetLastError=2時間が取れたので久々に弄くるモードです。知ってる範囲でいけそうな所から。確認してから再投稿予定ですが、おそらくSiIの場合、RAID5ドライバの場合「SI3114R51」のような感じになる為だと思います。順番が逆かもしれませんが、R5という記述は付いたハズです。現行仕様だと数字しか受け付けないので引数に3114R5と入れても確認不可です。手元にあるオンボードのSiI3114はBIOSでBASE/RAID切り替え可能なので確認してみます。-引用なしパスワード▼よかせさん:>ドライブが1台のみの場合にどうなるのか、3112(3512)以外のチップのときにどうなるのか、RAIDドライバのときにどうなるのかなど、試せていません。SiI以外のドライバにDeviceIoControlしてしまったときの安全性は、各ドライバの堅牢性次第だと思います。SiI3114/SiI3132にて試しました。SiI3114は素直に4つ表示されましたが、SiI3132に関しては結果ですが、2個目のディスクがそのままでは認識されないという状況になりました。原因としてですが、おそらくPMP対応かと思われます。PMP対応のためにsid.portの0〜14は物理的なポート1個目(Channel0,Target0〜14)用に予約済みのようです。PMPは規格仕様上は15台まで接続出来ます。15Targetの根拠っぽいのはあるんですが、現在確認中。そのために2個目のポートであるCh1,Tg0はsid.port=15となるようです。SiI3132の場合、2ポートなので合計30個の予約枠がありますが、適当にPortをぶん回すと29で止まるようです。現行、SiI3124がPMP対応していて4ポートなので最大0〜59まで読むような感じ(失敗したら抜ける)か機種判定でまわしても良いのかもしれないです。-引用なしパスワード▼HGST使いさん:>手元にあるオンボードのSiI3114はBIOSでBASE/RAID切り替え可能なので確認してみます。末尾に1が付くことに注意と変更することでRAID5ドライバ(Ver1.5.15)で3114と指定した際に表示される事を確認しました。4台ともIDENT取れてます。末尾に1が付くことに注意>と変更することでRAID5ドライバ(Ver1.5.15)で3114と指定した際に表示される事を確認しました。>4台ともIDENT取れてます。やれば色々見えるんですね。経由で取れない場合今のところ見えないんですよねぇ。-引用なしパスワード▼HGST使いさん:>SiI3114は素直に4つ表示されましたが、>SiI3132に関しては結果ですが、2個目のディスクがそのままでは認識されないという状況になりました。>原因としてですが、おそらくPMP対応かと思われます。>PMP対応のためにsid.portの0〜14は物理的なポート1個目(Channel0,Target0〜14)用に予約済みのようです。う、、、すみません、ポートというのは早合点でした。>SiI3132の場合、2ポートなので合計30個の予約枠がありますが、適当にPortをぶん回すと29で止まるようです。>現行、SiI3124がPMP対応していて4ポートなので最大0〜59まで読むような感じ(失敗したら抜ける)か機種判定でまわしても良いのかもしれないです。SiliconImageのツールが接続をツリー状に表示しているのだから、SiliconImageのカスタムのControlCodeの送受信をダンプのどこかに、その表示のために使われた情報が含まれているはず、なんですよね。法則性が何か見えてくるかもしれません。カスタムのControlCodeに限定してDeviceIoControlをダンプするツールを作ったほうが良さそうですね。個人的な理由で不可能なので、すみません。末尾に1が付くことに注意>と変更することでRAID5ドライバ(Ver1.5.15)で3114と指定した際に表示される事を確認しました。>4台ともIDENT取れてます。すみません、あとで直します。ところで、\\.\ScsiXはCreateFileで受付けてもらえるのですが、\Device\Scsi\SI35121などは本来はCreateFileで受付けてもらえません。それをDefineDosDeviceで別名を付けてチェックをすり抜けてますが、ちょっと行儀が悪いような気がしますが、どうなのでしょう。直に3512等で指定できるようにしていたのですが、行儀が悪いのであれば、しかるべき手段で列挙して選択するようにすべきなのかもしれません。同じドライバを使うデバイスが2個以上あったとき、デバイスの名前の末尾の1が2、3と増えて行くと思うのですが、それも考慮しないといけませんね。各社とも、2枚挿しには対応しない旨の制限事項が書かれています。経由で取れない場合今のところ見えないんですよねぇ。STATUSを発行しているようですが、(そして、それは、たぶん、配下のどのPHYSICALDRIVEに対するものであっても、特定の1台に送信されてしまっている・・・みんなGOODを返すので確認できませんが。)RAIDドライバの場合は、パススルーではなく別の口を使っているような気がします。別口があったとしても、たぶんSTATUSを取得する口しか持っていないとは思いますが、ダメもとで調べてみたほうがよさそう。これもダンプのツールで拾いたいと思います。STATUSを発行しているようですが、>(そして、それは、たぶん、配下のどのPHYSICALDRIVEに対するものであっても、特定の1台に送信されてしまっている・・・みんなGOODを返すので確認できませんが。台に送信されるというのは他でもよく聞く謎仕様ですがなんでこんななんでしょうかねぇ。>RAIDドライバの場合は、パススルーではなく別の口を使っているような気がします。>別口があったとしても、たぶんSTATUSを取得する口しか持っていないとは思いますが、ダメもとで調べてみたほうがよさそう。