2021.03.23 14:33:50.492 array out of range in 'SMBIOS.mqh' (170,8)
fxsaber:
異なるフィールド数を出しているようです。余白のある配列を作り、ずれるかどうか試してみた。SMBIOS.mqhを再掲載しました。
追記:先ほども言いましたが、1台のパソコンでのテストのみです。他へのアクセスはできません。だから、謝らないでください。
ファイル:
SMBIOS.mqh
5 kb
Edgar Akhmadeev:
きれいに仕上げる方法はこちら
template <typename T> T StringToInteger2( const string Str ) { T Res = 0; // const int Size = MathMin(StringLen(Str), sizeof(T)); const int Size = StringLen(Str); for (int i = 0; i < Size; i++) Res = (Res << 8) + Str[i]; return(Res); } //const uint SMBIOS_signature = 'RSMB'; const uint SMBIOS_signature = StringToInteger2<uint>("RSMB");
Edgar Akhmadeev:
異なるフィールド数を出しているようです。余白のある配列を作り、ずれるかどうか試してみた。SMBIOS.mqhを再掲載しました。
2021.03.23 14:49:24.516 Location in chassis: 2021.03.23 14:49:24.516 array out of range in 'SMBIOS.mqh' (192,24)
fxsaber:
ありがとうございます。美しいが、どこか冗長。実行コード無しで欲しいです。
Win7 x64
うまくいったので、4にボルトで固定する必要があります。
アカウントにログインしていない時は動作しました。
2021.03.23 15:40:24.109 Terminal Windows 7 Service Pack 1 build 7601, Intel Core i3-3220 @ 3.30GHz, 0 / 7 Gb メモリ, 11 / 298 Gb ディスク, IE 11, UAC, GMT+3
FM 0 15:51:26.042 Test_SMBIOS (USDSEK,M1) System Management BIOS Version: 2.7 GF 0 15:51:26.043 Test_SMBIOS (USDSEK,M1) System BIOS Version: 4.6 RM 0 15:51:26.043 Test_SMBIOS (USDSEK,M1) Embedded Controller Firmware Version: 255.255 LJ 0 15:51:26.043 Test_SMBIOS (USDSEK,M1) BIOS Vendor: American Megatrends Inc. QN 0 15:51:26.043 Test_SMBIOS (USDSEK,M1) BIOS Version: V1.6 DI 0 15:51:26.043 Test_SMBIOS (USDSEK,M1) BIOS Release Date: 04/17/2012 RE 0 15:51:26.043 Test_SMBIOS (USDSEK,M1) UUID: {0000-00-00-00-8 c89a5ffbfb6} FL 0 15:51:26.043 Test_SMBIOS (USDSEK,M1) System Manufacturer: MSI DE 0 15:51:26.043 Test_SMBIOS (USDSEK,M1) Product Name: MS-7788 QR 0 15:51:26.043 Test_SMBIOS (USDSEK,M1) Product Version: 1.0 KK 0 15:51:26.043 Test_SMBIOS (USDSEK,M1) Product Serial Number: To be filled by O.E.M. ON 0 15:51:26.043 Test_SMBIOS (USDSEK,M1) SKU Number: To be filled by O.E.M. KH 0 15:51:26.043 Test_SMBIOS (USDSEK,M1) Family: To be filled by O.E.M. FH 0 15:51:26.043 Test_SMBIOS (USDSEK,M1) Mainboard Manufacturer: MSI OL 0 15:51:26.043 Test_SMBIOS (USDSEK,M1) Mainboard Name: H61M-P20 (G3) (MS-7788) ED 0 15:51:26.043 Test_SMBIOS (USDSEK,M1) Mainboard Version: 1.0 KM 0 15:51:26.043 Test_SMBIOS (USDSEK,M1) Mainboard Serial Number: To be filled by O.E.M. EN 0 15:51:26.043 Test_SMBIOS (USDSEK,M1) Asset Tag: To be filled by O.E.M. CI 0 15:51:26.043 Test_SMBIOS (USDSEK,M1) Location in chassis: To be filled by O.E.M. MP 0 15:51:26.043 Test_SMBIOS (USDSEK,M1) {0000-00-00-00-8 c89a5ffbfb6} EH 0 15:51:26.043 Test_SMBIOS (USDSEK,M1) To be filled by O.E.M. IP 0 15:51:26.043 Test_SMBIOS (USDSEK,M1) To be filled by O.E.M.
Edgar Akhmadeev:
もう一つ訂正です。
Vitaly Muzichenko:
Win7 x64
それがすべての出力なのでしょうか?

取引の機会を逃しています。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
SMBIOSからハードウェア情報(マザーボード、プラットフォーム)を読み取るコードを書きました。もちろんWinAPIを使用します。製品とハードウェアの結合に使用できます。私見ですが、マザーボード以外のものにバインドするのは意味がないと思います。ドライブ、ビデオカードは可変です。
SMBIOS.mqhをIncludeに入れる。
SMBIOS.mq5をテストする - スクリプトで。
実際に使用する場合、不要な情報はコメントアウトする/定義しない #define SMBIOS_DEBUG
まだ1台のノートPCとVPSでしかテストしていないので、正しく動作しない場合はコミュニティのチェックとレポートが必要です。hwinfo プログラムとデータを照合する。
1.このコードでは、SMBIOSからのデータが一定の順序で出力されることを前提にしています。そのため、矛盾がある場合は、Motherboard/SMBIOS DMIツリーからBIOS、システム、メインボード、システムエンクロージャタブでhwinfoから完全なテスト出力とスクリーンショットを与えることが望ましいです。そうでないとデバッグが できない。
2.端末のプログラマーから、ここをどうしたらきれいに見えるか、アドバイスが欲しい。