MBN_INTERFACE_CAPS
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| cellularClass | MBN_CELLULAR_CLASS | 4 | +0 | +0 | デバイスが使用するセルラー技術を指定する MBN_CELLULAR_CLASS 値です。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| voiceClass | MBN_VOICE_CLASS | 4 | +4 | +4 | 音声通話の処理方法を指定する MBN_VOICE_CLASS 値です。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| dataClass | DWORD | 4 | +8 | +8 | サポートされるデータサービスを指定する MBN_DATA_CLASS 値のビット単位のOR の組み合わせです。GSM デバイスの場合、存在できるのは GSM ベースのデータサービスのみです。つまり、GSM デバイスで有効な値は GPRS、EDGE、UMTS、LTE、HSDPA のみです。 CDMA デバイスの場合、存在するのは CDMA 関連のデータサービスのみです。つまり、CDMA デバイスで有効な値は 1xRTT、1xEV-DO、1xEV-DO RevA のみです。1xEV-DO RevB は将来の使用のために予約済みです。 列挙型で定義されていない他のデータクラスもデバイスがサポートしている場合、このフィールドにはビット値 MBN_DATA_CLASS_CUSTOM が設定されます。MBN_DATA_CLASS_CUSTOM が設定されている場合、カスタムデータクラスに関する情報は customDataClass フィールドで取得できます。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| customDataClass | LPWSTR | 8/4 | +16 | +12 | カスタムデータクラスの名前が格納されます。dataClass の MBN_DATA_CLASS_CUSTOM ビットが設定されていない場合、この文字列は NULL です。それ以外の場合、呼び出し元は SysFreeString を呼び出してこの文字列を解放しなければなりません。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| gsmBandClass | DWORD | 4 | +24 | +16 | GSM デバイスがサポートする周波数帯を指定するビットフィールドです。MBN_BAND_CLASS_I から MBN_BAND_CLASS_X まで、および MBN_BAND_CLASS_CUSTOM が有効な値です。これらの値は MBN_BAND_CLASS で定義されています。gsmBandClass に MBN_BAND_CLASS_CUSTOM が設定されている場合、バンドクラスに関する追加情報は customBandClass に格納されます。 次の表に、MBN_BAND_CLASS の値に関する追加情報を示します。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| cdmaBandClass | DWORD | 4 | +28 | +20 | CDMA デバイスがサポートする周波数帯を指定するビットフィールドです。MBN_BAND_CLASS_0 から MBN_BAND_CLASS_XVII まで、MBN_BAND_CLASS_NONE、および MBN_BAND_CLASS_CUSTOM が有効な値です。これらの値は MBN_BAND_CLASS で定義されています。cdmaBandClass に MBN_BAND_CLASS_CUSTOM が設定されている場合、バンドクラスに関する追加情報は customBandClass に格納されます。 次の表に、MBN_BAND_CLASS の値に関する追加情報を示します。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| customBandClass | LPWSTR | 8/4 | +32 | +24 | カスタムバンドクラスの名前が格納されます。cdmaBandClass と gsmBandClass の MBN_BAND_CLASS_CUSTOM ビットが設定されていない場合、この文字列は NULL です。それ以外の場合、呼び出し元は SysFreeString を呼び出してこの文字列を解放しなければなりません。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| smsCaps | DWORD | 4 | +40 | +28 | SMS の機能を指定する MBN_SMS_CAPS 値のビット単位のOR の組み合わせです。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| controlCaps | DWORD | 4 | +44 | +32 | このインターフェイスのモバイルブロードバンド制御機能を表す MBN_CTRL_CAPS 値のビット単位のOR の組み合わせです。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| deviceID | LPWSTR | 8/4 | +48 | +36 | デバイス ID が格納されます。GSM デバイスの場合、これは IMEI (最大 15 桁) でなければなりません。CDMA デバイスの場合、これは ESN (11 桁) / MEID (17 桁) でなければなりません。文字列の最大長は MBN_DEVICEID_LEN です。MBN_DEVICEID_LEN の定義については、MBN_INTERFACE_CAPS_CONSTANTS を参照してください。呼び出し元は SysFreeString を呼び出してこの文字列を解放しなければなりません。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| manufacturer | LPWSTR | 8/4 | +56 | +40 | デバイスの製造元の名前が格納されます。この文字列は空の場合があります。文字列の最大長は MBN_MANUFACTURER_LEN です。MBN_MANUFACTURER_LEN の定義については、MBN_INTERFACE_CAPS_CONSTANTS を参照してください。呼び出し元は SysFreeString を呼び出してこの文字列を解放しなければなりません。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| model | LPWSTR | 8/4 | +64 | +44 | デバイスのモデルが格納されます。この文字列は空の場合があります。この文字列の最大長は MBN_MODEL_LEN です。MBN_MODEL_LEN の定義については、MBN_INTERFACE_CAPS_CONSTANTS を参照してください。呼び出し元は SysFreeString を呼び出してこの文字列を解放しなければなりません。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| firmwareInfo | LPWSTR | 8/4 | +72 | +48 | このデバイスのファームウェア固有の情報が格納されます。この文字列は空の場合があります。文字列の最大長は MBN_FIRMWARE_LEN です。MBN_FIRMWARE_LEN の定義については、MBN_INTERFACE_CAPS_CONSTANTS を参照してください。呼び出し元は SysFreeString を呼び出してこの文字列を解放しなければなりません。 |
公式ドキュメント
Windows 10 バージョン 1803 以降、このセクションで説明する Win32 API は Windows.Networking.Connectivity 名前空間の Windows ランタイム API に置き換えられています。
MBN_INTERFACE_CAPS 構造体は、インターフェイスの機能を表します。この構造体は、IMbnInterface の GetInterfaceCapability メソッドから返されます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#include <windows.h>
// MBN_INTERFACE_CAPS (x64 80 / x86 52 バイト)
typedef struct MBN_INTERFACE_CAPS {
MBN_CELLULAR_CLASS cellularClass;
MBN_VOICE_CLASS voiceClass;
DWORD dataClass;
LPWSTR customDataClass;
DWORD gsmBandClass;
DWORD cdmaBandClass;
LPWSTR customBandClass;
DWORD smsCaps;
DWORD controlCaps;
LPWSTR deviceID;
LPWSTR manufacturer;
LPWSTR model;
LPWSTR firmwareInfo;
} MBN_INTERFACE_CAPS;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct MBN_INTERFACE_CAPS
{
public int cellularClass;
public int voiceClass;
public uint dataClass;
public IntPtr customDataClass;
public uint gsmBandClass;
public uint cdmaBandClass;
public IntPtr customBandClass;
public uint smsCaps;
public uint controlCaps;
public IntPtr deviceID;
public IntPtr manufacturer;
public IntPtr model;
public IntPtr firmwareInfo;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure MBN_INTERFACE_CAPS
Public cellularClass As Integer
Public voiceClass As Integer
Public dataClass As UInteger
Public customDataClass As IntPtr
Public gsmBandClass As UInteger
Public cdmaBandClass As UInteger
Public customBandClass As IntPtr
Public smsCaps As UInteger
Public controlCaps As UInteger
Public deviceID As IntPtr
Public manufacturer As IntPtr
Public model As IntPtr
Public firmwareInfo As IntPtr
End Structureimport ctypes
from ctypes import wintypes
class MBN_INTERFACE_CAPS(ctypes.Structure):
_fields_ = [
("cellularClass", ctypes.c_int),
("voiceClass", ctypes.c_int),
("dataClass", wintypes.DWORD),
("customDataClass", ctypes.c_void_p),
("gsmBandClass", wintypes.DWORD),
("cdmaBandClass", wintypes.DWORD),
("customBandClass", ctypes.c_void_p),
("smsCaps", wintypes.DWORD),
("controlCaps", wintypes.DWORD),
("deviceID", ctypes.c_void_p),
("manufacturer", ctypes.c_void_p),
("model", ctypes.c_void_p),
("firmwareInfo", ctypes.c_void_p),
]#[repr(C)]
pub struct MBN_INTERFACE_CAPS {
pub cellularClass: i32,
pub voiceClass: i32,
pub dataClass: u32,
pub customDataClass: *mut core::ffi::c_void,
pub gsmBandClass: u32,
pub cdmaBandClass: u32,
pub customBandClass: *mut core::ffi::c_void,
pub smsCaps: u32,
pub controlCaps: u32,
pub deviceID: *mut core::ffi::c_void,
pub manufacturer: *mut core::ffi::c_void,
pub model: *mut core::ffi::c_void,
pub firmwareInfo: *mut core::ffi::c_void,
}import "golang.org/x/sys/windows"
type MBN_INTERFACE_CAPS struct {
cellularClass int32
voiceClass int32
dataClass uint32
customDataClass uintptr
gsmBandClass uint32
cdmaBandClass uint32
customBandClass uintptr
smsCaps uint32
controlCaps uint32
deviceID uintptr
manufacturer uintptr
model uintptr
firmwareInfo uintptr
}type
MBN_INTERFACE_CAPS = record
cellularClass: Integer;
voiceClass: Integer;
dataClass: DWORD;
customDataClass: Pointer;
gsmBandClass: DWORD;
cdmaBandClass: DWORD;
customBandClass: Pointer;
smsCaps: DWORD;
controlCaps: DWORD;
deviceID: Pointer;
manufacturer: Pointer;
model: Pointer;
firmwareInfo: Pointer;
end;const MBN_INTERFACE_CAPS = extern struct {
cellularClass: i32,
voiceClass: i32,
dataClass: u32,
customDataClass: ?*anyopaque,
gsmBandClass: u32,
cdmaBandClass: u32,
customBandClass: ?*anyopaque,
smsCaps: u32,
controlCaps: u32,
deviceID: ?*anyopaque,
manufacturer: ?*anyopaque,
model: ?*anyopaque,
firmwareInfo: ?*anyopaque,
};type
MBN_INTERFACE_CAPS {.bycopy.} = object
cellularClass: int32
voiceClass: int32
dataClass: uint32
customDataClass: pointer
gsmBandClass: uint32
cdmaBandClass: uint32
customBandClass: pointer
smsCaps: uint32
controlCaps: uint32
deviceID: pointer
manufacturer: pointer
model: pointer
firmwareInfo: pointerstruct MBN_INTERFACE_CAPS
{
int cellularClass;
int voiceClass;
uint dataClass;
void* customDataClass;
uint gsmBandClass;
uint cdmaBandClass;
void* customBandClass;
uint smsCaps;
uint controlCaps;
void* deviceID;
void* manufacturer;
void* model;
void* firmwareInfo;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; MBN_INTERFACE_CAPS サイズ: 52 バイト(x86)
dim st, 13 ; 4byte整数×13(構造体サイズ 52 / 4 切り上げ)
; cellularClass : MBN_CELLULAR_CLASS (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; voiceClass : MBN_VOICE_CLASS (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; dataClass : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; customDataClass : LPWSTR (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; gsmBandClass : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; cdmaBandClass : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; customBandClass : LPWSTR (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; smsCaps : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; controlCaps : DWORD (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; deviceID : LPWSTR (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; manufacturer : LPWSTR (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; model : LPWSTR (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; firmwareInfo : LPWSTR (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; MBN_INTERFACE_CAPS サイズ: 80 バイト(x64)
dim st, 20 ; 4byte整数×20(構造体サイズ 80 / 4 切り上げ)
; cellularClass : MBN_CELLULAR_CLASS (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; voiceClass : MBN_VOICE_CLASS (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; dataClass : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; customDataClass : LPWSTR (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; gsmBandClass : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; cdmaBandClass : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; customBandClass : LPWSTR (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; smsCaps : DWORD (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; controlCaps : DWORD (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; deviceID : LPWSTR (+48, 8byte) qpoke st,48,値 / qpeek(st,48) ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; manufacturer : LPWSTR (+56, 8byte) qpoke st,56,値 / qpeek(st,56) ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; model : LPWSTR (+64, 8byte) qpoke st,64,値 / qpeek(st,64) ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; firmwareInfo : LPWSTR (+72, 8byte) qpoke st,72,値 / qpeek(st,72) ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global MBN_INTERFACE_CAPS
#field int cellularClass
#field int voiceClass
#field int dataClass
#field intptr customDataClass
#field int gsmBandClass
#field int cdmaBandClass
#field intptr customBandClass
#field int smsCaps
#field int controlCaps
#field intptr deviceID
#field intptr manufacturer
#field intptr model
#field intptr firmwareInfo
#endstruct
stdim st, MBN_INTERFACE_CAPS ; NSTRUCT 変数を確保
st->cellularClass = 100
mes "cellularClass=" + st->cellularClass