Win32 API 日本語リファレンス
ホームSystem.Diagnostics.Debug › ADDRESS

ADDRESS

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

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

フィールド

フィールドサイズx64x86説明
OffsetDWORD4+0+0アドレスのオフセット部(32ビット)を示す。
SegmentWORD2+4+4アドレスのセグメント部を示す。
ModeADDRESS_MODE4+8+8アドレッシングモードを示す ADDRESS_MODE 値。

公式ドキュメント

ADDRESS 構造体は廃止されており、使用しないでください。

解説(Remarks)

Type

アドレスの種類です。次のいずれかの値を指定できます:

ADDRESS_TYPE_ETHERNET
ADDRESS_TYPE_IP
ADDRESS_TYPE_IPX
ADDRESS_TYPE_TOKENRING
ADDRESS_TYPE_FDDI
ADDRESS_TYPE_XNS
ADDRESS_TYPE_ANY
ADDRESS_TYPE_ANY_GROUP
ADDRESS_TYPE_FIND_HIGHEST
ADDRESS_TYPE_VINES_IP
ADDRESS_TYPE_LOCAL_ONLY
ADDRESS_TYPE_ATM
ADDRESS_TYPE_1394

MACAddress

生の MAC アドレスとして表現したデータのビューです。

IPAddress

生の IP アドレスとして表現したデータのビューです。

IPXRawAddress

生の IPX アドレスとして表現したデータのビューです。

IPXAddress

デコードされた IPX アドレス値として表現したデータのビューです。

VinesIPRawAddress

生の Vines IP アドレスとして表現したデータのビューです。

VinesIPAddress

デコードされた Vines IP アドレスとして表現したデータのビューです。

EthernetSrcAddress

イーサネットの送信元アドレスとして表現したデータのビューです。

EthernetDstAddress

イーサネットの宛先アドレスとして表現したデータのビューです。

TokenringSrcAddress

トークンリングの送信元アドレスとしてのデータのビューです。

TokenringDstAddress

トークンリングの宛先アドレスとしてのデータのビューです。

FddiSrcAddress

FDDI の送信元アドレスとして表現したデータのビューです。

FddiDstAddress

FDDI の宛先アドレスとして表現したデータのビューです。

Flags

アドレスのプロパティを変更するフラグのセットです。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp)

各言語での定義

#include <windows.h>

// ADDRESS  (x64 12 / x86 12 バイト)
typedef struct ADDRESS {
    DWORD Offset;
    WORD Segment;
    ADDRESS_MODE Mode;
} ADDRESS;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct ADDRESS
{
    public uint Offset;
    public ushort Segment;
    public int Mode;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure ADDRESS
    Public Offset As UInteger
    Public Segment As UShort
    Public Mode As Integer
End Structure
import ctypes
from ctypes import wintypes

class ADDRESS(ctypes.Structure):
    _fields_ = [
        ("Offset", wintypes.DWORD),
        ("Segment", ctypes.c_ushort),
        ("Mode", ctypes.c_int),
    ]
#[repr(C)]
pub struct ADDRESS {
    pub Offset: u32,
    pub Segment: u16,
    pub Mode: i32,
}
import "golang.org/x/sys/windows"

type ADDRESS struct {
	Offset uint32
	Segment uint16
	Mode int32
}
type
  ADDRESS = record
    Offset: DWORD;
    Segment: Word;
    Mode: Integer;
  end;
const ADDRESS = extern struct {
    Offset: u32,
    Segment: u16,
    Mode: i32,
};
type
  ADDRESS {.bycopy.} = object
    Offset: uint32
    Segment: uint16
    Mode: int32
struct ADDRESS
{
    uint Offset;
    ushort Segment;
    int Mode;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; ADDRESS サイズ: 12 バイト(x64)
dim st, 3    ; 4byte整数×3(構造体サイズ 12 / 4 切り上げ)
; Offset : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; Segment : WORD (+4, 2byte)  wpoke st,4,値  /  値 = wpeek(st,4)
; Mode : ADDRESS_MODE (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global ADDRESS
    #field int Offset
    #field short Segment
    #field int Mode
#endstruct

stdim st, ADDRESS        ; NSTRUCT 変数を確保
st->Offset = 100
mes "Offset=" + st->Offset