■85360 / inTopicNo.9) |
Re[5]: CPUタイプを判別する方法 |
□投稿者/ 魔界の仮面弁士 (1424回)-(2017/10/13(Fri) 09:43:14)
|
2017/10/13(Fri) 10:04:11 編集(投稿者)
■No85353 (餓狼 さん) に返信 > CorFlags > というのはどのようにして読み込めば良いのですか?
CorFlags.exe ツールを起動して、標準出力を取り出してみるのは如何でしょうか。
直接的に読み取りたいというのであれば、searchcode で検索したみたところ、 下記の C# コードが見つかりましたので、コンパイルしてから参照設定で使うか、 VB に翻訳して取り込むかしてみてください。 https://searchcode.com/codesearch/view/27987508/
なお、VB から呼び出す場合は、上記を参照設定に加えた上でこんな感じ。
Imports ApiChange.Api.Introspection Module Module1 Sub Main(args$()) For Each f In args Console.WriteLine(f)
Dim meta = CorFlagsReader.ReadAssemblyMetadata(f) If meta Is Nothing Then Continue For Console.WriteLine("IsPureIL={0}", meta.IsPureIL) Console.WriteLine("IsSigned={0}", meta.IsSigned) Console.WriteLine("CLR={0}.{1}", meta.MajorRuntimeVersion, meta.MinorRuntimeVersion) Console.WriteLine("ProcessorArchitecture={0}", meta.ProcessorArchitecture) Console.WriteLine() Next Console.Write("Hit Enter Key...") Console.ReadKey() End Sub End Module
今回紹介した、CorFlagsReader サンプルには、32bit優先フラグの有無を見るための プロパティは用意されていません。とはいえ、判定に必要なビットフラグは No85317 で紹介済みですから、書き換えるのはそう難しく無いでしょう。
--- 追記:DLL 改修案 --- public bool IsPreferred32bit { get { return (corflags & CorFlags.F32BitsPreferred) == CorFlags.F32BitsPreferred; } }
[Flags] private enum CorFlags : uint { F32BitsRequired = 2, ILOnly = 1, StrongNameSigned = 8, TrackDebugData = 0x10000, F32BitsPreferred = 0x20000, // ★追加 }
|
|