Win32 API 日本語リファレンス
ホームSystem.Diagnostics.Debug.Extensions › DEBUG_SMBIOS_INFO

DEBUG_SMBIOS_INFO

構造体
サイズx64: 720 バイト / x86: 720 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
SizeOfStructDWORD4+0+0この構造体のバイトサイズ。呼び出し前に設定する。
SmbiosMajorVersionBYTE1+4+4SMBIOSのメジャーバージョン番号。
SmbiosMinorVersionBYTE1+5+5SMBIOSのマイナーバージョン番号。
DMIVersionBYTE1+6+6DMIのバージョン番号。
TableSizeDWORD4+8+8SMBIOSテーブルのバイトサイズ。
BiosMajorReleaseBYTE1+12+12BIOSのメジャーリリース番号。
BiosMinorReleaseBYTE1+13+13BIOSのマイナーリリース番号。
FirmwareMajorReleaseBYTE1+14+14組込みコントローラファームウェアのメジャーリリース番号。
FirmwareMinorReleaseBYTE1+15+15組込みコントローラファームウェアのマイナーリリース番号。
BaseBoardManufacturerCHAR64+16+16マザーボード製造元名(ASCII)。
BaseBoardProductCHAR64+80+80マザーボード製品名(ASCII)。
BaseBoardVersionCHAR64+144+144マザーボードのバージョン(ASCII)。
BiosReleaseDateCHAR64+208+208BIOSのリリース日(ASCII)。
BiosVendorCHAR64+272+272BIOSベンダー名(ASCII)。
BiosVersionCHAR64+336+336BIOSのバージョン(ASCII)。
SystemFamilyCHAR64+400+400システムファミリ名(ASCII)。
SystemManufacturerCHAR64+464+464システム製造元名(ASCII)。
SystemProductNameCHAR64+528+528システム製品名(ASCII)。
SystemSKUCHAR64+592+592システムのSKU番号(ASCII)。
SystemVersionCHAR64+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 Structure
import 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