ホーム › System.Diagnostics.Debug.Extensions › DEBUG_SMBIOS_INFO
DEBUG_SMBIOS_INFO
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| SizeOfStruct | DWORD | 4 | +0 | +0 | この構造体のバイトサイズ。呼び出し前に設定する。 |
| SmbiosMajorVersion | BYTE | 1 | +4 | +4 | SMBIOSのメジャーバージョン番号。 |
| SmbiosMinorVersion | BYTE | 1 | +5 | +5 | SMBIOSのマイナーバージョン番号。 |
| DMIVersion | BYTE | 1 | +6 | +6 | DMIのバージョン番号。 |
| TableSize | DWORD | 4 | +8 | +8 | SMBIOSテーブルのバイトサイズ。 |
| BiosMajorRelease | BYTE | 1 | +12 | +12 | BIOSのメジャーリリース番号。 |
| BiosMinorRelease | BYTE | 1 | +13 | +13 | BIOSのマイナーリリース番号。 |
| FirmwareMajorRelease | BYTE | 1 | +14 | +14 | 組込みコントローラファームウェアのメジャーリリース番号。 |
| FirmwareMinorRelease | BYTE | 1 | +15 | +15 | 組込みコントローラファームウェアのマイナーリリース番号。 |
| BaseBoardManufacturer | CHAR | 64 | +16 | +16 | マザーボード製造元名(ASCII)。 |
| BaseBoardProduct | CHAR | 64 | +80 | +80 | マザーボード製品名(ASCII)。 |
| BaseBoardVersion | CHAR | 64 | +144 | +144 | マザーボードのバージョン(ASCII)。 |
| BiosReleaseDate | CHAR | 64 | +208 | +208 | BIOSのリリース日(ASCII)。 |
| BiosVendor | CHAR | 64 | +272 | +272 | BIOSベンダー名(ASCII)。 |
| BiosVersion | CHAR | 64 | +336 | +336 | BIOSのバージョン(ASCII)。 |
| SystemFamily | CHAR | 64 | +400 | +400 | システムファミリ名(ASCII)。 |
| SystemManufacturer | CHAR | 64 | +464 | +464 | システム製造元名(ASCII)。 |
| SystemProductName | CHAR | 64 | +528 | +528 | システム製品名(ASCII)。 |
| SystemSKU | CHAR | 64 | +592 | +592 | システムのSKU番号(ASCII)。 |
| SystemVersion | CHAR | 64 | +656 | +656 | システムのバージョン(ASCII)。 |
各言語での定義
#include <windows.h>
// DEBUG_SMBIOS_INFO (x64 720 / x86 720 バイト)
typedef struct DEBUG_SMBIOS_INFO {
DWORD SizeOfStruct;
BYTE SmbiosMajorVersion;
BYTE SmbiosMinorVersion;
BYTE DMIVersion;
DWORD TableSize;
BYTE BiosMajorRelease;
BYTE BiosMinorRelease;
BYTE FirmwareMajorRelease;
BYTE FirmwareMinorRelease;
CHAR BaseBoardManufacturer[64];
CHAR BaseBoardProduct[64];
CHAR BaseBoardVersion[64];
CHAR BiosReleaseDate[64];
CHAR BiosVendor[64];
CHAR BiosVersion[64];
CHAR SystemFamily[64];
CHAR SystemManufacturer[64];
CHAR SystemProductName[64];
CHAR SystemSKU[64];
CHAR SystemVersion[64];
} DEBUG_SMBIOS_INFO;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DEBUG_SMBIOS_INFO
{
public uint SizeOfStruct;
public byte SmbiosMajorVersion;
public byte SmbiosMinorVersion;
public byte DMIVersion;
public uint TableSize;
public byte BiosMajorRelease;
public byte BiosMinorRelease;
public byte FirmwareMajorRelease;
public byte FirmwareMinorRelease;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)] public sbyte[] BaseBoardManufacturer;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)] public sbyte[] BaseBoardProduct;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)] public sbyte[] BaseBoardVersion;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)] public sbyte[] BiosReleaseDate;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)] public sbyte[] BiosVendor;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)] public sbyte[] BiosVersion;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)] public sbyte[] SystemFamily;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)] public sbyte[] SystemManufacturer;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)] public sbyte[] SystemProductName;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)] public sbyte[] SystemSKU;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)] public sbyte[] SystemVersion;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DEBUG_SMBIOS_INFO
Public SizeOfStruct As UInteger
Public SmbiosMajorVersion As Byte
Public SmbiosMinorVersion As Byte
Public DMIVersion As Byte
Public TableSize As UInteger
Public BiosMajorRelease As Byte
Public BiosMinorRelease As Byte
Public FirmwareMajorRelease As Byte
Public FirmwareMinorRelease As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=64)> Public BaseBoardManufacturer() As SByte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=64)> Public BaseBoardProduct() As SByte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=64)> Public BaseBoardVersion() As SByte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=64)> Public BiosReleaseDate() As SByte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=64)> Public BiosVendor() As SByte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=64)> Public BiosVersion() As SByte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=64)> Public SystemFamily() As SByte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=64)> Public SystemManufacturer() As SByte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=64)> Public SystemProductName() As SByte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=64)> Public SystemSKU() As SByte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=64)> Public SystemVersion() As SByte
End Structureimport ctypes
from ctypes import wintypes
class DEBUG_SMBIOS_INFO(ctypes.Structure):
_fields_ = [
("SizeOfStruct", wintypes.DWORD),
("SmbiosMajorVersion", ctypes.c_ubyte),
("SmbiosMinorVersion", ctypes.c_ubyte),
("DMIVersion", ctypes.c_ubyte),
("TableSize", wintypes.DWORD),
("BiosMajorRelease", ctypes.c_ubyte),
("BiosMinorRelease", ctypes.c_ubyte),
("FirmwareMajorRelease", ctypes.c_ubyte),
("FirmwareMinorRelease", ctypes.c_ubyte),
("BaseBoardManufacturer", ctypes.c_byte * 64),
("BaseBoardProduct", ctypes.c_byte * 64),
("BaseBoardVersion", ctypes.c_byte * 64),
("BiosReleaseDate", ctypes.c_byte * 64),
("BiosVendor", ctypes.c_byte * 64),
("BiosVersion", ctypes.c_byte * 64),
("SystemFamily", ctypes.c_byte * 64),
("SystemManufacturer", ctypes.c_byte * 64),
("SystemProductName", ctypes.c_byte * 64),
("SystemSKU", ctypes.c_byte * 64),
("SystemVersion", ctypes.c_byte * 64),
]#[repr(C)]
pub struct DEBUG_SMBIOS_INFO {
pub SizeOfStruct: u32,
pub SmbiosMajorVersion: u8,
pub SmbiosMinorVersion: u8,
pub DMIVersion: u8,
pub TableSize: u32,
pub BiosMajorRelease: u8,
pub BiosMinorRelease: u8,
pub FirmwareMajorRelease: u8,
pub FirmwareMinorRelease: u8,
pub BaseBoardManufacturer: [i8; 64],
pub BaseBoardProduct: [i8; 64],
pub BaseBoardVersion: [i8; 64],
pub BiosReleaseDate: [i8; 64],
pub BiosVendor: [i8; 64],
pub BiosVersion: [i8; 64],
pub SystemFamily: [i8; 64],
pub SystemManufacturer: [i8; 64],
pub SystemProductName: [i8; 64],
pub SystemSKU: [i8; 64],
pub SystemVersion: [i8; 64],
}import "golang.org/x/sys/windows"
type DEBUG_SMBIOS_INFO struct {
SizeOfStruct uint32
SmbiosMajorVersion byte
SmbiosMinorVersion byte
DMIVersion byte
TableSize uint32
BiosMajorRelease byte
BiosMinorRelease byte
FirmwareMajorRelease byte
FirmwareMinorRelease byte
BaseBoardManufacturer [64]int8
BaseBoardProduct [64]int8
BaseBoardVersion [64]int8
BiosReleaseDate [64]int8
BiosVendor [64]int8
BiosVersion [64]int8
SystemFamily [64]int8
SystemManufacturer [64]int8
SystemProductName [64]int8
SystemSKU [64]int8
SystemVersion [64]int8
}type
DEBUG_SMBIOS_INFO = record
SizeOfStruct: DWORD;
SmbiosMajorVersion: Byte;
SmbiosMinorVersion: Byte;
DMIVersion: Byte;
TableSize: DWORD;
BiosMajorRelease: Byte;
BiosMinorRelease: Byte;
FirmwareMajorRelease: Byte;
FirmwareMinorRelease: Byte;
BaseBoardManufacturer: array[0..63] of Shortint;
BaseBoardProduct: array[0..63] of Shortint;
BaseBoardVersion: array[0..63] of Shortint;
BiosReleaseDate: array[0..63] of Shortint;
BiosVendor: array[0..63] of Shortint;
BiosVersion: array[0..63] of Shortint;
SystemFamily: array[0..63] of Shortint;
SystemManufacturer: array[0..63] of Shortint;
SystemProductName: array[0..63] of Shortint;
SystemSKU: array[0..63] of Shortint;
SystemVersion: array[0..63] of Shortint;
end;const DEBUG_SMBIOS_INFO = extern struct {
SizeOfStruct: u32,
SmbiosMajorVersion: u8,
SmbiosMinorVersion: u8,
DMIVersion: u8,
TableSize: u32,
BiosMajorRelease: u8,
BiosMinorRelease: u8,
FirmwareMajorRelease: u8,
FirmwareMinorRelease: u8,
BaseBoardManufacturer: [64]i8,
BaseBoardProduct: [64]i8,
BaseBoardVersion: [64]i8,
BiosReleaseDate: [64]i8,
BiosVendor: [64]i8,
BiosVersion: [64]i8,
SystemFamily: [64]i8,
SystemManufacturer: [64]i8,
SystemProductName: [64]i8,
SystemSKU: [64]i8,
SystemVersion: [64]i8,
};type
DEBUG_SMBIOS_INFO {.bycopy.} = object
SizeOfStruct: uint32
SmbiosMajorVersion: uint8
SmbiosMinorVersion: uint8
DMIVersion: uint8
TableSize: uint32
BiosMajorRelease: uint8
BiosMinorRelease: uint8
FirmwareMajorRelease: uint8
FirmwareMinorRelease: uint8
BaseBoardManufacturer: array[64, int8]
BaseBoardProduct: array[64, int8]
BaseBoardVersion: array[64, int8]
BiosReleaseDate: array[64, int8]
BiosVendor: array[64, int8]
BiosVersion: array[64, int8]
SystemFamily: array[64, int8]
SystemManufacturer: array[64, int8]
SystemProductName: array[64, int8]
SystemSKU: array[64, int8]
SystemVersion: array[64, int8]struct DEBUG_SMBIOS_INFO
{
uint SizeOfStruct;
ubyte SmbiosMajorVersion;
ubyte SmbiosMinorVersion;
ubyte DMIVersion;
uint TableSize;
ubyte BiosMajorRelease;
ubyte BiosMinorRelease;
ubyte FirmwareMajorRelease;
ubyte FirmwareMinorRelease;
byte[64] BaseBoardManufacturer;
byte[64] BaseBoardProduct;
byte[64] BaseBoardVersion;
byte[64] BiosReleaseDate;
byte[64] BiosVendor;
byte[64] BiosVersion;
byte[64] SystemFamily;
byte[64] SystemManufacturer;
byte[64] SystemProductName;
byte[64] SystemSKU;
byte[64] SystemVersion;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DEBUG_SMBIOS_INFO サイズ: 720 バイト(x64)
dim st, 180 ; 4byte整数×180(構造体サイズ 720 / 4 切り上げ)
; SizeOfStruct : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; SmbiosMajorVersion : BYTE (+4, 1byte) poke st,4,値 / 値 = peek(st,4)
; SmbiosMinorVersion : BYTE (+5, 1byte) poke st,5,値 / 値 = peek(st,5)
; DMIVersion : BYTE (+6, 1byte) poke st,6,値 / 値 = peek(st,6)
; TableSize : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; BiosMajorRelease : BYTE (+12, 1byte) poke st,12,値 / 値 = peek(st,12)
; BiosMinorRelease : BYTE (+13, 1byte) poke st,13,値 / 値 = peek(st,13)
; FirmwareMajorRelease : BYTE (+14, 1byte) poke st,14,値 / 値 = peek(st,14)
; FirmwareMinorRelease : BYTE (+15, 1byte) poke st,15,値 / 値 = peek(st,15)
; BaseBoardManufacturer : CHAR (+16, 64byte) varptr(st)+16 を基点に操作(64byte:入れ子/配列)
; BaseBoardProduct : CHAR (+80, 64byte) varptr(st)+80 を基点に操作(64byte:入れ子/配列)
; BaseBoardVersion : CHAR (+144, 64byte) varptr(st)+144 を基点に操作(64byte:入れ子/配列)
; BiosReleaseDate : CHAR (+208, 64byte) varptr(st)+208 を基点に操作(64byte:入れ子/配列)
; BiosVendor : CHAR (+272, 64byte) varptr(st)+272 を基点に操作(64byte:入れ子/配列)
; BiosVersion : CHAR (+336, 64byte) varptr(st)+336 を基点に操作(64byte:入れ子/配列)
; SystemFamily : CHAR (+400, 64byte) varptr(st)+400 を基点に操作(64byte:入れ子/配列)
; SystemManufacturer : CHAR (+464, 64byte) varptr(st)+464 を基点に操作(64byte:入れ子/配列)
; SystemProductName : CHAR (+528, 64byte) varptr(st)+528 を基点に操作(64byte:入れ子/配列)
; SystemSKU : CHAR (+592, 64byte) varptr(st)+592 を基点に操作(64byte:入れ子/配列)
; SystemVersion : CHAR (+656, 64byte) varptr(st)+656 を基点に操作(64byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global DEBUG_SMBIOS_INFO
#field int SizeOfStruct
#field byte SmbiosMajorVersion
#field byte SmbiosMinorVersion
#field byte DMIVersion
#field int TableSize
#field byte BiosMajorRelease
#field byte BiosMinorRelease
#field byte FirmwareMajorRelease
#field byte FirmwareMinorRelease
#field byte BaseBoardManufacturer 64
#field byte BaseBoardProduct 64
#field byte BaseBoardVersion 64
#field byte BiosReleaseDate 64
#field byte BiosVendor 64
#field byte BiosVersion 64
#field byte SystemFamily 64
#field byte SystemManufacturer 64
#field byte SystemProductName 64
#field byte SystemSKU 64
#field byte SystemVersion 64
#endstruct
stdim st, DEBUG_SMBIOS_INFO ; NSTRUCT 変数を確保
st->SizeOfStruct = 100
mes "SizeOfStruct=" + st->SizeOfStruct