ホーム › NetworkManagement.WiFi › DOT11_INCOMING_ASSOC_COMPLETION_PARAMETERS
DOT11_INCOMING_ASSOC_COMPLETION_PARAMETERS
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| Header | NDIS_OBJECT_HEADER | 4 | +0 | +0 | NDISオブジェクトの種類・リビジョン・サイズを示す共通ヘッダー。 |
| PeerMacAddr | BYTE | 6 | +4 | +4 | アソシエーションが完了したピアのMACアドレス(6バイト)。 |
| uStatus | DWORD | 4 | +12 | +12 | アソシエーション完了の状態コード。 |
| ucErrorSource | BYTE | 1 | +16 | +16 | エラーの発生源を示すコード。 |
| bReAssocReq | BOOLEAN | 1 | +17 | +17 | 受信したのが再アソシエーション要求であるかを示す真偽値。 |
| bReAssocResp | BOOLEAN | 1 | +18 | +18 | 送信したのが再アソシエーション応答であるかを示す真偽値。 |
| uAssocReqOffset | DWORD | 4 | +20 | +20 | アソシエーション要求フレーム本体への先頭からのオフセット(バイト)。 |
| uAssocReqSize | DWORD | 4 | +24 | +24 | アソシエーション要求フレーム本体のサイズ(バイト)。 |
| uAssocRespOffset | DWORD | 4 | +28 | +28 | アソシエーション応答フレーム本体への先頭からのオフセット(バイト)。 |
| uAssocRespSize | DWORD | 4 | +32 | +32 | アソシエーション応答フレーム本体のサイズ(バイト)。 |
| AuthAlgo | DOT11_AUTH_ALGORITHM | 4 | +36 | +36 | 使用された認証アルゴリズム。 |
| UnicastCipher | DOT11_CIPHER_ALGORITHM | 4 | +40 | +40 | ユニキャスト通信に使用される暗号アルゴリズム。 |
| MulticastCipher | DOT11_CIPHER_ALGORITHM | 4 | +44 | +44 | マルチキャスト通信に使用される暗号アルゴリズム。 |
| uActivePhyListOffset | DWORD | 4 | +48 | +48 | アクティブPHYリストへの先頭からのオフセット(バイト)。 |
| uActivePhyListSize | DWORD | 4 | +52 | +52 | アクティブPHYリストのサイズ(バイト)。 |
| uBeaconOffset | DWORD | 4 | +56 | +56 | ビーコンフレーム本体への先頭からのオフセット(バイト)。 |
| uBeaconSize | DWORD | 4 | +60 | +60 | ビーコンフレーム本体のサイズ(バイト)。 |
各言語での定義
#include <windows.h>
// NDIS_OBJECT_HEADER (x64 4 / x86 4 バイト)
typedef struct NDIS_OBJECT_HEADER {
BYTE Type;
BYTE Revision;
WORD Size;
} NDIS_OBJECT_HEADER;
// DOT11_INCOMING_ASSOC_COMPLETION_PARAMETERS (x64 64 / x86 64 バイト)
typedef struct DOT11_INCOMING_ASSOC_COMPLETION_PARAMETERS {
NDIS_OBJECT_HEADER Header;
BYTE PeerMacAddr[6];
DWORD uStatus;
BYTE ucErrorSource;
BOOLEAN bReAssocReq;
BOOLEAN bReAssocResp;
DWORD uAssocReqOffset;
DWORD uAssocReqSize;
DWORD uAssocRespOffset;
DWORD uAssocRespSize;
DOT11_AUTH_ALGORITHM AuthAlgo;
DOT11_CIPHER_ALGORITHM UnicastCipher;
DOT11_CIPHER_ALGORITHM MulticastCipher;
DWORD uActivePhyListOffset;
DWORD uActivePhyListSize;
DWORD uBeaconOffset;
DWORD uBeaconSize;
} DOT11_INCOMING_ASSOC_COMPLETION_PARAMETERS;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct NDIS_OBJECT_HEADER
{
public byte Type;
public byte Revision;
public ushort Size;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DOT11_INCOMING_ASSOC_COMPLETION_PARAMETERS
{
public NDIS_OBJECT_HEADER Header;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] public byte[] PeerMacAddr;
public uint uStatus;
public byte ucErrorSource;
[MarshalAs(UnmanagedType.U1)] public bool bReAssocReq;
[MarshalAs(UnmanagedType.U1)] public bool bReAssocResp;
public uint uAssocReqOffset;
public uint uAssocReqSize;
public uint uAssocRespOffset;
public uint uAssocRespSize;
public int AuthAlgo;
public int UnicastCipher;
public int MulticastCipher;
public uint uActivePhyListOffset;
public uint uActivePhyListSize;
public uint uBeaconOffset;
public uint uBeaconSize;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure NDIS_OBJECT_HEADER
Public Type As Byte
Public Revision As Byte
Public Size As UShort
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DOT11_INCOMING_ASSOC_COMPLETION_PARAMETERS
Public Header As NDIS_OBJECT_HEADER
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=6)> Public PeerMacAddr() As Byte
Public uStatus As UInteger
Public ucErrorSource As Byte
<MarshalAs(UnmanagedType.U1)> Public bReAssocReq As Boolean
<MarshalAs(UnmanagedType.U1)> Public bReAssocResp As Boolean
Public uAssocReqOffset As UInteger
Public uAssocReqSize As UInteger
Public uAssocRespOffset As UInteger
Public uAssocRespSize As UInteger
Public AuthAlgo As Integer
Public UnicastCipher As Integer
Public MulticastCipher As Integer
Public uActivePhyListOffset As UInteger
Public uActivePhyListSize As UInteger
Public uBeaconOffset As UInteger
Public uBeaconSize As UInteger
End Structureimport ctypes
from ctypes import wintypes
class NDIS_OBJECT_HEADER(ctypes.Structure):
_fields_ = [
("Type", ctypes.c_ubyte),
("Revision", ctypes.c_ubyte),
("Size", ctypes.c_ushort),
]
class DOT11_INCOMING_ASSOC_COMPLETION_PARAMETERS(ctypes.Structure):
_fields_ = [
("Header", NDIS_OBJECT_HEADER),
("PeerMacAddr", ctypes.c_ubyte * 6),
("uStatus", wintypes.DWORD),
("ucErrorSource", ctypes.c_ubyte),
("bReAssocReq", ctypes.c_byte),
("bReAssocResp", ctypes.c_byte),
("uAssocReqOffset", wintypes.DWORD),
("uAssocReqSize", wintypes.DWORD),
("uAssocRespOffset", wintypes.DWORD),
("uAssocRespSize", wintypes.DWORD),
("AuthAlgo", ctypes.c_int),
("UnicastCipher", ctypes.c_int),
("MulticastCipher", ctypes.c_int),
("uActivePhyListOffset", wintypes.DWORD),
("uActivePhyListSize", wintypes.DWORD),
("uBeaconOffset", wintypes.DWORD),
("uBeaconSize", wintypes.DWORD),
]#[repr(C)]
pub struct NDIS_OBJECT_HEADER {
pub Type: u8,
pub Revision: u8,
pub Size: u16,
}
#[repr(C)]
pub struct DOT11_INCOMING_ASSOC_COMPLETION_PARAMETERS {
pub Header: NDIS_OBJECT_HEADER,
pub PeerMacAddr: [u8; 6],
pub uStatus: u32,
pub ucErrorSource: u8,
pub bReAssocReq: u8,
pub bReAssocResp: u8,
pub uAssocReqOffset: u32,
pub uAssocReqSize: u32,
pub uAssocRespOffset: u32,
pub uAssocRespSize: u32,
pub AuthAlgo: i32,
pub UnicastCipher: i32,
pub MulticastCipher: i32,
pub uActivePhyListOffset: u32,
pub uActivePhyListSize: u32,
pub uBeaconOffset: u32,
pub uBeaconSize: u32,
}import "golang.org/x/sys/windows"
type NDIS_OBJECT_HEADER struct {
Type byte
Revision byte
Size uint16
}
type DOT11_INCOMING_ASSOC_COMPLETION_PARAMETERS struct {
Header NDIS_OBJECT_HEADER
PeerMacAddr [6]byte
uStatus uint32
ucErrorSource byte
bReAssocReq byte
bReAssocResp byte
uAssocReqOffset uint32
uAssocReqSize uint32
uAssocRespOffset uint32
uAssocRespSize uint32
AuthAlgo int32
UnicastCipher int32
MulticastCipher int32
uActivePhyListOffset uint32
uActivePhyListSize uint32
uBeaconOffset uint32
uBeaconSize uint32
}type
NDIS_OBJECT_HEADER = record
Type: Byte;
Revision: Byte;
Size: Word;
end;
DOT11_INCOMING_ASSOC_COMPLETION_PARAMETERS = record
Header: NDIS_OBJECT_HEADER;
PeerMacAddr: array[0..5] of Byte;
uStatus: DWORD;
ucErrorSource: Byte;
bReAssocReq: ByteBool;
bReAssocResp: ByteBool;
uAssocReqOffset: DWORD;
uAssocReqSize: DWORD;
uAssocRespOffset: DWORD;
uAssocRespSize: DWORD;
AuthAlgo: Integer;
UnicastCipher: Integer;
MulticastCipher: Integer;
uActivePhyListOffset: DWORD;
uActivePhyListSize: DWORD;
uBeaconOffset: DWORD;
uBeaconSize: DWORD;
end;const NDIS_OBJECT_HEADER = extern struct {
Type: u8,
Revision: u8,
Size: u16,
};
const DOT11_INCOMING_ASSOC_COMPLETION_PARAMETERS = extern struct {
Header: NDIS_OBJECT_HEADER,
PeerMacAddr: [6]u8,
uStatus: u32,
ucErrorSource: u8,
bReAssocReq: u8,
bReAssocResp: u8,
uAssocReqOffset: u32,
uAssocReqSize: u32,
uAssocRespOffset: u32,
uAssocRespSize: u32,
AuthAlgo: i32,
UnicastCipher: i32,
MulticastCipher: i32,
uActivePhyListOffset: u32,
uActivePhyListSize: u32,
uBeaconOffset: u32,
uBeaconSize: u32,
};type
NDIS_OBJECT_HEADER {.bycopy.} = object
Type: uint8
Revision: uint8
Size: uint16
DOT11_INCOMING_ASSOC_COMPLETION_PARAMETERS {.bycopy.} = object
Header: NDIS_OBJECT_HEADER
PeerMacAddr: array[6, uint8]
uStatus: uint32
ucErrorSource: uint8
bReAssocReq: uint8
bReAssocResp: uint8
uAssocReqOffset: uint32
uAssocReqSize: uint32
uAssocRespOffset: uint32
uAssocRespSize: uint32
AuthAlgo: int32
UnicastCipher: int32
MulticastCipher: int32
uActivePhyListOffset: uint32
uActivePhyListSize: uint32
uBeaconOffset: uint32
uBeaconSize: uint32struct NDIS_OBJECT_HEADER
{
ubyte Type;
ubyte Revision;
ushort Size;
}
struct DOT11_INCOMING_ASSOC_COMPLETION_PARAMETERS
{
NDIS_OBJECT_HEADER Header;
ubyte[6] PeerMacAddr;
uint uStatus;
ubyte ucErrorSource;
ubyte bReAssocReq;
ubyte bReAssocResp;
uint uAssocReqOffset;
uint uAssocReqSize;
uint uAssocRespOffset;
uint uAssocRespSize;
int AuthAlgo;
int UnicastCipher;
int MulticastCipher;
uint uActivePhyListOffset;
uint uActivePhyListSize;
uint uBeaconOffset;
uint uBeaconSize;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DOT11_INCOMING_ASSOC_COMPLETION_PARAMETERS サイズ: 64 バイト(x64)
dim st, 16 ; 4byte整数×16(構造体サイズ 64 / 4 切り上げ)
; Header : NDIS_OBJECT_HEADER (+0, 4byte) varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; PeerMacAddr : BYTE (+4, 6byte) varptr(st)+4 を基点に操作(6byte:入れ子/配列)
; uStatus : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; ucErrorSource : BYTE (+16, 1byte) poke st,16,値 / 値 = peek(st,16)
; bReAssocReq : BOOLEAN (+17, 1byte) poke st,17,値 / 値 = peek(st,17)
; bReAssocResp : BOOLEAN (+18, 1byte) poke st,18,値 / 値 = peek(st,18)
; uAssocReqOffset : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; uAssocReqSize : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; uAssocRespOffset : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; uAssocRespSize : DWORD (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; AuthAlgo : DOT11_AUTH_ALGORITHM (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; UnicastCipher : DOT11_CIPHER_ALGORITHM (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; MulticastCipher : DOT11_CIPHER_ALGORITHM (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; uActivePhyListOffset : DWORD (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; uActivePhyListSize : DWORD (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; uBeaconOffset : DWORD (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; uBeaconSize : DWORD (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global NDIS_OBJECT_HEADER
#field byte Type
#field byte Revision
#field short Size
#endstruct
#defstruct global DOT11_INCOMING_ASSOC_COMPLETION_PARAMETERS
#field NDIS_OBJECT_HEADER Header
#field byte PeerMacAddr 6
#field int uStatus
#field byte ucErrorSource
#field bool1 bReAssocReq
#field bool1 bReAssocResp
#field int uAssocReqOffset
#field int uAssocReqSize
#field int uAssocRespOffset
#field int uAssocRespSize
#field int AuthAlgo
#field int UnicastCipher
#field int MulticastCipher
#field int uActivePhyListOffset
#field int uActivePhyListSize
#field int uBeaconOffset
#field int uBeaconSize
#endstruct
stdim st, DOT11_INCOMING_ASSOC_COMPLETION_PARAMETERS ; NSTRUCT 変数を確保
st->uStatus = 100
mes "uStatus=" + st->uStatus