1

Win32 ユーザー モード アプリケーションから WinXP Embedded 32 ビット システムの BIOS のシリアル番号を取得しようとしています (違いがある場合は MFC)。

メンバー「SerialNumber」の「Win32_BIOS」クラスから WMI 経由で取得できるのと同じシリアル番号を取得しようとしています。問題は、WMI がインストールされていない古いシステムで実行する必要があるため、WMI を使用できないことです。

基本的に、この BIOS フィールドにデータがエンコードされた一連のマシンがあるため、ユーザーが変更することはできません。また、この情報をファイルに出力して送信する必要がある場合もあります。

「GetSystemFirmwareTable」を見つけましたが、最小の Win バージョンは WinXP 64 ビットです。WMI は論外であり、直接マッピングされた物理アドレスからそれを読み取るコードは既にありますが、問題は、これらの物理アドレスをマッピングできるようにするために使用するソフトウェアがソフトウェアに関連付けられており、ソフトウェアを実行できないことです。この特定のユース ケース (ライセンス) のこの段階で。

私が見つけた限りでは、ユーザー モード アプリケーションから物理ハードウェア アドレスをマップする他の唯一の方法は、ドライバーの領域を掘り下げ、いくつかのドライバー ライブラリをアプリケーションに統合して、物理アドレスをマップできるようにすることです。

大量の構成なしでアクセスできる、OS が作成するある種のシャドウ コピーはありますか?

4

1 に答える 1

1

Windows XP の NTVDM は物理メモリの最初の MiB をマップするため、最初のメガバイトでSMBIOS blobを見つけ、そこから BIOS シリアル番号を取得できるはずです。詳細については、PDF 仕様を参照してください。

于 2012-03-23T16:11:35.790 に答える