ホーム › NetworkManagement.WiFi › DOT11_WFD_DEVICE_ENTRY
DOT11_WFD_DEVICE_ENTRY
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| uPhyId | DWORD | 4 | +0 | +0 | デバイスを検出したPHYのID。 |
| PhySpecificInfo | DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO | 12 | +4 | +4 | PHY固有の情報。 |
| dot11BSSID | BYTE | 6 | +16 | +16 | 検出したBSSのBSSID(6バイト)。 |
| dot11BSSType | DOT11_BSS_TYPE | 4 | +24 | +24 | BSSの種類(インフラ/独立)。 |
| TransmitterAddress | BYTE | 6 | +28 | +28 | フレーム送信元の送信機アドレス(6バイト)。 |
| lRSSI | INT | 4 | +36 | +36 | 受信信号強度をdBm単位で示す。負の値となる。 |
| uLinkQuality | DWORD | 4 | +40 | +40 | リンク品質を示す値(0〜100)。 |
| usBeaconPeriod | WORD | 2 | +44 | +44 | ビーコン周期(TU単位)。 |
| ullTimestamp | ULONGLONG | 8 | +48 | +48 | BSSのタイムスタンプ(マイクロ秒)。 |
| ullBeaconHostTimestamp | ULONGLONG | 8 | +56 | +56 | ビーコン受信時のホストタイムスタンプ。 |
| ullProbeResponseHostTimestamp | ULONGLONG | 8 | +64 | +64 | プローブ応答受信時のホストタイムスタンプ。 |
| usCapabilityInformation | WORD | 2 | +72 | +72 | BSSの能力情報フィールド。 |
| uBeaconIEsOffset | DWORD | 4 | +76 | +76 | ビーコンの情報要素への先頭からのオフセット(バイト)。 |
| uBeaconIEsLength | DWORD | 4 | +80 | +80 | ビーコンの情報要素の長さ(バイト)。 |
| uProbeResponseIEsOffset | DWORD | 4 | +84 | +84 | プローブ応答の情報要素への先頭からのオフセット(バイト)。 |
| uProbeResponseIEsLength | DWORD | 4 | +88 | +88 | プローブ応答の情報要素の長さ(バイト)。 |
各言語での定義
#include <windows.h>
// DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO (x64 12 / x86 12 バイト)
typedef struct DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO {
DWORD uChCenterFrequency;
_FHSS_e__Struct FHSS;
} DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO;
// DOT11_WFD_DEVICE_ENTRY (x64 96 / x86 96 バイト)
typedef struct DOT11_WFD_DEVICE_ENTRY {
DWORD uPhyId;
DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO PhySpecificInfo;
BYTE dot11BSSID[6];
DOT11_BSS_TYPE dot11BSSType;
BYTE TransmitterAddress[6];
INT lRSSI;
DWORD uLinkQuality;
WORD usBeaconPeriod;
ULONGLONG ullTimestamp;
ULONGLONG ullBeaconHostTimestamp;
ULONGLONG ullProbeResponseHostTimestamp;
WORD usCapabilityInformation;
DWORD uBeaconIEsOffset;
DWORD uBeaconIEsLength;
DWORD uProbeResponseIEsOffset;
DWORD uProbeResponseIEsLength;
} DOT11_WFD_DEVICE_ENTRY;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO
{
public uint uChCenterFrequency;
public _FHSS_e__Struct FHSS;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DOT11_WFD_DEVICE_ENTRY
{
public uint uPhyId;
public DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO PhySpecificInfo;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] public byte[] dot11BSSID;
public int dot11BSSType;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] public byte[] TransmitterAddress;
public int lRSSI;
public uint uLinkQuality;
public ushort usBeaconPeriod;
public ulong ullTimestamp;
public ulong ullBeaconHostTimestamp;
public ulong ullProbeResponseHostTimestamp;
public ushort usCapabilityInformation;
public uint uBeaconIEsOffset;
public uint uBeaconIEsLength;
public uint uProbeResponseIEsOffset;
public uint uProbeResponseIEsLength;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO
Public uChCenterFrequency As UInteger
Public FHSS As _FHSS_e__Struct
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DOT11_WFD_DEVICE_ENTRY
Public uPhyId As UInteger
Public PhySpecificInfo As DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=6)> Public dot11BSSID() As Byte
Public dot11BSSType As Integer
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=6)> Public TransmitterAddress() As Byte
Public lRSSI As Integer
Public uLinkQuality As UInteger
Public usBeaconPeriod As UShort
Public ullTimestamp As ULong
Public ullBeaconHostTimestamp As ULong
Public ullProbeResponseHostTimestamp As ULong
Public usCapabilityInformation As UShort
Public uBeaconIEsOffset As UInteger
Public uBeaconIEsLength As UInteger
Public uProbeResponseIEsOffset As UInteger
Public uProbeResponseIEsLength As UInteger
End Structureimport ctypes
from ctypes import wintypes
class DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO(ctypes.Structure):
_fields_ = [
("uChCenterFrequency", wintypes.DWORD),
("FHSS", _FHSS_e__Struct),
]
class DOT11_WFD_DEVICE_ENTRY(ctypes.Structure):
_fields_ = [
("uPhyId", wintypes.DWORD),
("PhySpecificInfo", DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO),
("dot11BSSID", ctypes.c_ubyte * 6),
("dot11BSSType", ctypes.c_int),
("TransmitterAddress", ctypes.c_ubyte * 6),
("lRSSI", ctypes.c_int),
("uLinkQuality", wintypes.DWORD),
("usBeaconPeriod", ctypes.c_ushort),
("ullTimestamp", ctypes.c_ulonglong),
("ullBeaconHostTimestamp", ctypes.c_ulonglong),
("ullProbeResponseHostTimestamp", ctypes.c_ulonglong),
("usCapabilityInformation", ctypes.c_ushort),
("uBeaconIEsOffset", wintypes.DWORD),
("uBeaconIEsLength", wintypes.DWORD),
("uProbeResponseIEsOffset", wintypes.DWORD),
("uProbeResponseIEsLength", wintypes.DWORD),
]#[repr(C)]
pub struct DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO {
pub uChCenterFrequency: u32,
pub FHSS: _FHSS_e__Struct,
}
#[repr(C)]
pub struct DOT11_WFD_DEVICE_ENTRY {
pub uPhyId: u32,
pub PhySpecificInfo: DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO,
pub dot11BSSID: [u8; 6],
pub dot11BSSType: i32,
pub TransmitterAddress: [u8; 6],
pub lRSSI: i32,
pub uLinkQuality: u32,
pub usBeaconPeriod: u16,
pub ullTimestamp: u64,
pub ullBeaconHostTimestamp: u64,
pub ullProbeResponseHostTimestamp: u64,
pub usCapabilityInformation: u16,
pub uBeaconIEsOffset: u32,
pub uBeaconIEsLength: u32,
pub uProbeResponseIEsOffset: u32,
pub uProbeResponseIEsLength: u32,
}import "golang.org/x/sys/windows"
type DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO struct {
uChCenterFrequency uint32
FHSS _FHSS_e__Struct
}
type DOT11_WFD_DEVICE_ENTRY struct {
uPhyId uint32
PhySpecificInfo DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO
dot11BSSID [6]byte
dot11BSSType int32
TransmitterAddress [6]byte
lRSSI int32
uLinkQuality uint32
usBeaconPeriod uint16
ullTimestamp uint64
ullBeaconHostTimestamp uint64
ullProbeResponseHostTimestamp uint64
usCapabilityInformation uint16
uBeaconIEsOffset uint32
uBeaconIEsLength uint32
uProbeResponseIEsOffset uint32
uProbeResponseIEsLength uint32
}type
DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO = record
uChCenterFrequency: DWORD;
FHSS: _FHSS_e__Struct;
end;
DOT11_WFD_DEVICE_ENTRY = record
uPhyId: DWORD;
PhySpecificInfo: DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO;
dot11BSSID: array[0..5] of Byte;
dot11BSSType: Integer;
TransmitterAddress: array[0..5] of Byte;
lRSSI: Integer;
uLinkQuality: DWORD;
usBeaconPeriod: Word;
ullTimestamp: UInt64;
ullBeaconHostTimestamp: UInt64;
ullProbeResponseHostTimestamp: UInt64;
usCapabilityInformation: Word;
uBeaconIEsOffset: DWORD;
uBeaconIEsLength: DWORD;
uProbeResponseIEsOffset: DWORD;
uProbeResponseIEsLength: DWORD;
end;const DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO = extern struct {
uChCenterFrequency: u32,
FHSS: _FHSS_e__Struct,
};
const DOT11_WFD_DEVICE_ENTRY = extern struct {
uPhyId: u32,
PhySpecificInfo: DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO,
dot11BSSID: [6]u8,
dot11BSSType: i32,
TransmitterAddress: [6]u8,
lRSSI: i32,
uLinkQuality: u32,
usBeaconPeriod: u16,
ullTimestamp: u64,
ullBeaconHostTimestamp: u64,
ullProbeResponseHostTimestamp: u64,
usCapabilityInformation: u16,
uBeaconIEsOffset: u32,
uBeaconIEsLength: u32,
uProbeResponseIEsOffset: u32,
uProbeResponseIEsLength: u32,
};type
DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO {.bycopy.} = object
uChCenterFrequency: uint32
FHSS: _FHSS_e__Struct
DOT11_WFD_DEVICE_ENTRY {.bycopy.} = object
uPhyId: uint32
PhySpecificInfo: DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO
dot11BSSID: array[6, uint8]
dot11BSSType: int32
TransmitterAddress: array[6, uint8]
lRSSI: int32
uLinkQuality: uint32
usBeaconPeriod: uint16
ullTimestamp: uint64
ullBeaconHostTimestamp: uint64
ullProbeResponseHostTimestamp: uint64
usCapabilityInformation: uint16
uBeaconIEsOffset: uint32
uBeaconIEsLength: uint32
uProbeResponseIEsOffset: uint32
uProbeResponseIEsLength: uint32struct DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO
{
uint uChCenterFrequency;
_FHSS_e__Struct FHSS;
}
struct DOT11_WFD_DEVICE_ENTRY
{
uint uPhyId;
DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO PhySpecificInfo;
ubyte[6] dot11BSSID;
int dot11BSSType;
ubyte[6] TransmitterAddress;
int lRSSI;
uint uLinkQuality;
ushort usBeaconPeriod;
ulong ullTimestamp;
ulong ullBeaconHostTimestamp;
ulong ullProbeResponseHostTimestamp;
ushort usCapabilityInformation;
uint uBeaconIEsOffset;
uint uBeaconIEsLength;
uint uProbeResponseIEsOffset;
uint uProbeResponseIEsLength;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DOT11_WFD_DEVICE_ENTRY サイズ: 96 バイト(x64)
dim st, 24 ; 4byte整数×24(構造体サイズ 96 / 4 切り上げ)
; uPhyId : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; PhySpecificInfo : DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO (+4, 12byte) varptr(st)+4 を基点に操作(12byte:入れ子/配列)
; dot11BSSID : BYTE (+16, 6byte) varptr(st)+16 を基点に操作(6byte:入れ子/配列)
; dot11BSSType : DOT11_BSS_TYPE (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; TransmitterAddress : BYTE (+28, 6byte) varptr(st)+28 を基点に操作(6byte:入れ子/配列)
; lRSSI : INT (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; uLinkQuality : DWORD (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; usBeaconPeriod : WORD (+44, 2byte) wpoke st,44,値 / 値 = wpeek(st,44)
; ullTimestamp : ULONGLONG (+48, 8byte) qpoke st,48,値 / qpeek(st,48) ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; ullBeaconHostTimestamp : ULONGLONG (+56, 8byte) qpoke st,56,値 / qpeek(st,56) ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; ullProbeResponseHostTimestamp : ULONGLONG (+64, 8byte) qpoke st,64,値 / qpeek(st,64) ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; usCapabilityInformation : WORD (+72, 2byte) wpoke st,72,値 / 値 = wpeek(st,72)
; uBeaconIEsOffset : DWORD (+76, 4byte) st.19 = 値 / 値 = st.19 (lpoke/lpeek も可)
; uBeaconIEsLength : DWORD (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; uProbeResponseIEsOffset : DWORD (+84, 4byte) st.21 = 値 / 値 = st.21 (lpoke/lpeek も可)
; uProbeResponseIEsLength : DWORD (+88, 4byte) st.22 = 値 / 値 = st.22 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global DOT11_WFD_DEVICE_ENTRY
#field int uPhyId
#field byte PhySpecificInfo 12
#field byte dot11BSSID 6
#field int dot11BSSType
#field byte TransmitterAddress 6
#field int lRSSI
#field int uLinkQuality
#field short usBeaconPeriod
#field int64 ullTimestamp
#field int64 ullBeaconHostTimestamp
#field int64 ullProbeResponseHostTimestamp
#field short usCapabilityInformation
#field int uBeaconIEsOffset
#field int uBeaconIEsLength
#field int uProbeResponseIEsOffset
#field int uProbeResponseIEsLength
#endstruct
stdim st, DOT11_WFD_DEVICE_ENTRY ; NSTRUCT 変数を確保
st->uPhyId = 100
mes "uPhyId=" + st->uPhyId
; ※union フィールドは byte 列で確保(NSTRUCT は union 非対応)。必要に応じ手動でアクセス。