Win32 API 日本語リファレンス
ホームNetworking.WinSock › LM_IRPARMS

LM_IRPARMS

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

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

フィールド

フィールドサイズx64x86説明
nTXDataBytesDWORD4+0+0送信データのバイト数である。
nRXDataBytesDWORD4+4+4受信データのバイト数である。
nBaudRateDWORD4+8+8IrDAリンクのボーレート(通信速度)である。
thresholdTimeDWORD4+12+12閾値時間(ターンアラウンド遅延)である。
discTimeDWORD4+16+16切断までのタイムアウト時間である。
nMSLinkTurnWORD2+20+20リンクターンアラウンド時間をミリ秒単位で示す。
nTXPacketsBYTE1+22+22送信ウィンドウのパケット数である。
nRXPacketsBYTE1+23+23受信ウィンドウのパケット数である。

各言語での定義

#include <windows.h>

// LM_IRPARMS  (x64 24 / x86 24 バイト)
typedef struct LM_IRPARMS {
    DWORD nTXDataBytes;
    DWORD nRXDataBytes;
    DWORD nBaudRate;
    DWORD thresholdTime;
    DWORD discTime;
    WORD nMSLinkTurn;
    BYTE nTXPackets;
    BYTE nRXPackets;
} LM_IRPARMS;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct LM_IRPARMS
{
    public uint nTXDataBytes;
    public uint nRXDataBytes;
    public uint nBaudRate;
    public uint thresholdTime;
    public uint discTime;
    public ushort nMSLinkTurn;
    public byte nTXPackets;
    public byte nRXPackets;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure LM_IRPARMS
    Public nTXDataBytes As UInteger
    Public nRXDataBytes As UInteger
    Public nBaudRate As UInteger
    Public thresholdTime As UInteger
    Public discTime As UInteger
    Public nMSLinkTurn As UShort
    Public nTXPackets As Byte
    Public nRXPackets As Byte
End Structure
import ctypes
from ctypes import wintypes

class LM_IRPARMS(ctypes.Structure):
    _fields_ = [
        ("nTXDataBytes", wintypes.DWORD),
        ("nRXDataBytes", wintypes.DWORD),
        ("nBaudRate", wintypes.DWORD),
        ("thresholdTime", wintypes.DWORD),
        ("discTime", wintypes.DWORD),
        ("nMSLinkTurn", ctypes.c_ushort),
        ("nTXPackets", ctypes.c_ubyte),
        ("nRXPackets", ctypes.c_ubyte),
    ]
#[repr(C)]
pub struct LM_IRPARMS {
    pub nTXDataBytes: u32,
    pub nRXDataBytes: u32,
    pub nBaudRate: u32,
    pub thresholdTime: u32,
    pub discTime: u32,
    pub nMSLinkTurn: u16,
    pub nTXPackets: u8,
    pub nRXPackets: u8,
}
import "golang.org/x/sys/windows"

type LM_IRPARMS struct {
	nTXDataBytes uint32
	nRXDataBytes uint32
	nBaudRate uint32
	thresholdTime uint32
	discTime uint32
	nMSLinkTurn uint16
	nTXPackets byte
	nRXPackets byte
}
type
  LM_IRPARMS = record
    nTXDataBytes: DWORD;
    nRXDataBytes: DWORD;
    nBaudRate: DWORD;
    thresholdTime: DWORD;
    discTime: DWORD;
    nMSLinkTurn: Word;
    nTXPackets: Byte;
    nRXPackets: Byte;
  end;
const LM_IRPARMS = extern struct {
    nTXDataBytes: u32,
    nRXDataBytes: u32,
    nBaudRate: u32,
    thresholdTime: u32,
    discTime: u32,
    nMSLinkTurn: u16,
    nTXPackets: u8,
    nRXPackets: u8,
};
type
  LM_IRPARMS {.bycopy.} = object
    nTXDataBytes: uint32
    nRXDataBytes: uint32
    nBaudRate: uint32
    thresholdTime: uint32
    discTime: uint32
    nMSLinkTurn: uint16
    nTXPackets: uint8
    nRXPackets: uint8
struct LM_IRPARMS
{
    uint nTXDataBytes;
    uint nRXDataBytes;
    uint nBaudRate;
    uint thresholdTime;
    uint discTime;
    ushort nMSLinkTurn;
    ubyte nTXPackets;
    ubyte nRXPackets;
}

HSP用 定義

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

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

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