Win32 API 日本語リファレンス
ホームNetworkManagement.MobileBroadband › MBN_INTERFACE_CAPS

MBN_INTERFACE_CAPS

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

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

フィールド

フィールドサイズx64x86説明
cellularClassMBN_CELLULAR_CLASS4+0+0デバイスが使用するセルラー技術を指定する MBN_CELLULAR_CLASS 値です。
voiceClassMBN_VOICE_CLASS4+4+4音声通話の処理方法を指定する MBN_VOICE_CLASS 値です。
dataClassDWORD4+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 フィールドで取得できます。

customDataClassLPWSTR8/4+16+12カスタムデータクラスの名前が格納されます。dataClassMBN_DATA_CLASS_CUSTOM ビットが設定されていない場合、この文字列は NULL です。それ以外の場合、呼び出し元は SysFreeString を呼び出してこの文字列を解放しなければなりません。
gsmBandClassDWORD4+24+16

GSM デバイスがサポートする周波数帯を指定するビットフィールドです。MBN_BAND_CLASS_I から MBN_BAND_CLASS_X まで、および MBN_BAND_CLASS_CUSTOM が有効な値です。これらの値は MBN_BAND_CLASS で定義されています。gsmBandClassMBN_BAND_CLASS_CUSTOM が設定されている場合、バンドクラスに関する追加情報は customBandClass に格納されます。

次の表に、MBN_BAND_CLASS の値に関する追加情報を示します。

MBN_BAND_CLASS の値 指定周波数帯 業界名 アップリンク (MS から BTS) ダウンリンク (BTS から MS) 地域
MBN_BAND_CLASS_I UMTS2100 IMT 1920-1980 2110-2170 ヨーロッパ、韓国、日本、中国
MBN_BAND_CLASS_II UMT21900 PCS1900 1850-1910 1930-1990 北米、ラテンアメリカ
MBN_BAND_CLASS_III UMTS1800 DCS1800 1710-1785 1805-1880 ヨーロッパ、中国
MBN_BAND_CLASS_IV AWS AWS, 1.7/2.1 1710-1785 2110-2155 北米、ラテンアメリカ
MBN_BAND_CLASS_V UMTS850 GSM850 824-849 869-894 北米、ラテンアメリカ
MBN_BAND_CLASS_VI UMTS800 UMTS800 830-840 875-885 日本
MBN_BAND_CLASS_VII UMTS2600 UMTS2600 2500-2570 2620-2690 ヨーロッパ
MBN_BAND_CLASS_VIII UMTS900 EGSM900 880-915 925-960 ヨーロッパ、中国
MBN_BAND_CLASS_IX UMTS1700 UMTS1700 1750-1770 1845-1880 日本
MBN_BAND_CLASS_X 1710-1770 2110-2170
cdmaBandClassDWORD4+28+20

CDMA デバイスがサポートする周波数帯を指定するビットフィールドです。MBN_BAND_CLASS_0 から MBN_BAND_CLASS_XVII まで、MBN_BAND_CLASS_NONE、および MBN_BAND_CLASS_CUSTOM が有効な値です。これらの値は MBN_BAND_CLASS で定義されています。cdmaBandClassMBN_BAND_CLASS_CUSTOM が設定されている場合、バンドクラスに関する追加情報は customBandClass に格納されます。

次の表に、MBN_BAND_CLASS の値に関する追加情報を示します。

MBN_BAND_CLASS の値 業界名 アップリンク (MS から BTS) ダウンリンク (BTS から MS)
MBN_BAND_CLASS_0 800MHz セルラー帯 824.025.844.995 869.025.889.995
MBN_BAND_CLASS_I 1900MHz 帯 1850-1910 1930-1990
MBN_BAND_CLASS_II TACS 帯 872.025.914.9875 917.0125.959.9875
MBN_BAND_CLASS_III JTACS 帯 887.0125.924.9875 832.0125.869.9875
MBN_BAND_CLASS_IV 韓国 PCS 帯 1750-1780 1840-1870
MBN_BAND_CLASS_V 450 MHz 帯 410-483.475 420-493.475
MBN_BAND_CLASS_VI 2 GHz 帯 1920-1979.950 2110-2169.950
MBN_BAND_CLASS_VII 700 MHz 帯 776-794 746-764
MBN_BAND_CLASS_VIII 1800 MHz 帯 1710-1784.950 1805-1879.95
MBN_BAND_CLASS_IX 900 MHz 帯 880-914-950 925-959.950
MBN_BAND_CLASS_X セカンダリ 800 MHz 帯 806-900.975 851-939.975
MBN_BAND_CLASS_XI 400 MHz ヨーロッパ PAMR 帯 410-483.475 420-493.475
MBN_BAND_CLASS_XII 800 MHz PAMR 帯 870.125-875.9875 915.0125-920.9875
MBN_BAND_CLASS_XIII 2.5 GHz IMT200 拡張帯 2500-2570 2620-2690
MBN_BAND_CLASS_XIV 米国 PCS 1.9 GHz 帯 1850-1915 1930-1995
MBN_BAND_CLASS_XV AWS 帯 1710-1755 2110-2155
MBN_BAND_CLASS_XVI 米国 2.5 GHz 帯 2502-2568 2624-2690
MBN_BAND_CLASS_XVII 米国 2.5 GHz フォワードリンク専用帯 2624-2690
customBandClassLPWSTR8/4+32+24カスタムバンドクラスの名前が格納されます。cdmaBandClassgsmBandClassMBN_BAND_CLASS_CUSTOM ビットが設定されていない場合、この文字列は NULL です。それ以外の場合、呼び出し元は SysFreeString を呼び出してこの文字列を解放しなければなりません。
smsCapsDWORD4+40+28SMS の機能を指定する MBN_SMS_CAPS 値のビット単位のOR の組み合わせです。
controlCapsDWORD4+44+32このインターフェイスのモバイルブロードバンド制御機能を表す MBN_CTRL_CAPS 値のビット単位のOR の組み合わせです。
deviceIDLPWSTR8/4+48+36デバイス ID が格納されます。GSM デバイスの場合、これは IMEI (最大 15 桁) でなければなりません。CDMA デバイスの場合、これは ESN (11 桁) / MEID (17 桁) でなければなりません。文字列の最大長は MBN_DEVICEID_LEN です。MBN_DEVICEID_LEN の定義については、MBN_INTERFACE_CAPS_CONSTANTS を参照してください。呼び出し元は SysFreeString を呼び出してこの文字列を解放しなければなりません。
manufacturerLPWSTR8/4+56+40デバイスの製造元の名前が格納されます。この文字列は空の場合があります。文字列の最大長は MBN_MANUFACTURER_LEN です。MBN_MANUFACTURER_LEN の定義については、MBN_INTERFACE_CAPS_CONSTANTS を参照してください。呼び出し元は SysFreeString を呼び出してこの文字列を解放しなければなりません。
modelLPWSTR8/4+64+44デバイスのモデルが格納されます。この文字列は空の場合があります。この文字列の最大長は MBN_MODEL_LEN です。MBN_MODEL_LEN の定義については、MBN_INTERFACE_CAPS_CONSTANTS を参照してください。呼び出し元は SysFreeString を呼び出してこの文字列を解放しなければなりません。
firmwareInfoLPWSTR8/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 構造体は、インターフェイスの機能を表します。この構造体は、IMbnInterfaceGetInterfaceCapability メソッドから返されます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 Structure
import 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: pointer
struct 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