ホーム › Graphics.Printing › MONITOR2
MONITOR2
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| cbSize | DWORD | 4 | +0 | +0 | この構造体のサイズをバイト単位で指定する。 |
| pfnEnumPorts | PFN_PRINTING_ENUMPORTS2 | 8/4 | +8 | +4 | ポートを列挙するモニター関数へのポインター。 |
| pfnOpenPort | PFN_PRINTING_OPENPORT2 | 8/4 | +16 | +8 | ポートを開くモニター関数へのポインター。 |
| pfnOpenPortEx | PFN_PRINTING_OPENPORTEX2 | 8/4 | +24 | +12 | ポートを拡張形式で開くモニター関数へのポインター。 |
| pfnStartDocPort | PFN_PRINTING_STARTDOCPORT2 | 8/4 | +32 | +16 | ポートでのドキュメント開始を行う関数へのポインター。 |
| pfnWritePort | PFN_PRINTING_WRITEPORT2 | 8/4 | +40 | +20 | ポートへの書き込みを行う関数へのポインター。 |
| pfnReadPort | PFN_PRINTING_READPORT2 | 8/4 | +48 | +24 | ポートからの読み取りを行う関数へのポインター。 |
| pfnEndDocPort | PFN_PRINTING_ENDDOCPORT2 | 8/4 | +56 | +28 | ポートでのドキュメント終了を行う関数へのポインター。 |
| pfnClosePort | PFN_PRINTING_CLOSEPORT2 | 8/4 | +64 | +32 | ポートを閉じる関数へのポインター。 |
| pfnAddPort | PFN_PRINTING_ADDPORT2 | 8/4 | +72 | +36 | ポートを追加する関数へのポインター。 |
| pfnAddPortEx | PFN_PRINTING_ADDPORTEX2 | 8/4 | +80 | +40 | ポートを拡張形式で追加する関数へのポインター。 |
| pfnConfigurePort | PFN_PRINTING_CONFIGUREPORT2 | 8/4 | +88 | +44 | ポートを構成する関数へのポインター。 |
| pfnDeletePort | PFN_PRINTING_DELETEPORT2 | 8/4 | +96 | +48 | ポートを削除する関数へのポインター。 |
| pfnGetPrinterDataFromPort | PFN_PRINTING_GETPRINTERDATAFROMPORT2 | 8/4 | +104 | +52 | ポートからプリンターデータを取得する関数へのポインター。 |
| pfnSetPortTimeOuts | PFN_PRINTING_SETPORTTIMEOUTS2 | 8/4 | +112 | +56 | ポートのタイムアウトを設定する関数へのポインター。 |
| pfnXcvOpenPort | PFN_PRINTING_XCVOPENPORT2 | 8/4 | +120 | +60 | XcvでポートをオープンするXcvOpenPort関数へのポインター。 |
| pfnXcvDataPort | PFN_PRINTING_XCVDATAPORT2 | 8/4 | +128 | +64 | Xcvデータ操作を行うXcvDataPort関数へのポインター。 |
| pfnXcvClosePort | PFN_PRINTING_XCVCLOSEPORT2 | 8/4 | +136 | +68 | XcvポートをクローズするXcvClosePort関数へのポインター。 |
| pfnShutdown | PFN_PRINTING_SHUTDOWN2 | 8/4 | +144 | +72 | モニターのシャットダウン処理を行う関数へのポインター。 |
| pfnSendRecvBidiDataFromPort | PFN_PRINTING_SENDRECVBIDIDATAFROMPORT2 | 8/4 | +152 | +76 | ポートに対し双方向(Bidi)データを送受信する関数へのポインター。 |
| pfnNotifyUsedPorts | PFN_PRINTING_NOTIFYUSEDPORTS2 | 8/4 | +160 | +80 | 使用中ポートを通知する関数へのポインター。 |
| pfnNotifyUnusedPorts | PFN_PRINTING_NOTIFYUNUSEDPORTS2 | 8/4 | +168 | +84 | 未使用ポートを通知する関数へのポインター。 |
| pfnPowerEvent | PFN_PRINTING_POWEREVENT2 | 8/4 | +176 | +88 | 電源イベントを処理する関数へのポインター。 |
各言語での定義
#include <windows.h>
// MONITOR2 (x64 184 / x86 92 バイト)
typedef struct MONITOR2 {
DWORD cbSize;
PFN_PRINTING_ENUMPORTS2 pfnEnumPorts;
PFN_PRINTING_OPENPORT2 pfnOpenPort;
PFN_PRINTING_OPENPORTEX2 pfnOpenPortEx;
PFN_PRINTING_STARTDOCPORT2 pfnStartDocPort;
PFN_PRINTING_WRITEPORT2 pfnWritePort;
PFN_PRINTING_READPORT2 pfnReadPort;
PFN_PRINTING_ENDDOCPORT2 pfnEndDocPort;
PFN_PRINTING_CLOSEPORT2 pfnClosePort;
PFN_PRINTING_ADDPORT2 pfnAddPort;
PFN_PRINTING_ADDPORTEX2 pfnAddPortEx;
PFN_PRINTING_CONFIGUREPORT2 pfnConfigurePort;
PFN_PRINTING_DELETEPORT2 pfnDeletePort;
PFN_PRINTING_GETPRINTERDATAFROMPORT2 pfnGetPrinterDataFromPort;
PFN_PRINTING_SETPORTTIMEOUTS2 pfnSetPortTimeOuts;
PFN_PRINTING_XCVOPENPORT2 pfnXcvOpenPort;
PFN_PRINTING_XCVDATAPORT2 pfnXcvDataPort;
PFN_PRINTING_XCVCLOSEPORT2 pfnXcvClosePort;
PFN_PRINTING_SHUTDOWN2 pfnShutdown;
PFN_PRINTING_SENDRECVBIDIDATAFROMPORT2 pfnSendRecvBidiDataFromPort;
PFN_PRINTING_NOTIFYUSEDPORTS2 pfnNotifyUsedPorts;
PFN_PRINTING_NOTIFYUNUSEDPORTS2 pfnNotifyUnusedPorts;
PFN_PRINTING_POWEREVENT2 pfnPowerEvent;
} MONITOR2;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct MONITOR2
{
public uint cbSize;
public IntPtr pfnEnumPorts;
public IntPtr pfnOpenPort;
public IntPtr pfnOpenPortEx;
public IntPtr pfnStartDocPort;
public IntPtr pfnWritePort;
public IntPtr pfnReadPort;
public IntPtr pfnEndDocPort;
public IntPtr pfnClosePort;
public IntPtr pfnAddPort;
public IntPtr pfnAddPortEx;
public IntPtr pfnConfigurePort;
public IntPtr pfnDeletePort;
public IntPtr pfnGetPrinterDataFromPort;
public IntPtr pfnSetPortTimeOuts;
public IntPtr pfnXcvOpenPort;
public IntPtr pfnXcvDataPort;
public IntPtr pfnXcvClosePort;
public IntPtr pfnShutdown;
public IntPtr pfnSendRecvBidiDataFromPort;
public IntPtr pfnNotifyUsedPorts;
public IntPtr pfnNotifyUnusedPorts;
public IntPtr pfnPowerEvent;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure MONITOR2
Public cbSize As UInteger
Public pfnEnumPorts As IntPtr
Public pfnOpenPort As IntPtr
Public pfnOpenPortEx As IntPtr
Public pfnStartDocPort As IntPtr
Public pfnWritePort As IntPtr
Public pfnReadPort As IntPtr
Public pfnEndDocPort As IntPtr
Public pfnClosePort As IntPtr
Public pfnAddPort As IntPtr
Public pfnAddPortEx As IntPtr
Public pfnConfigurePort As IntPtr
Public pfnDeletePort As IntPtr
Public pfnGetPrinterDataFromPort As IntPtr
Public pfnSetPortTimeOuts As IntPtr
Public pfnXcvOpenPort As IntPtr
Public pfnXcvDataPort As IntPtr
Public pfnXcvClosePort As IntPtr
Public pfnShutdown As IntPtr
Public pfnSendRecvBidiDataFromPort As IntPtr
Public pfnNotifyUsedPorts As IntPtr
Public pfnNotifyUnusedPorts As IntPtr
Public pfnPowerEvent As IntPtr
End Structureimport ctypes
from ctypes import wintypes
class MONITOR2(ctypes.Structure):
_fields_ = [
("cbSize", wintypes.DWORD),
("pfnEnumPorts", ctypes.c_void_p),
("pfnOpenPort", ctypes.c_void_p),
("pfnOpenPortEx", ctypes.c_void_p),
("pfnStartDocPort", ctypes.c_void_p),
("pfnWritePort", ctypes.c_void_p),
("pfnReadPort", ctypes.c_void_p),
("pfnEndDocPort", ctypes.c_void_p),
("pfnClosePort", ctypes.c_void_p),
("pfnAddPort", ctypes.c_void_p),
("pfnAddPortEx", ctypes.c_void_p),
("pfnConfigurePort", ctypes.c_void_p),
("pfnDeletePort", ctypes.c_void_p),
("pfnGetPrinterDataFromPort", ctypes.c_void_p),
("pfnSetPortTimeOuts", ctypes.c_void_p),
("pfnXcvOpenPort", ctypes.c_void_p),
("pfnXcvDataPort", ctypes.c_void_p),
("pfnXcvClosePort", ctypes.c_void_p),
("pfnShutdown", ctypes.c_void_p),
("pfnSendRecvBidiDataFromPort", ctypes.c_void_p),
("pfnNotifyUsedPorts", ctypes.c_void_p),
("pfnNotifyUnusedPorts", ctypes.c_void_p),
("pfnPowerEvent", ctypes.c_void_p),
]#[repr(C)]
pub struct MONITOR2 {
pub cbSize: u32,
pub pfnEnumPorts: *mut core::ffi::c_void,
pub pfnOpenPort: *mut core::ffi::c_void,
pub pfnOpenPortEx: *mut core::ffi::c_void,
pub pfnStartDocPort: *mut core::ffi::c_void,
pub pfnWritePort: *mut core::ffi::c_void,
pub pfnReadPort: *mut core::ffi::c_void,
pub pfnEndDocPort: *mut core::ffi::c_void,
pub pfnClosePort: *mut core::ffi::c_void,
pub pfnAddPort: *mut core::ffi::c_void,
pub pfnAddPortEx: *mut core::ffi::c_void,
pub pfnConfigurePort: *mut core::ffi::c_void,
pub pfnDeletePort: *mut core::ffi::c_void,
pub pfnGetPrinterDataFromPort: *mut core::ffi::c_void,
pub pfnSetPortTimeOuts: *mut core::ffi::c_void,
pub pfnXcvOpenPort: *mut core::ffi::c_void,
pub pfnXcvDataPort: *mut core::ffi::c_void,
pub pfnXcvClosePort: *mut core::ffi::c_void,
pub pfnShutdown: *mut core::ffi::c_void,
pub pfnSendRecvBidiDataFromPort: *mut core::ffi::c_void,
pub pfnNotifyUsedPorts: *mut core::ffi::c_void,
pub pfnNotifyUnusedPorts: *mut core::ffi::c_void,
pub pfnPowerEvent: *mut core::ffi::c_void,
}import "golang.org/x/sys/windows"
type MONITOR2 struct {
cbSize uint32
pfnEnumPorts uintptr
pfnOpenPort uintptr
pfnOpenPortEx uintptr
pfnStartDocPort uintptr
pfnWritePort uintptr
pfnReadPort uintptr
pfnEndDocPort uintptr
pfnClosePort uintptr
pfnAddPort uintptr
pfnAddPortEx uintptr
pfnConfigurePort uintptr
pfnDeletePort uintptr
pfnGetPrinterDataFromPort uintptr
pfnSetPortTimeOuts uintptr
pfnXcvOpenPort uintptr
pfnXcvDataPort uintptr
pfnXcvClosePort uintptr
pfnShutdown uintptr
pfnSendRecvBidiDataFromPort uintptr
pfnNotifyUsedPorts uintptr
pfnNotifyUnusedPorts uintptr
pfnPowerEvent uintptr
}type
MONITOR2 = record
cbSize: DWORD;
pfnEnumPorts: Pointer;
pfnOpenPort: Pointer;
pfnOpenPortEx: Pointer;
pfnStartDocPort: Pointer;
pfnWritePort: Pointer;
pfnReadPort: Pointer;
pfnEndDocPort: Pointer;
pfnClosePort: Pointer;
pfnAddPort: Pointer;
pfnAddPortEx: Pointer;
pfnConfigurePort: Pointer;
pfnDeletePort: Pointer;
pfnGetPrinterDataFromPort: Pointer;
pfnSetPortTimeOuts: Pointer;
pfnXcvOpenPort: Pointer;
pfnXcvDataPort: Pointer;
pfnXcvClosePort: Pointer;
pfnShutdown: Pointer;
pfnSendRecvBidiDataFromPort: Pointer;
pfnNotifyUsedPorts: Pointer;
pfnNotifyUnusedPorts: Pointer;
pfnPowerEvent: Pointer;
end;const MONITOR2 = extern struct {
cbSize: u32,
pfnEnumPorts: ?*anyopaque,
pfnOpenPort: ?*anyopaque,
pfnOpenPortEx: ?*anyopaque,
pfnStartDocPort: ?*anyopaque,
pfnWritePort: ?*anyopaque,
pfnReadPort: ?*anyopaque,
pfnEndDocPort: ?*anyopaque,
pfnClosePort: ?*anyopaque,
pfnAddPort: ?*anyopaque,
pfnAddPortEx: ?*anyopaque,
pfnConfigurePort: ?*anyopaque,
pfnDeletePort: ?*anyopaque,
pfnGetPrinterDataFromPort: ?*anyopaque,
pfnSetPortTimeOuts: ?*anyopaque,
pfnXcvOpenPort: ?*anyopaque,
pfnXcvDataPort: ?*anyopaque,
pfnXcvClosePort: ?*anyopaque,
pfnShutdown: ?*anyopaque,
pfnSendRecvBidiDataFromPort: ?*anyopaque,
pfnNotifyUsedPorts: ?*anyopaque,
pfnNotifyUnusedPorts: ?*anyopaque,
pfnPowerEvent: ?*anyopaque,
};type
MONITOR2 {.bycopy.} = object
cbSize: uint32
pfnEnumPorts: pointer
pfnOpenPort: pointer
pfnOpenPortEx: pointer
pfnStartDocPort: pointer
pfnWritePort: pointer
pfnReadPort: pointer
pfnEndDocPort: pointer
pfnClosePort: pointer
pfnAddPort: pointer
pfnAddPortEx: pointer
pfnConfigurePort: pointer
pfnDeletePort: pointer
pfnGetPrinterDataFromPort: pointer
pfnSetPortTimeOuts: pointer
pfnXcvOpenPort: pointer
pfnXcvDataPort: pointer
pfnXcvClosePort: pointer
pfnShutdown: pointer
pfnSendRecvBidiDataFromPort: pointer
pfnNotifyUsedPorts: pointer
pfnNotifyUnusedPorts: pointer
pfnPowerEvent: pointerstruct MONITOR2
{
uint cbSize;
void* pfnEnumPorts;
void* pfnOpenPort;
void* pfnOpenPortEx;
void* pfnStartDocPort;
void* pfnWritePort;
void* pfnReadPort;
void* pfnEndDocPort;
void* pfnClosePort;
void* pfnAddPort;
void* pfnAddPortEx;
void* pfnConfigurePort;
void* pfnDeletePort;
void* pfnGetPrinterDataFromPort;
void* pfnSetPortTimeOuts;
void* pfnXcvOpenPort;
void* pfnXcvDataPort;
void* pfnXcvClosePort;
void* pfnShutdown;
void* pfnSendRecvBidiDataFromPort;
void* pfnNotifyUsedPorts;
void* pfnNotifyUnusedPorts;
void* pfnPowerEvent;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; MONITOR2 サイズ: 92 バイト(x86)
dim st, 23 ; 4byte整数×23(構造体サイズ 92 / 4 切り上げ)
; cbSize : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; pfnEnumPorts : PFN_PRINTING_ENUMPORTS2 (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; pfnOpenPort : PFN_PRINTING_OPENPORT2 (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; pfnOpenPortEx : PFN_PRINTING_OPENPORTEX2 (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; pfnStartDocPort : PFN_PRINTING_STARTDOCPORT2 (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; pfnWritePort : PFN_PRINTING_WRITEPORT2 (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; pfnReadPort : PFN_PRINTING_READPORT2 (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; pfnEndDocPort : PFN_PRINTING_ENDDOCPORT2 (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; pfnClosePort : PFN_PRINTING_CLOSEPORT2 (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; pfnAddPort : PFN_PRINTING_ADDPORT2 (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; pfnAddPortEx : PFN_PRINTING_ADDPORTEX2 (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; pfnConfigurePort : PFN_PRINTING_CONFIGUREPORT2 (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; pfnDeletePort : PFN_PRINTING_DELETEPORT2 (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; pfnGetPrinterDataFromPort : PFN_PRINTING_GETPRINTERDATAFROMPORT2 (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; pfnSetPortTimeOuts : PFN_PRINTING_SETPORTTIMEOUTS2 (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; pfnXcvOpenPort : PFN_PRINTING_XCVOPENPORT2 (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; pfnXcvDataPort : PFN_PRINTING_XCVDATAPORT2 (+64, 4byte) st.16 = 値 / 値 = st.16 (lpoke/lpeek も可)
; pfnXcvClosePort : PFN_PRINTING_XCVCLOSEPORT2 (+68, 4byte) st.17 = 値 / 値 = st.17 (lpoke/lpeek も可)
; pfnShutdown : PFN_PRINTING_SHUTDOWN2 (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; pfnSendRecvBidiDataFromPort : PFN_PRINTING_SENDRECVBIDIDATAFROMPORT2 (+76, 4byte) st.19 = 値 / 値 = st.19 (lpoke/lpeek も可)
; pfnNotifyUsedPorts : PFN_PRINTING_NOTIFYUSEDPORTS2 (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; pfnNotifyUnusedPorts : PFN_PRINTING_NOTIFYUNUSEDPORTS2 (+84, 4byte) st.21 = 値 / 値 = st.21 (lpoke/lpeek も可)
; pfnPowerEvent : PFN_PRINTING_POWEREVENT2 (+88, 4byte) st.22 = 値 / 値 = st.22 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; MONITOR2 サイズ: 184 バイト(x64)
dim st, 46 ; 4byte整数×46(構造体サイズ 184 / 4 切り上げ)
; cbSize : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; pfnEnumPorts : PFN_PRINTING_ENUMPORTS2 (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; pfnOpenPort : PFN_PRINTING_OPENPORT2 (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; pfnOpenPortEx : PFN_PRINTING_OPENPORTEX2 (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; pfnStartDocPort : PFN_PRINTING_STARTDOCPORT2 (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; pfnWritePort : PFN_PRINTING_WRITEPORT2 (+40, 8byte) qpoke st,40,値 / qpeek(st,40) ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; pfnReadPort : PFN_PRINTING_READPORT2 (+48, 8byte) qpoke st,48,値 / qpeek(st,48) ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; pfnEndDocPort : PFN_PRINTING_ENDDOCPORT2 (+56, 8byte) qpoke st,56,値 / qpeek(st,56) ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; pfnClosePort : PFN_PRINTING_CLOSEPORT2 (+64, 8byte) qpoke st,64,値 / qpeek(st,64) ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; pfnAddPort : PFN_PRINTING_ADDPORT2 (+72, 8byte) qpoke st,72,値 / qpeek(st,72) ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; pfnAddPortEx : PFN_PRINTING_ADDPORTEX2 (+80, 8byte) qpoke st,80,値 / qpeek(st,80) ※IronHSPのみ。3.7/3.8は lpoke st,80,下位 : lpoke st,84,上位
; pfnConfigurePort : PFN_PRINTING_CONFIGUREPORT2 (+88, 8byte) qpoke st,88,値 / qpeek(st,88) ※IronHSPのみ。3.7/3.8は lpoke st,88,下位 : lpoke st,92,上位
; pfnDeletePort : PFN_PRINTING_DELETEPORT2 (+96, 8byte) qpoke st,96,値 / qpeek(st,96) ※IronHSPのみ。3.7/3.8は lpoke st,96,下位 : lpoke st,100,上位
; pfnGetPrinterDataFromPort : PFN_PRINTING_GETPRINTERDATAFROMPORT2 (+104, 8byte) qpoke st,104,値 / qpeek(st,104) ※IronHSPのみ。3.7/3.8は lpoke st,104,下位 : lpoke st,108,上位
; pfnSetPortTimeOuts : PFN_PRINTING_SETPORTTIMEOUTS2 (+112, 8byte) qpoke st,112,値 / qpeek(st,112) ※IronHSPのみ。3.7/3.8は lpoke st,112,下位 : lpoke st,116,上位
; pfnXcvOpenPort : PFN_PRINTING_XCVOPENPORT2 (+120, 8byte) qpoke st,120,値 / qpeek(st,120) ※IronHSPのみ。3.7/3.8は lpoke st,120,下位 : lpoke st,124,上位
; pfnXcvDataPort : PFN_PRINTING_XCVDATAPORT2 (+128, 8byte) qpoke st,128,値 / qpeek(st,128) ※IronHSPのみ。3.7/3.8は lpoke st,128,下位 : lpoke st,132,上位
; pfnXcvClosePort : PFN_PRINTING_XCVCLOSEPORT2 (+136, 8byte) qpoke st,136,値 / qpeek(st,136) ※IronHSPのみ。3.7/3.8は lpoke st,136,下位 : lpoke st,140,上位
; pfnShutdown : PFN_PRINTING_SHUTDOWN2 (+144, 8byte) qpoke st,144,値 / qpeek(st,144) ※IronHSPのみ。3.7/3.8は lpoke st,144,下位 : lpoke st,148,上位
; pfnSendRecvBidiDataFromPort : PFN_PRINTING_SENDRECVBIDIDATAFROMPORT2 (+152, 8byte) qpoke st,152,値 / qpeek(st,152) ※IronHSPのみ。3.7/3.8は lpoke st,152,下位 : lpoke st,156,上位
; pfnNotifyUsedPorts : PFN_PRINTING_NOTIFYUSEDPORTS2 (+160, 8byte) qpoke st,160,値 / qpeek(st,160) ※IronHSPのみ。3.7/3.8は lpoke st,160,下位 : lpoke st,164,上位
; pfnNotifyUnusedPorts : PFN_PRINTING_NOTIFYUNUSEDPORTS2 (+168, 8byte) qpoke st,168,値 / qpeek(st,168) ※IronHSPのみ。3.7/3.8は lpoke st,168,下位 : lpoke st,172,上位
; pfnPowerEvent : PFN_PRINTING_POWEREVENT2 (+176, 8byte) qpoke st,176,値 / qpeek(st,176) ※IronHSPのみ。3.7/3.8は lpoke st,176,下位 : lpoke st,180,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global MONITOR2
#field int cbSize
#field intptr pfnEnumPorts
#field intptr pfnOpenPort
#field intptr pfnOpenPortEx
#field intptr pfnStartDocPort
#field intptr pfnWritePort
#field intptr pfnReadPort
#field intptr pfnEndDocPort
#field intptr pfnClosePort
#field intptr pfnAddPort
#field intptr pfnAddPortEx
#field intptr pfnConfigurePort
#field intptr pfnDeletePort
#field intptr pfnGetPrinterDataFromPort
#field intptr pfnSetPortTimeOuts
#field intptr pfnXcvOpenPort
#field intptr pfnXcvDataPort
#field intptr pfnXcvClosePort
#field intptr pfnShutdown
#field intptr pfnSendRecvBidiDataFromPort
#field intptr pfnNotifyUsedPorts
#field intptr pfnNotifyUnusedPorts
#field intptr pfnPowerEvent
#endstruct
stdim st, MONITOR2 ; NSTRUCT 変数を確保
st->cbSize = 100
mes "cbSize=" + st->cbSize