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

FAX_CONFIGURATIONA

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

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

フィールド

フィールドサイズx64x86説明
SizeOfStructDWORD4+0+0この構造体のサイズをバイト単位で示すDWORD。
RetriesDWORD4+4+4送信失敗時の再試行回数を示すDWORD。
RetryDelayDWORD4+8+8再試行までの待機時間を分単位で示すDWORD。
DirtyDaysDWORD4+12+12未送信ジョブをキューに保持する日数を示すDWORD。
BrandingBOOL4+16+16送信ファクスにブランディング(ヘッダ情報)を付与するかを示すBOOL。
UseDeviceTsidBOOL4+20+20デバイス側のTSIDを使用するかを示すBOOL。
ServerCpBOOL4+24+24サーバ側のカバーページを使用するかを示すBOOL。
PauseServerQueueBOOL4+28+28サーバの送信キューを一時停止するかを示すBOOL。
StartCheapTimeFAX_TIME4+32+32割安時間帯(低料金)の開始時刻を示すFAX_TIME。
StopCheapTimeFAX_TIME4+36+36割安時間帯(低料金)の終了時刻を示すFAX_TIME。
ArchiveOutgoingFaxesBOOL4+40+40送信済みファクスをアーカイブするかを示すBOOL。
ArchiveDirectoryLPSTR8/4+48+44アーカイブ先ディレクトリのパスを指すANSI文字列。
ReservedLPSTR8/4+56+48予約フィールド。将来の拡張用でNULLにすべき。

各言語での定義

#include <windows.h>

// FAX_TIME  (x64 4 / x86 4 バイト)
typedef struct FAX_TIME {
    WORD Hour;
    WORD Minute;
} FAX_TIME;

// FAX_CONFIGURATIONA  (x64 64 / x86 52 バイト)
typedef struct FAX_CONFIGURATIONA {
    DWORD SizeOfStruct;
    DWORD Retries;
    DWORD RetryDelay;
    DWORD DirtyDays;
    BOOL Branding;
    BOOL UseDeviceTsid;
    BOOL ServerCp;
    BOOL PauseServerQueue;
    FAX_TIME StartCheapTime;
    FAX_TIME StopCheapTime;
    BOOL ArchiveOutgoingFaxes;
    LPSTR ArchiveDirectory;
    LPSTR Reserved;
} FAX_CONFIGURATIONA;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct FAX_TIME
{
    public ushort Hour;
    public ushort Minute;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct FAX_CONFIGURATIONA
{
    public uint SizeOfStruct;
    public uint Retries;
    public uint RetryDelay;
    public uint DirtyDays;
    [MarshalAs(UnmanagedType.Bool)] public bool Branding;
    [MarshalAs(UnmanagedType.Bool)] public bool UseDeviceTsid;
    [MarshalAs(UnmanagedType.Bool)] public bool ServerCp;
    [MarshalAs(UnmanagedType.Bool)] public bool PauseServerQueue;
    public FAX_TIME StartCheapTime;
    public FAX_TIME StopCheapTime;
    [MarshalAs(UnmanagedType.Bool)] public bool ArchiveOutgoingFaxes;
    public IntPtr ArchiveDirectory;
    public IntPtr Reserved;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure FAX_TIME
    Public Hour As UShort
    Public Minute As UShort
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure FAX_CONFIGURATIONA
    Public SizeOfStruct As UInteger
    Public Retries As UInteger
    Public RetryDelay As UInteger
    Public DirtyDays As UInteger
    <MarshalAs(UnmanagedType.Bool)> Public Branding As Boolean
    <MarshalAs(UnmanagedType.Bool)> Public UseDeviceTsid As Boolean
    <MarshalAs(UnmanagedType.Bool)> Public ServerCp As Boolean
    <MarshalAs(UnmanagedType.Bool)> Public PauseServerQueue As Boolean
    Public StartCheapTime As FAX_TIME
    Public StopCheapTime As FAX_TIME
    <MarshalAs(UnmanagedType.Bool)> Public ArchiveOutgoingFaxes As Boolean
    Public ArchiveDirectory As IntPtr
    Public Reserved As IntPtr
End Structure
import ctypes
from ctypes import wintypes

class FAX_TIME(ctypes.Structure):
    _fields_ = [
        ("Hour", ctypes.c_ushort),
        ("Minute", ctypes.c_ushort),
    ]

class FAX_CONFIGURATIONA(ctypes.Structure):
    _fields_ = [
        ("SizeOfStruct", wintypes.DWORD),
        ("Retries", wintypes.DWORD),
        ("RetryDelay", wintypes.DWORD),
        ("DirtyDays", wintypes.DWORD),
        ("Branding", wintypes.BOOL),
        ("UseDeviceTsid", wintypes.BOOL),
        ("ServerCp", wintypes.BOOL),
        ("PauseServerQueue", wintypes.BOOL),
        ("StartCheapTime", FAX_TIME),
        ("StopCheapTime", FAX_TIME),
        ("ArchiveOutgoingFaxes", wintypes.BOOL),
        ("ArchiveDirectory", ctypes.c_void_p),
        ("Reserved", ctypes.c_void_p),
    ]
#[repr(C)]
pub struct FAX_TIME {
    pub Hour: u16,
    pub Minute: u16,
}

#[repr(C)]
pub struct FAX_CONFIGURATIONA {
    pub SizeOfStruct: u32,
    pub Retries: u32,
    pub RetryDelay: u32,
    pub DirtyDays: u32,
    pub Branding: i32,
    pub UseDeviceTsid: i32,
    pub ServerCp: i32,
    pub PauseServerQueue: i32,
    pub StartCheapTime: FAX_TIME,
    pub StopCheapTime: FAX_TIME,
    pub ArchiveOutgoingFaxes: i32,
    pub ArchiveDirectory: *mut core::ffi::c_void,
    pub Reserved: *mut core::ffi::c_void,
}
import "golang.org/x/sys/windows"

type FAX_TIME struct {
	Hour uint16
	Minute uint16
}

type FAX_CONFIGURATIONA struct {
	SizeOfStruct uint32
	Retries uint32
	RetryDelay uint32
	DirtyDays uint32
	Branding int32
	UseDeviceTsid int32
	ServerCp int32
	PauseServerQueue int32
	StartCheapTime FAX_TIME
	StopCheapTime FAX_TIME
	ArchiveOutgoingFaxes int32
	ArchiveDirectory uintptr
	Reserved uintptr
}
type
  FAX_TIME = record
    Hour: Word;
    Minute: Word;
  end;

  FAX_CONFIGURATIONA = record
    SizeOfStruct: DWORD;
    Retries: DWORD;
    RetryDelay: DWORD;
    DirtyDays: DWORD;
    Branding: BOOL;
    UseDeviceTsid: BOOL;
    ServerCp: BOOL;
    PauseServerQueue: BOOL;
    StartCheapTime: FAX_TIME;
    StopCheapTime: FAX_TIME;
    ArchiveOutgoingFaxes: BOOL;
    ArchiveDirectory: Pointer;
    Reserved: Pointer;
  end;
const FAX_TIME = extern struct {
    Hour: u16,
    Minute: u16,
};

const FAX_CONFIGURATIONA = extern struct {
    SizeOfStruct: u32,
    Retries: u32,
    RetryDelay: u32,
    DirtyDays: u32,
    Branding: i32,
    UseDeviceTsid: i32,
    ServerCp: i32,
    PauseServerQueue: i32,
    StartCheapTime: FAX_TIME,
    StopCheapTime: FAX_TIME,
    ArchiveOutgoingFaxes: i32,
    ArchiveDirectory: ?*anyopaque,
    Reserved: ?*anyopaque,
};
type
  FAX_TIME {.bycopy.} = object
    Hour: uint16
    Minute: uint16

  FAX_CONFIGURATIONA {.bycopy.} = object
    SizeOfStruct: uint32
    Retries: uint32
    RetryDelay: uint32
    DirtyDays: uint32
    Branding: int32
    UseDeviceTsid: int32
    ServerCp: int32
    PauseServerQueue: int32
    StartCheapTime: FAX_TIME
    StopCheapTime: FAX_TIME
    ArchiveOutgoingFaxes: int32
    ArchiveDirectory: pointer
    Reserved: pointer
struct FAX_TIME
{
    ushort Hour;
    ushort Minute;
}

struct FAX_CONFIGURATIONA
{
    uint SizeOfStruct;
    uint Retries;
    uint RetryDelay;
    uint DirtyDays;
    int Branding;
    int UseDeviceTsid;
    int ServerCp;
    int PauseServerQueue;
    FAX_TIME StartCheapTime;
    FAX_TIME StopCheapTime;
    int ArchiveOutgoingFaxes;
    void* ArchiveDirectory;
    void* Reserved;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; FAX_CONFIGURATIONA サイズ: 52 バイト(x86)
dim st, 13    ; 4byte整数×13(構造体サイズ 52 / 4 切り上げ)
; SizeOfStruct : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; Retries : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; RetryDelay : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; DirtyDays : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; Branding : BOOL (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; UseDeviceTsid : BOOL (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; ServerCp : BOOL (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; PauseServerQueue : BOOL (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; StartCheapTime : FAX_TIME (+32, 4byte)  varptr(st)+32 を基点に操作(4byte:入れ子/配列)
; StopCheapTime : FAX_TIME (+36, 4byte)  varptr(st)+36 を基点に操作(4byte:入れ子/配列)
; ArchiveOutgoingFaxes : BOOL (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; ArchiveDirectory : LPSTR (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; Reserved : LPSTR (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; FAX_CONFIGURATIONA サイズ: 64 バイト(x64)
dim st, 16    ; 4byte整数×16(構造体サイズ 64 / 4 切り上げ)
; SizeOfStruct : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; Retries : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; RetryDelay : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; DirtyDays : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; Branding : BOOL (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; UseDeviceTsid : BOOL (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; ServerCp : BOOL (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; PauseServerQueue : BOOL (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; StartCheapTime : FAX_TIME (+32, 4byte)  varptr(st)+32 を基点に操作(4byte:入れ子/配列)
; StopCheapTime : FAX_TIME (+36, 4byte)  varptr(st)+36 を基点に操作(4byte:入れ子/配列)
; ArchiveOutgoingFaxes : BOOL (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; ArchiveDirectory : LPSTR (+48, 8byte)  qpoke st,48,値 / qpeek(st,48)  ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; Reserved : LPSTR (+56, 8byte)  qpoke st,56,値 / qpeek(st,56)  ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global FAX_TIME
    #field short Hour
    #field short Minute
#endstruct

#defstruct global FAX_CONFIGURATIONA
    #field int SizeOfStruct
    #field int Retries
    #field int RetryDelay
    #field int DirtyDays
    #field bool Branding
    #field bool UseDeviceTsid
    #field bool ServerCp
    #field bool PauseServerQueue
    #field FAX_TIME StartCheapTime
    #field FAX_TIME StopCheapTime
    #field bool ArchiveOutgoingFaxes
    #field intptr ArchiveDirectory
    #field intptr Reserved
#endstruct

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