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

DOT11_INCOMING_ASSOC_COMPLETION_PARAMETERS

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

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

フィールド

フィールドサイズx64x86説明
HeaderNDIS_OBJECT_HEADER4+0+0NDISオブジェクトの種類・リビジョン・サイズを示す共通ヘッダー。
PeerMacAddrBYTE6+4+4アソシエーションが完了したピアのMACアドレス(6バイト)。
uStatusDWORD4+12+12アソシエーション完了の状態コード。
ucErrorSourceBYTE1+16+16エラーの発生源を示すコード。
bReAssocReqBOOLEAN1+17+17受信したのが再アソシエーション要求であるかを示す真偽値。
bReAssocRespBOOLEAN1+18+18送信したのが再アソシエーション応答であるかを示す真偽値。
uAssocReqOffsetDWORD4+20+20アソシエーション要求フレーム本体への先頭からのオフセット(バイト)。
uAssocReqSizeDWORD4+24+24アソシエーション要求フレーム本体のサイズ(バイト)。
uAssocRespOffsetDWORD4+28+28アソシエーション応答フレーム本体への先頭からのオフセット(バイト)。
uAssocRespSizeDWORD4+32+32アソシエーション応答フレーム本体のサイズ(バイト)。
AuthAlgoDOT11_AUTH_ALGORITHM4+36+36使用された認証アルゴリズム。
UnicastCipherDOT11_CIPHER_ALGORITHM4+40+40ユニキャスト通信に使用される暗号アルゴリズム。
MulticastCipherDOT11_CIPHER_ALGORITHM4+44+44マルチキャスト通信に使用される暗号アルゴリズム。
uActivePhyListOffsetDWORD4+48+48アクティブPHYリストへの先頭からのオフセット(バイト)。
uActivePhyListSizeDWORD4+52+52アクティブPHYリストのサイズ(バイト)。
uBeaconOffsetDWORD4+56+56ビーコンフレーム本体への先頭からのオフセット(バイト)。
uBeaconSizeDWORD4+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 Structure
import 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: uint32
struct 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