Win32 API 日本語リファレンス
ホームDevices.Communication › COMMPROP

COMMPROP

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

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

フィールド

フィールドサイズx64x86説明
wPacketLengthWORD2+0+0要求されたデータ量に関係なく、データ パケット全体のサイズ (バイト単位) です。
wPacketVersionWORD2+2+2構造体のバージョンです。
dwServiceMaskDWORD4+4+4このプロバイダーが実装しているサービスを示すビットマスクです。 SP_SERIALCOMM の値は、モデム プロバイダーを含むすべての通信プロバイダーで常に指定されます。
dwReserved1DWORD4+8+8予約済みです。使用しないでください。
dwMaxTxQueueDWORD4+12+12ドライバーの内部出力バッファーの最大サイズ (バイト単位) です。値が 0 の場合は、シリアル プロバイダーによって最大値が課されていないことを示します。
dwMaxRxQueueDWORD4+16+16ドライバーの内部入力バッファーの最大サイズ (バイト単位) です。値が 0 の場合は、シリアル プロバイダーによって最大値が課されていないことを示します。
dwMaxBaudDWORD4+20+20

許容される最大のボー レート (ビット/秒 (bps)) です。このメンバーには次のいずれかの値を指定できます。

説明
BAUD_075
0x00000001
75 bps
BAUD_110
0x00000002
110 bps
BAUD_134_5
0x00000004
134.5 bps
BAUD_150
0x00000008
150 bps
BAUD_300
0x00000010
300 bps
BAUD_600
0x00000020
600 bps
BAUD_1200
0x00000040
1200 bps
BAUD_1800
0x00000080
1800 bps
BAUD_2400
0x00000100
2400 bps
BAUD_4800
0x00000200
4800 bps
BAUD_7200
0x00000400
7200 bps
BAUD_9600
0x00000800
9600 bps
BAUD_14400
0x00001000
14400 bps
BAUD_19200
0x00002000
19200 bps
BAUD_38400
0x00004000
38400 bps
BAUD_56K
0x00008000
56K bps
BAUD_57600
0x00040000
57600 bps
BAUD_115200
0x00020000
115200 bps
BAUD_128K
0x00010000
128K bps
BAUD_USER
0x10000000
プログラム可能なボー レートです。
dwProvSubTypeDWORD4+24+24

通信プロバイダーの種類です。

説明
PST_FAX
0x00000021
FAX デバイス
PST_LAT
0x00000101
LAT プロトコル
PST_MODEM
0x00000006
モデム デバイス
PST_NETWORK_BRIDGE
0x00000100
種類が指定されていないネットワーク ブリッジ
PST_PARALLELPORT
0x00000002
パラレル ポート
PST_RS232
0x00000001
RS-232 シリアル ポート
PST_RS422
0x00000003
RS-422 ポート
PST_RS423
0x00000004
RS-423 ポート
PST_RS449
0x00000005
RS-449 ポート
PST_SCANNER
0x00000022
スキャナー デバイス
PST_TCPIP_TELNET
0x00000102
TCP/IP Telnet プロトコル
PST_UNSPECIFIED
0x00000000
指定なし
PST_X25
0x00000103
X.25 規格
dwProvCapabilitiesDWORD4+28+28

プロバイダーが提供する機能を示すビットマスクです。このメンバーには次の値の組み合わせを指定できます。

説明
PCF_16BITMODE
0x0200
特殊な 16 ビット モードをサポートします
PCF_DTRDSR
0x0001
DTR (データ端末レディ)/DSR (データ セット レディ) をサポートします
PCF_INTTIMEOUTS
0x0080
インターバル タイムアウトをサポートします
PCF_PARITY_CHECK
0x0008
パリティ チェックをサポートします
PCF_RLSD
0x0004
RLSD (受信線信号検出) をサポートします
PCF_RTSCTS
0x0002
RTS (送信要求)/CTS (送信可) をサポートします
PCF_SETXCHAR
0x0020
XON/XOFF の設定変更をサポートします
PCF_SPECIALCHARS
0x0100
特殊文字のサポートが提供されます
PCF_TOTALTIMEOUTS
0x0040
合計 (経過) タイムアウトをサポートします
PCF_XONXOFF
0x0010
XON/XOFF フロー制御をサポートします
dwSettableParamsDWORD4+32+32

変更可能な通信パラメーターを示すビットマスクです。このメンバーには次の値の組み合わせを指定できます。

説明
SP_BAUD
0x0002
ボー レート
SP_DATABITS
0x0004
データ ビット
SP_HANDSHAKING
0x0010
ハンドシェイク (フロー制御)
SP_PARITY
0x0001
パリティ
SP_PARITY_CHECK
0x0020
パリティ チェック
SP_RLSD
0x0040
RLSD (受信線信号検出)
SP_STOPBITS
0x0008
ストップ ビット
dwSettableBaudDWORD4+36+36使用可能なボー レートです。値については dwMaxBaud メンバーを参照してください。
wSettableDataWORD2+40+40

設定可能なデータ ビット数を示すビットマスクです。このメンバーには次の値の組み合わせを指定できます。

説明
DATABITS_5
0x0001
5 データ ビット
DATABITS_6
0x0002
6 データ ビット
DATABITS_7
0x0004
7 データ ビット
DATABITS_8
0x0008
8 データ ビット
DATABITS_16
0x0010
16 データ ビット
DATABITS_16X
0x0020
シリアル ハードウェア ラインを通る特殊なワイド パス
wSettableStopParityCOMMPROP_STOP_PARITY2+42+42

選択可能なストップ ビットとパリティの設定を示すビットマスクです。このメンバーには次の値の組み合わせを指定できます。

説明
STOPBITS_10
0x0001
ストップ ビット 1
STOPBITS_15
0x0002
ストップ ビット 1.5
STOPBITS_20
0x0004
ストップ ビット 2
PARITY_NONE
0x0100
パリティなし
PARITY_ODD
0x0200
奇数パリティ
PARITY_EVEN
0x0400
偶数パリティ
PARITY_MARK
0x0800
マーク パリティ
PARITY_SPACE
0x1000
スペース パリティ
dwCurrentTxQueueDWORD4+44+44ドライバーの内部出力バッファーのサイズ (バイト単位) です。値が 0 の場合は、この値を取得できないことを示します。
dwCurrentRxQueueDWORD4+48+48ドライバーの内部入力バッファーのサイズ (バイト単位) です。値が 0 の場合は、この値を取得できないことを示します。
dwProvSpec1DWORD4+52+52

プロバイダー固有のデータです。プロバイダーが要求するデータの形式に関する詳細な情報がない限り、アプリケーションはこのメンバーを無視してください。

GetCommProperties 関数を呼び出す前にこのメンバーを COMMPROP_INITIALIZED に設定すると、 wPacketLength メンバーが既に有効であることを示します。

dwProvSpec2DWORD4+56+56プロバイダー固有のデータです。プロバイダーが要求するデータの形式に関する詳細な情報がない限り、アプリケーションはこのメンバーを無視してください。
wcProvCharWCHAR2+60+60プロバイダー固有のデータです。プロバイダーが要求するデータの形式に関する詳細な情報がない限り、アプリケーションはこのメンバーを無視してください。

公式ドキュメント

通信ドライバーに関する情報を格納します。

解説(Remarks)

dwProvSpec1dwProvSpec2wcProvChar の各メンバーの内容は、(dwProvSubType メンバーで指定される) プロバイダーのサブタイプによって異なります。

プロバイダーのサブタイプが PST_MODEM の場合、これらのメンバーは次のように使用されます。

説明
dwProvSpec1 使用されません。
dwProvSpec2 使用されません。
wcProvChar MODEMDEVCAPS 構造体を格納します。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#include <windows.h>

// COMMPROP  (x64 64 / x86 64 バイト)
typedef struct COMMPROP {
    WORD wPacketLength;
    WORD wPacketVersion;
    DWORD dwServiceMask;
    DWORD dwReserved1;
    DWORD dwMaxTxQueue;
    DWORD dwMaxRxQueue;
    DWORD dwMaxBaud;
    DWORD dwProvSubType;
    DWORD dwProvCapabilities;
    DWORD dwSettableParams;
    DWORD dwSettableBaud;
    WORD wSettableData;
    COMMPROP_STOP_PARITY wSettableStopParity;
    DWORD dwCurrentTxQueue;
    DWORD dwCurrentRxQueue;
    DWORD dwProvSpec1;
    DWORD dwProvSpec2;
    WCHAR wcProvChar[1];
} COMMPROP;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct COMMPROP
{
    public ushort wPacketLength;
    public ushort wPacketVersion;
    public uint dwServiceMask;
    public uint dwReserved1;
    public uint dwMaxTxQueue;
    public uint dwMaxRxQueue;
    public uint dwMaxBaud;
    public uint dwProvSubType;
    public uint dwProvCapabilities;
    public uint dwSettableParams;
    public uint dwSettableBaud;
    public ushort wSettableData;
    public ushort wSettableStopParity;
    public uint dwCurrentTxQueue;
    public uint dwCurrentRxQueue;
    public uint dwProvSpec1;
    public uint dwProvSpec2;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1)] public string wcProvChar;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure COMMPROP
    Public wPacketLength As UShort
    Public wPacketVersion As UShort
    Public dwServiceMask As UInteger
    Public dwReserved1 As UInteger
    Public dwMaxTxQueue As UInteger
    Public dwMaxRxQueue As UInteger
    Public dwMaxBaud As UInteger
    Public dwProvSubType As UInteger
    Public dwProvCapabilities As UInteger
    Public dwSettableParams As UInteger
    Public dwSettableBaud As UInteger
    Public wSettableData As UShort
    Public wSettableStopParity As UShort
    Public dwCurrentTxQueue As UInteger
    Public dwCurrentRxQueue As UInteger
    Public dwProvSpec1 As UInteger
    Public dwProvSpec2 As UInteger
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=1)> Public wcProvChar As String
End Structure
import ctypes
from ctypes import wintypes

class COMMPROP(ctypes.Structure):
    _fields_ = [
        ("wPacketLength", ctypes.c_ushort),
        ("wPacketVersion", ctypes.c_ushort),
        ("dwServiceMask", wintypes.DWORD),
        ("dwReserved1", wintypes.DWORD),
        ("dwMaxTxQueue", wintypes.DWORD),
        ("dwMaxRxQueue", wintypes.DWORD),
        ("dwMaxBaud", wintypes.DWORD),
        ("dwProvSubType", wintypes.DWORD),
        ("dwProvCapabilities", wintypes.DWORD),
        ("dwSettableParams", wintypes.DWORD),
        ("dwSettableBaud", wintypes.DWORD),
        ("wSettableData", ctypes.c_ushort),
        ("wSettableStopParity", ctypes.c_ushort),
        ("dwCurrentTxQueue", wintypes.DWORD),
        ("dwCurrentRxQueue", wintypes.DWORD),
        ("dwProvSpec1", wintypes.DWORD),
        ("dwProvSpec2", wintypes.DWORD),
        ("wcProvChar", ctypes.c_wchar * 1),
    ]
#[repr(C)]
pub struct COMMPROP {
    pub wPacketLength: u16,
    pub wPacketVersion: u16,
    pub dwServiceMask: u32,
    pub dwReserved1: u32,
    pub dwMaxTxQueue: u32,
    pub dwMaxRxQueue: u32,
    pub dwMaxBaud: u32,
    pub dwProvSubType: u32,
    pub dwProvCapabilities: u32,
    pub dwSettableParams: u32,
    pub dwSettableBaud: u32,
    pub wSettableData: u16,
    pub wSettableStopParity: u16,
    pub dwCurrentTxQueue: u32,
    pub dwCurrentRxQueue: u32,
    pub dwProvSpec1: u32,
    pub dwProvSpec2: u32,
    pub wcProvChar: [u16; 1],
}
import "golang.org/x/sys/windows"

type COMMPROP struct {
	wPacketLength uint16
	wPacketVersion uint16
	dwServiceMask uint32
	dwReserved1 uint32
	dwMaxTxQueue uint32
	dwMaxRxQueue uint32
	dwMaxBaud uint32
	dwProvSubType uint32
	dwProvCapabilities uint32
	dwSettableParams uint32
	dwSettableBaud uint32
	wSettableData uint16
	wSettableStopParity uint16
	dwCurrentTxQueue uint32
	dwCurrentRxQueue uint32
	dwProvSpec1 uint32
	dwProvSpec2 uint32
	wcProvChar [1]uint16
}
type
  COMMPROP = record
    wPacketLength: Word;
    wPacketVersion: Word;
    dwServiceMask: DWORD;
    dwReserved1: DWORD;
    dwMaxTxQueue: DWORD;
    dwMaxRxQueue: DWORD;
    dwMaxBaud: DWORD;
    dwProvSubType: DWORD;
    dwProvCapabilities: DWORD;
    dwSettableParams: DWORD;
    dwSettableBaud: DWORD;
    wSettableData: Word;
    wSettableStopParity: Word;
    dwCurrentTxQueue: DWORD;
    dwCurrentRxQueue: DWORD;
    dwProvSpec1: DWORD;
    dwProvSpec2: DWORD;
    wcProvChar: array[0..0] of WideChar;
  end;
const COMMPROP = extern struct {
    wPacketLength: u16,
    wPacketVersion: u16,
    dwServiceMask: u32,
    dwReserved1: u32,
    dwMaxTxQueue: u32,
    dwMaxRxQueue: u32,
    dwMaxBaud: u32,
    dwProvSubType: u32,
    dwProvCapabilities: u32,
    dwSettableParams: u32,
    dwSettableBaud: u32,
    wSettableData: u16,
    wSettableStopParity: u16,
    dwCurrentTxQueue: u32,
    dwCurrentRxQueue: u32,
    dwProvSpec1: u32,
    dwProvSpec2: u32,
    wcProvChar: [1]u16,
};
type
  COMMPROP {.bycopy.} = object
    wPacketLength: uint16
    wPacketVersion: uint16
    dwServiceMask: uint32
    dwReserved1: uint32
    dwMaxTxQueue: uint32
    dwMaxRxQueue: uint32
    dwMaxBaud: uint32
    dwProvSubType: uint32
    dwProvCapabilities: uint32
    dwSettableParams: uint32
    dwSettableBaud: uint32
    wSettableData: uint16
    wSettableStopParity: uint16
    dwCurrentTxQueue: uint32
    dwCurrentRxQueue: uint32
    dwProvSpec1: uint32
    dwProvSpec2: uint32
    wcProvChar: array[1, uint16]
struct COMMPROP
{
    ushort wPacketLength;
    ushort wPacketVersion;
    uint dwServiceMask;
    uint dwReserved1;
    uint dwMaxTxQueue;
    uint dwMaxRxQueue;
    uint dwMaxBaud;
    uint dwProvSubType;
    uint dwProvCapabilities;
    uint dwSettableParams;
    uint dwSettableBaud;
    ushort wSettableData;
    ushort wSettableStopParity;
    uint dwCurrentTxQueue;
    uint dwCurrentRxQueue;
    uint dwProvSpec1;
    uint dwProvSpec2;
    wchar[1] wcProvChar;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; COMMPROP サイズ: 64 バイト(x64)
dim st, 16    ; 4byte整数×16(構造体サイズ 64 / 4 切り上げ)
; wPacketLength : WORD (+0, 2byte)  wpoke st,0,値  /  値 = wpeek(st,0)
; wPacketVersion : WORD (+2, 2byte)  wpoke st,2,値  /  値 = wpeek(st,2)
; dwServiceMask : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; dwReserved1 : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; dwMaxTxQueue : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; dwMaxRxQueue : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; dwMaxBaud : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; dwProvSubType : DWORD (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; dwProvCapabilities : DWORD (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; dwSettableParams : DWORD (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; dwSettableBaud : DWORD (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; wSettableData : WORD (+40, 2byte)  wpoke st,40,値  /  値 = wpeek(st,40)
; wSettableStopParity : COMMPROP_STOP_PARITY (+42, 2byte)  wpoke st,42,値  /  値 = wpeek(st,42)
; dwCurrentTxQueue : DWORD (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; dwCurrentRxQueue : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; dwProvSpec1 : DWORD (+52, 4byte)  st.13 = 値  /  値 = st.13   (lpoke/lpeek も可)
; dwProvSpec2 : DWORD (+56, 4byte)  st.14 = 値  /  値 = st.14   (lpoke/lpeek も可)
; wcProvChar : WCHAR (+60, 2byte)  varptr(st)+60 を基点に操作(2byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global COMMPROP
    #field short wPacketLength
    #field short wPacketVersion
    #field int dwServiceMask
    #field int dwReserved1
    #field int dwMaxTxQueue
    #field int dwMaxRxQueue
    #field int dwMaxBaud
    #field int dwProvSubType
    #field int dwProvCapabilities
    #field int dwSettableParams
    #field int dwSettableBaud
    #field short wSettableData
    #field short wSettableStopParity
    #field int dwCurrentTxQueue
    #field int dwCurrentRxQueue
    #field int dwProvSpec1
    #field int dwProvSpec2
    #field wchar wcProvChar 1
#endstruct

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