ホーム › NetworkManagement.Ndis › NDIS_CO_DEVICE_PROFILE
NDIS_CO_DEVICE_PROFILE
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| DeviceDescription | NDIS_VAR_DATA_DESC | 16/8 | +0 | +0 | デバイスの説明文字列を示す可変データ記述子。 |
| DevSpecificInfo | NDIS_VAR_DATA_DESC | 16/8 | +16 | +8 | デバイス固有情報を示す可変データ記述子。 |
| ulTAPISupplementaryPassThru | DWORD | 4 | +32 | +16 | TAPIの補助パススルー機能サポートを示す。 |
| ulAddressModes | DWORD | 4 | +36 | +20 | サポートするアドレスモードのフラグ。 |
| ulNumAddresses | DWORD | 4 | +40 | +24 | デバイス上のアドレス数。 |
| ulBearerModes | DWORD | 4 | +44 | +28 | サポートするベアラモードのフラグ。 |
| ulMaxTxRate | DWORD | 4 | +48 | +32 | 最大送信レート(bps)。 |
| ulMinTxRate | DWORD | 4 | +52 | +36 | 最小送信レート(bps)。 |
| ulMaxRxRate | DWORD | 4 | +56 | +40 | 最大受信レート(bps)。 |
| ulMinRxRate | DWORD | 4 | +60 | +44 | 最小受信レート(bps)。 |
| ulMediaModes | DWORD | 4 | +64 | +48 | サポートするメディアモードのフラグ。 |
| ulGenerateToneModes | DWORD | 4 | +68 | +52 | サポートするトーン生成モードのフラグ。 |
| ulGenerateToneMaxNumFreq | DWORD | 4 | +72 | +56 | 同時に生成可能なトーン周波数の最大数。 |
| ulGenerateDigitModes | DWORD | 4 | +76 | +60 | サポートするダイヤル桁生成モードのフラグ。 |
| ulMonitorToneMaxNumFreq | DWORD | 4 | +80 | +64 | 監視可能なトーン周波数の最大数。 |
| ulMonitorToneMaxNumEntries | DWORD | 4 | +84 | +68 | トーン監視リストの最大エントリ数。 |
| ulMonitorDigitModes | DWORD | 4 | +88 | +72 | サポートする桁監視モードのフラグ。 |
| ulGatherDigitsMinTimeout | DWORD | 4 | +92 | +76 | 桁収集の最小タイムアウト(ミリ秒)。 |
| ulGatherDigitsMaxTimeout | DWORD | 4 | +96 | +80 | 桁収集の最大タイムアウト(ミリ秒)。 |
| ulDevCapFlags | DWORD | 4 | +100 | +84 | デバイス能力を示すフラグ。 |
| ulMaxNumActiveCalls | DWORD | 4 | +104 | +88 | 同時にアクティブにできる通話の最大数。 |
| ulAnswerMode | DWORD | 4 | +108 | +92 | 通話応答時の既存通話の扱いを示すモード。 |
| ulUUIAcceptSize | DWORD | 4 | +112 | +96 | Accept時に送信可能なユーザーユーザー情報の最大サイズ(バイト)。 |
| ulUUIAnswerSize | DWORD | 4 | +116 | +100 | Answer時に送信可能なユーザーユーザー情報の最大サイズ(バイト)。 |
| ulUUIMakeCallSize | DWORD | 4 | +120 | +104 | 発信時に送信可能なユーザーユーザー情報の最大サイズ(バイト)。 |
| ulUUIDropSize | DWORD | 4 | +124 | +108 | 切断時に送信可能なユーザーユーザー情報の最大サイズ(バイト)。 |
| ulUUISendUserUserInfoSize | DWORD | 4 | +128 | +112 | ユーザーユーザー情報送信操作の最大サイズ(バイト)。 |
| ulUUICallInfoSize | DWORD | 4 | +132 | +116 | 通話情報中のユーザーユーザー情報の最大サイズ(バイト)。 |
各言語での定義
#include <windows.h>
// NDIS_VAR_DATA_DESC (x64 16 / x86 8 バイト)
typedef struct NDIS_VAR_DATA_DESC {
WORD Length;
WORD MaximumLength;
UINT_PTR Offset;
} NDIS_VAR_DATA_DESC;
// NDIS_CO_DEVICE_PROFILE (x64 136 / x86 120 バイト)
typedef struct NDIS_CO_DEVICE_PROFILE {
NDIS_VAR_DATA_DESC DeviceDescription;
NDIS_VAR_DATA_DESC DevSpecificInfo;
DWORD ulTAPISupplementaryPassThru;
DWORD ulAddressModes;
DWORD ulNumAddresses;
DWORD ulBearerModes;
DWORD ulMaxTxRate;
DWORD ulMinTxRate;
DWORD ulMaxRxRate;
DWORD ulMinRxRate;
DWORD ulMediaModes;
DWORD ulGenerateToneModes;
DWORD ulGenerateToneMaxNumFreq;
DWORD ulGenerateDigitModes;
DWORD ulMonitorToneMaxNumFreq;
DWORD ulMonitorToneMaxNumEntries;
DWORD ulMonitorDigitModes;
DWORD ulGatherDigitsMinTimeout;
DWORD ulGatherDigitsMaxTimeout;
DWORD ulDevCapFlags;
DWORD ulMaxNumActiveCalls;
DWORD ulAnswerMode;
DWORD ulUUIAcceptSize;
DWORD ulUUIAnswerSize;
DWORD ulUUIMakeCallSize;
DWORD ulUUIDropSize;
DWORD ulUUISendUserUserInfoSize;
DWORD ulUUICallInfoSize;
} NDIS_CO_DEVICE_PROFILE;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct NDIS_VAR_DATA_DESC
{
public ushort Length;
public ushort MaximumLength;
public UIntPtr Offset;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct NDIS_CO_DEVICE_PROFILE
{
public NDIS_VAR_DATA_DESC DeviceDescription;
public NDIS_VAR_DATA_DESC DevSpecificInfo;
public uint ulTAPISupplementaryPassThru;
public uint ulAddressModes;
public uint ulNumAddresses;
public uint ulBearerModes;
public uint ulMaxTxRate;
public uint ulMinTxRate;
public uint ulMaxRxRate;
public uint ulMinRxRate;
public uint ulMediaModes;
public uint ulGenerateToneModes;
public uint ulGenerateToneMaxNumFreq;
public uint ulGenerateDigitModes;
public uint ulMonitorToneMaxNumFreq;
public uint ulMonitorToneMaxNumEntries;
public uint ulMonitorDigitModes;
public uint ulGatherDigitsMinTimeout;
public uint ulGatherDigitsMaxTimeout;
public uint ulDevCapFlags;
public uint ulMaxNumActiveCalls;
public uint ulAnswerMode;
public uint ulUUIAcceptSize;
public uint ulUUIAnswerSize;
public uint ulUUIMakeCallSize;
public uint ulUUIDropSize;
public uint ulUUISendUserUserInfoSize;
public uint ulUUICallInfoSize;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure NDIS_VAR_DATA_DESC
Public Length As UShort
Public MaximumLength As UShort
Public Offset As UIntPtr
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure NDIS_CO_DEVICE_PROFILE
Public DeviceDescription As NDIS_VAR_DATA_DESC
Public DevSpecificInfo As NDIS_VAR_DATA_DESC
Public ulTAPISupplementaryPassThru As UInteger
Public ulAddressModes As UInteger
Public ulNumAddresses As UInteger
Public ulBearerModes As UInteger
Public ulMaxTxRate As UInteger
Public ulMinTxRate As UInteger
Public ulMaxRxRate As UInteger
Public ulMinRxRate As UInteger
Public ulMediaModes As UInteger
Public ulGenerateToneModes As UInteger
Public ulGenerateToneMaxNumFreq As UInteger
Public ulGenerateDigitModes As UInteger
Public ulMonitorToneMaxNumFreq As UInteger
Public ulMonitorToneMaxNumEntries As UInteger
Public ulMonitorDigitModes As UInteger
Public ulGatherDigitsMinTimeout As UInteger
Public ulGatherDigitsMaxTimeout As UInteger
Public ulDevCapFlags As UInteger
Public ulMaxNumActiveCalls As UInteger
Public ulAnswerMode As UInteger
Public ulUUIAcceptSize As UInteger
Public ulUUIAnswerSize As UInteger
Public ulUUIMakeCallSize As UInteger
Public ulUUIDropSize As UInteger
Public ulUUISendUserUserInfoSize As UInteger
Public ulUUICallInfoSize As UInteger
End Structureimport ctypes
from ctypes import wintypes
class NDIS_VAR_DATA_DESC(ctypes.Structure):
_fields_ = [
("Length", ctypes.c_ushort),
("MaximumLength", ctypes.c_ushort),
("Offset", ctypes.c_size_t),
]
class NDIS_CO_DEVICE_PROFILE(ctypes.Structure):
_fields_ = [
("DeviceDescription", NDIS_VAR_DATA_DESC),
("DevSpecificInfo", NDIS_VAR_DATA_DESC),
("ulTAPISupplementaryPassThru", wintypes.DWORD),
("ulAddressModes", wintypes.DWORD),
("ulNumAddresses", wintypes.DWORD),
("ulBearerModes", wintypes.DWORD),
("ulMaxTxRate", wintypes.DWORD),
("ulMinTxRate", wintypes.DWORD),
("ulMaxRxRate", wintypes.DWORD),
("ulMinRxRate", wintypes.DWORD),
("ulMediaModes", wintypes.DWORD),
("ulGenerateToneModes", wintypes.DWORD),
("ulGenerateToneMaxNumFreq", wintypes.DWORD),
("ulGenerateDigitModes", wintypes.DWORD),
("ulMonitorToneMaxNumFreq", wintypes.DWORD),
("ulMonitorToneMaxNumEntries", wintypes.DWORD),
("ulMonitorDigitModes", wintypes.DWORD),
("ulGatherDigitsMinTimeout", wintypes.DWORD),
("ulGatherDigitsMaxTimeout", wintypes.DWORD),
("ulDevCapFlags", wintypes.DWORD),
("ulMaxNumActiveCalls", wintypes.DWORD),
("ulAnswerMode", wintypes.DWORD),
("ulUUIAcceptSize", wintypes.DWORD),
("ulUUIAnswerSize", wintypes.DWORD),
("ulUUIMakeCallSize", wintypes.DWORD),
("ulUUIDropSize", wintypes.DWORD),
("ulUUISendUserUserInfoSize", wintypes.DWORD),
("ulUUICallInfoSize", wintypes.DWORD),
]#[repr(C)]
pub struct NDIS_VAR_DATA_DESC {
pub Length: u16,
pub MaximumLength: u16,
pub Offset: usize,
}
#[repr(C)]
pub struct NDIS_CO_DEVICE_PROFILE {
pub DeviceDescription: NDIS_VAR_DATA_DESC,
pub DevSpecificInfo: NDIS_VAR_DATA_DESC,
pub ulTAPISupplementaryPassThru: u32,
pub ulAddressModes: u32,
pub ulNumAddresses: u32,
pub ulBearerModes: u32,
pub ulMaxTxRate: u32,
pub ulMinTxRate: u32,
pub ulMaxRxRate: u32,
pub ulMinRxRate: u32,
pub ulMediaModes: u32,
pub ulGenerateToneModes: u32,
pub ulGenerateToneMaxNumFreq: u32,
pub ulGenerateDigitModes: u32,
pub ulMonitorToneMaxNumFreq: u32,
pub ulMonitorToneMaxNumEntries: u32,
pub ulMonitorDigitModes: u32,
pub ulGatherDigitsMinTimeout: u32,
pub ulGatherDigitsMaxTimeout: u32,
pub ulDevCapFlags: u32,
pub ulMaxNumActiveCalls: u32,
pub ulAnswerMode: u32,
pub ulUUIAcceptSize: u32,
pub ulUUIAnswerSize: u32,
pub ulUUIMakeCallSize: u32,
pub ulUUIDropSize: u32,
pub ulUUISendUserUserInfoSize: u32,
pub ulUUICallInfoSize: u32,
}import "golang.org/x/sys/windows"
type NDIS_VAR_DATA_DESC struct {
Length uint16
MaximumLength uint16
Offset uintptr
}
type NDIS_CO_DEVICE_PROFILE struct {
DeviceDescription NDIS_VAR_DATA_DESC
DevSpecificInfo NDIS_VAR_DATA_DESC
ulTAPISupplementaryPassThru uint32
ulAddressModes uint32
ulNumAddresses uint32
ulBearerModes uint32
ulMaxTxRate uint32
ulMinTxRate uint32
ulMaxRxRate uint32
ulMinRxRate uint32
ulMediaModes uint32
ulGenerateToneModes uint32
ulGenerateToneMaxNumFreq uint32
ulGenerateDigitModes uint32
ulMonitorToneMaxNumFreq uint32
ulMonitorToneMaxNumEntries uint32
ulMonitorDigitModes uint32
ulGatherDigitsMinTimeout uint32
ulGatherDigitsMaxTimeout uint32
ulDevCapFlags uint32
ulMaxNumActiveCalls uint32
ulAnswerMode uint32
ulUUIAcceptSize uint32
ulUUIAnswerSize uint32
ulUUIMakeCallSize uint32
ulUUIDropSize uint32
ulUUISendUserUserInfoSize uint32
ulUUICallInfoSize uint32
}type
NDIS_VAR_DATA_DESC = record
Length: Word;
MaximumLength: Word;
Offset: NativeUInt;
end;
NDIS_CO_DEVICE_PROFILE = record
DeviceDescription: NDIS_VAR_DATA_DESC;
DevSpecificInfo: NDIS_VAR_DATA_DESC;
ulTAPISupplementaryPassThru: DWORD;
ulAddressModes: DWORD;
ulNumAddresses: DWORD;
ulBearerModes: DWORD;
ulMaxTxRate: DWORD;
ulMinTxRate: DWORD;
ulMaxRxRate: DWORD;
ulMinRxRate: DWORD;
ulMediaModes: DWORD;
ulGenerateToneModes: DWORD;
ulGenerateToneMaxNumFreq: DWORD;
ulGenerateDigitModes: DWORD;
ulMonitorToneMaxNumFreq: DWORD;
ulMonitorToneMaxNumEntries: DWORD;
ulMonitorDigitModes: DWORD;
ulGatherDigitsMinTimeout: DWORD;
ulGatherDigitsMaxTimeout: DWORD;
ulDevCapFlags: DWORD;
ulMaxNumActiveCalls: DWORD;
ulAnswerMode: DWORD;
ulUUIAcceptSize: DWORD;
ulUUIAnswerSize: DWORD;
ulUUIMakeCallSize: DWORD;
ulUUIDropSize: DWORD;
ulUUISendUserUserInfoSize: DWORD;
ulUUICallInfoSize: DWORD;
end;const NDIS_VAR_DATA_DESC = extern struct {
Length: u16,
MaximumLength: u16,
Offset: usize,
};
const NDIS_CO_DEVICE_PROFILE = extern struct {
DeviceDescription: NDIS_VAR_DATA_DESC,
DevSpecificInfo: NDIS_VAR_DATA_DESC,
ulTAPISupplementaryPassThru: u32,
ulAddressModes: u32,
ulNumAddresses: u32,
ulBearerModes: u32,
ulMaxTxRate: u32,
ulMinTxRate: u32,
ulMaxRxRate: u32,
ulMinRxRate: u32,
ulMediaModes: u32,
ulGenerateToneModes: u32,
ulGenerateToneMaxNumFreq: u32,
ulGenerateDigitModes: u32,
ulMonitorToneMaxNumFreq: u32,
ulMonitorToneMaxNumEntries: u32,
ulMonitorDigitModes: u32,
ulGatherDigitsMinTimeout: u32,
ulGatherDigitsMaxTimeout: u32,
ulDevCapFlags: u32,
ulMaxNumActiveCalls: u32,
ulAnswerMode: u32,
ulUUIAcceptSize: u32,
ulUUIAnswerSize: u32,
ulUUIMakeCallSize: u32,
ulUUIDropSize: u32,
ulUUISendUserUserInfoSize: u32,
ulUUICallInfoSize: u32,
};type
NDIS_VAR_DATA_DESC {.bycopy.} = object
Length: uint16
MaximumLength: uint16
Offset: uint
NDIS_CO_DEVICE_PROFILE {.bycopy.} = object
DeviceDescription: NDIS_VAR_DATA_DESC
DevSpecificInfo: NDIS_VAR_DATA_DESC
ulTAPISupplementaryPassThru: uint32
ulAddressModes: uint32
ulNumAddresses: uint32
ulBearerModes: uint32
ulMaxTxRate: uint32
ulMinTxRate: uint32
ulMaxRxRate: uint32
ulMinRxRate: uint32
ulMediaModes: uint32
ulGenerateToneModes: uint32
ulGenerateToneMaxNumFreq: uint32
ulGenerateDigitModes: uint32
ulMonitorToneMaxNumFreq: uint32
ulMonitorToneMaxNumEntries: uint32
ulMonitorDigitModes: uint32
ulGatherDigitsMinTimeout: uint32
ulGatherDigitsMaxTimeout: uint32
ulDevCapFlags: uint32
ulMaxNumActiveCalls: uint32
ulAnswerMode: uint32
ulUUIAcceptSize: uint32
ulUUIAnswerSize: uint32
ulUUIMakeCallSize: uint32
ulUUIDropSize: uint32
ulUUISendUserUserInfoSize: uint32
ulUUICallInfoSize: uint32struct NDIS_VAR_DATA_DESC
{
ushort Length;
ushort MaximumLength;
size_t Offset;
}
struct NDIS_CO_DEVICE_PROFILE
{
NDIS_VAR_DATA_DESC DeviceDescription;
NDIS_VAR_DATA_DESC DevSpecificInfo;
uint ulTAPISupplementaryPassThru;
uint ulAddressModes;
uint ulNumAddresses;
uint ulBearerModes;
uint ulMaxTxRate;
uint ulMinTxRate;
uint ulMaxRxRate;
uint ulMinRxRate;
uint ulMediaModes;
uint ulGenerateToneModes;
uint ulGenerateToneMaxNumFreq;
uint ulGenerateDigitModes;
uint ulMonitorToneMaxNumFreq;
uint ulMonitorToneMaxNumEntries;
uint ulMonitorDigitModes;
uint ulGatherDigitsMinTimeout;
uint ulGatherDigitsMaxTimeout;
uint ulDevCapFlags;
uint ulMaxNumActiveCalls;
uint ulAnswerMode;
uint ulUUIAcceptSize;
uint ulUUIAnswerSize;
uint ulUUIMakeCallSize;
uint ulUUIDropSize;
uint ulUUISendUserUserInfoSize;
uint ulUUICallInfoSize;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; NDIS_CO_DEVICE_PROFILE サイズ: 120 バイト(x86)
dim st, 30 ; 4byte整数×30(構造体サイズ 120 / 4 切り上げ)
; DeviceDescription : NDIS_VAR_DATA_DESC (+0, 8byte) varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; DevSpecificInfo : NDIS_VAR_DATA_DESC (+8, 8byte) varptr(st)+8 を基点に操作(8byte:入れ子/配列)
; ulTAPISupplementaryPassThru : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; ulAddressModes : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; ulNumAddresses : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; ulBearerModes : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; ulMaxTxRate : DWORD (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; ulMinTxRate : DWORD (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; ulMaxRxRate : DWORD (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; ulMinRxRate : DWORD (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; ulMediaModes : DWORD (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; ulGenerateToneModes : DWORD (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; ulGenerateToneMaxNumFreq : DWORD (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; ulGenerateDigitModes : DWORD (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; ulMonitorToneMaxNumFreq : DWORD (+64, 4byte) st.16 = 値 / 値 = st.16 (lpoke/lpeek も可)
; ulMonitorToneMaxNumEntries : DWORD (+68, 4byte) st.17 = 値 / 値 = st.17 (lpoke/lpeek も可)
; ulMonitorDigitModes : DWORD (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; ulGatherDigitsMinTimeout : DWORD (+76, 4byte) st.19 = 値 / 値 = st.19 (lpoke/lpeek も可)
; ulGatherDigitsMaxTimeout : DWORD (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; ulDevCapFlags : DWORD (+84, 4byte) st.21 = 値 / 値 = st.21 (lpoke/lpeek も可)
; ulMaxNumActiveCalls : DWORD (+88, 4byte) st.22 = 値 / 値 = st.22 (lpoke/lpeek も可)
; ulAnswerMode : DWORD (+92, 4byte) st.23 = 値 / 値 = st.23 (lpoke/lpeek も可)
; ulUUIAcceptSize : DWORD (+96, 4byte) st.24 = 値 / 値 = st.24 (lpoke/lpeek も可)
; ulUUIAnswerSize : DWORD (+100, 4byte) st.25 = 値 / 値 = st.25 (lpoke/lpeek も可)
; ulUUIMakeCallSize : DWORD (+104, 4byte) st.26 = 値 / 値 = st.26 (lpoke/lpeek も可)
; ulUUIDropSize : DWORD (+108, 4byte) st.27 = 値 / 値 = st.27 (lpoke/lpeek も可)
; ulUUISendUserUserInfoSize : DWORD (+112, 4byte) st.28 = 値 / 値 = st.28 (lpoke/lpeek も可)
; ulUUICallInfoSize : DWORD (+116, 4byte) st.29 = 値 / 値 = st.29 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; NDIS_CO_DEVICE_PROFILE サイズ: 136 バイト(x64)
dim st, 34 ; 4byte整数×34(構造体サイズ 136 / 4 切り上げ)
; DeviceDescription : NDIS_VAR_DATA_DESC (+0, 16byte) varptr(st)+0 を基点に操作(16byte:入れ子/配列)
; DevSpecificInfo : NDIS_VAR_DATA_DESC (+16, 16byte) varptr(st)+16 を基点に操作(16byte:入れ子/配列)
; ulTAPISupplementaryPassThru : DWORD (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; ulAddressModes : DWORD (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; ulNumAddresses : DWORD (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; ulBearerModes : DWORD (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; ulMaxTxRate : DWORD (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; ulMinTxRate : DWORD (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; ulMaxRxRate : DWORD (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; ulMinRxRate : DWORD (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; ulMediaModes : DWORD (+64, 4byte) st.16 = 値 / 値 = st.16 (lpoke/lpeek も可)
; ulGenerateToneModes : DWORD (+68, 4byte) st.17 = 値 / 値 = st.17 (lpoke/lpeek も可)
; ulGenerateToneMaxNumFreq : DWORD (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; ulGenerateDigitModes : DWORD (+76, 4byte) st.19 = 値 / 値 = st.19 (lpoke/lpeek も可)
; ulMonitorToneMaxNumFreq : DWORD (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; ulMonitorToneMaxNumEntries : DWORD (+84, 4byte) st.21 = 値 / 値 = st.21 (lpoke/lpeek も可)
; ulMonitorDigitModes : DWORD (+88, 4byte) st.22 = 値 / 値 = st.22 (lpoke/lpeek も可)
; ulGatherDigitsMinTimeout : DWORD (+92, 4byte) st.23 = 値 / 値 = st.23 (lpoke/lpeek も可)
; ulGatherDigitsMaxTimeout : DWORD (+96, 4byte) st.24 = 値 / 値 = st.24 (lpoke/lpeek も可)
; ulDevCapFlags : DWORD (+100, 4byte) st.25 = 値 / 値 = st.25 (lpoke/lpeek も可)
; ulMaxNumActiveCalls : DWORD (+104, 4byte) st.26 = 値 / 値 = st.26 (lpoke/lpeek も可)
; ulAnswerMode : DWORD (+108, 4byte) st.27 = 値 / 値 = st.27 (lpoke/lpeek も可)
; ulUUIAcceptSize : DWORD (+112, 4byte) st.28 = 値 / 値 = st.28 (lpoke/lpeek も可)
; ulUUIAnswerSize : DWORD (+116, 4byte) st.29 = 値 / 値 = st.29 (lpoke/lpeek も可)
; ulUUIMakeCallSize : DWORD (+120, 4byte) st.30 = 値 / 値 = st.30 (lpoke/lpeek も可)
; ulUUIDropSize : DWORD (+124, 4byte) st.31 = 値 / 値 = st.31 (lpoke/lpeek も可)
; ulUUISendUserUserInfoSize : DWORD (+128, 4byte) st.32 = 値 / 値 = st.32 (lpoke/lpeek も可)
; ulUUICallInfoSize : DWORD (+132, 4byte) st.33 = 値 / 値 = st.33 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global NDIS_VAR_DATA_DESC
#field short Length
#field short MaximumLength
#field intptr Offset
#endstruct
#defstruct global NDIS_CO_DEVICE_PROFILE
#field NDIS_VAR_DATA_DESC DeviceDescription
#field NDIS_VAR_DATA_DESC DevSpecificInfo
#field int ulTAPISupplementaryPassThru
#field int ulAddressModes
#field int ulNumAddresses
#field int ulBearerModes
#field int ulMaxTxRate
#field int ulMinTxRate
#field int ulMaxRxRate
#field int ulMinRxRate
#field int ulMediaModes
#field int ulGenerateToneModes
#field int ulGenerateToneMaxNumFreq
#field int ulGenerateDigitModes
#field int ulMonitorToneMaxNumFreq
#field int ulMonitorToneMaxNumEntries
#field int ulMonitorDigitModes
#field int ulGatherDigitsMinTimeout
#field int ulGatherDigitsMaxTimeout
#field int ulDevCapFlags
#field int ulMaxNumActiveCalls
#field int ulAnswerMode
#field int ulUUIAcceptSize
#field int ulUUIAnswerSize
#field int ulUUIMakeCallSize
#field int ulUUIDropSize
#field int ulUUISendUserUserInfoSize
#field int ulUUICallInfoSize
#endstruct
stdim st, NDIS_CO_DEVICE_PROFILE ; NSTRUCT 変数を確保
st->ulTAPISupplementaryPassThru = 100
mes "ulTAPISupplementaryPassThru=" + st->ulTAPISupplementaryPassThru