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

FAX_PRINT_INFOA

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

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

フィールド

フィールドサイズx64x86説明
SizeOfStructDWORD4+0+0この構造体のサイズをバイト単位で示すDWORD。
DocNameLPSTR8/4+8+4印刷/送信するドキュメント名を指すANSI文字列。
RecipientNameLPSTR8/4+16+8受信者名を指すANSI文字列。
RecipientNumberLPSTR8/4+24+12受信者のファクス番号を指すANSI文字列。
SenderNameLPSTR8/4+32+16送信者名を指すANSI文字列。
SenderCompanyLPSTR8/4+40+20送信者の会社名を指すANSI文字列。
SenderDeptLPSTR8/4+48+24送信者の部署名を指すANSI文字列。
SenderBillingCodeLPSTR8/4+56+28送信者の課金コードを指すANSI文字列。
ReservedLPSTR8/4+64+32予約フィールド。将来の拡張用でNULLにすべき。
DrEmailAddressLPSTR8/4+72+36配信レポート用メールアドレスを指すANSI文字列。
OutputFileNameLPSTR8/4+80+40出力ファイル名を指すANSI文字列。

各言語での定義

#include <windows.h>

// FAX_PRINT_INFOA  (x64 88 / x86 44 バイト)
typedef struct FAX_PRINT_INFOA {
    DWORD SizeOfStruct;
    LPSTR DocName;
    LPSTR RecipientName;
    LPSTR RecipientNumber;
    LPSTR SenderName;
    LPSTR SenderCompany;
    LPSTR SenderDept;
    LPSTR SenderBillingCode;
    LPSTR Reserved;
    LPSTR DrEmailAddress;
    LPSTR OutputFileName;
} FAX_PRINT_INFOA;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct FAX_PRINT_INFOA
{
    public uint SizeOfStruct;
    public IntPtr DocName;
    public IntPtr RecipientName;
    public IntPtr RecipientNumber;
    public IntPtr SenderName;
    public IntPtr SenderCompany;
    public IntPtr SenderDept;
    public IntPtr SenderBillingCode;
    public IntPtr Reserved;
    public IntPtr DrEmailAddress;
    public IntPtr OutputFileName;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure FAX_PRINT_INFOA
    Public SizeOfStruct As UInteger
    Public DocName As IntPtr
    Public RecipientName As IntPtr
    Public RecipientNumber As IntPtr
    Public SenderName As IntPtr
    Public SenderCompany As IntPtr
    Public SenderDept As IntPtr
    Public SenderBillingCode As IntPtr
    Public Reserved As IntPtr
    Public DrEmailAddress As IntPtr
    Public OutputFileName As IntPtr
End Structure
import ctypes
from ctypes import wintypes

class FAX_PRINT_INFOA(ctypes.Structure):
    _fields_ = [
        ("SizeOfStruct", wintypes.DWORD),
        ("DocName", ctypes.c_void_p),
        ("RecipientName", ctypes.c_void_p),
        ("RecipientNumber", ctypes.c_void_p),
        ("SenderName", ctypes.c_void_p),
        ("SenderCompany", ctypes.c_void_p),
        ("SenderDept", ctypes.c_void_p),
        ("SenderBillingCode", ctypes.c_void_p),
        ("Reserved", ctypes.c_void_p),
        ("DrEmailAddress", ctypes.c_void_p),
        ("OutputFileName", ctypes.c_void_p),
    ]
#[repr(C)]
pub struct FAX_PRINT_INFOA {
    pub SizeOfStruct: u32,
    pub DocName: *mut core::ffi::c_void,
    pub RecipientName: *mut core::ffi::c_void,
    pub RecipientNumber: *mut core::ffi::c_void,
    pub SenderName: *mut core::ffi::c_void,
    pub SenderCompany: *mut core::ffi::c_void,
    pub SenderDept: *mut core::ffi::c_void,
    pub SenderBillingCode: *mut core::ffi::c_void,
    pub Reserved: *mut core::ffi::c_void,
    pub DrEmailAddress: *mut core::ffi::c_void,
    pub OutputFileName: *mut core::ffi::c_void,
}
import "golang.org/x/sys/windows"

type FAX_PRINT_INFOA struct {
	SizeOfStruct uint32
	DocName uintptr
	RecipientName uintptr
	RecipientNumber uintptr
	SenderName uintptr
	SenderCompany uintptr
	SenderDept uintptr
	SenderBillingCode uintptr
	Reserved uintptr
	DrEmailAddress uintptr
	OutputFileName uintptr
}
type
  FAX_PRINT_INFOA = record
    SizeOfStruct: DWORD;
    DocName: Pointer;
    RecipientName: Pointer;
    RecipientNumber: Pointer;
    SenderName: Pointer;
    SenderCompany: Pointer;
    SenderDept: Pointer;
    SenderBillingCode: Pointer;
    Reserved: Pointer;
    DrEmailAddress: Pointer;
    OutputFileName: Pointer;
  end;
const FAX_PRINT_INFOA = extern struct {
    SizeOfStruct: u32,
    DocName: ?*anyopaque,
    RecipientName: ?*anyopaque,
    RecipientNumber: ?*anyopaque,
    SenderName: ?*anyopaque,
    SenderCompany: ?*anyopaque,
    SenderDept: ?*anyopaque,
    SenderBillingCode: ?*anyopaque,
    Reserved: ?*anyopaque,
    DrEmailAddress: ?*anyopaque,
    OutputFileName: ?*anyopaque,
};
type
  FAX_PRINT_INFOA {.bycopy.} = object
    SizeOfStruct: uint32
    DocName: pointer
    RecipientName: pointer
    RecipientNumber: pointer
    SenderName: pointer
    SenderCompany: pointer
    SenderDept: pointer
    SenderBillingCode: pointer
    Reserved: pointer
    DrEmailAddress: pointer
    OutputFileName: pointer
struct FAX_PRINT_INFOA
{
    uint SizeOfStruct;
    void* DocName;
    void* RecipientName;
    void* RecipientNumber;
    void* SenderName;
    void* SenderCompany;
    void* SenderDept;
    void* SenderBillingCode;
    void* Reserved;
    void* DrEmailAddress;
    void* OutputFileName;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; FAX_PRINT_INFOA サイズ: 44 バイト(x86)
dim st, 11    ; 4byte整数×11(構造体サイズ 44 / 4 切り上げ)
; SizeOfStruct : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; DocName : LPSTR (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; RecipientName : LPSTR (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; RecipientNumber : LPSTR (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; SenderName : LPSTR (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; SenderCompany : LPSTR (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; SenderDept : LPSTR (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; SenderBillingCode : LPSTR (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; Reserved : LPSTR (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; DrEmailAddress : LPSTR (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; OutputFileName : LPSTR (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; FAX_PRINT_INFOA サイズ: 88 バイト(x64)
dim st, 22    ; 4byte整数×22(構造体サイズ 88 / 4 切り上げ)
; SizeOfStruct : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; DocName : LPSTR (+8, 8byte)  qpoke st,8,値 / qpeek(st,8)  ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; RecipientName : LPSTR (+16, 8byte)  qpoke st,16,値 / qpeek(st,16)  ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; RecipientNumber : LPSTR (+24, 8byte)  qpoke st,24,値 / qpeek(st,24)  ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; SenderName : LPSTR (+32, 8byte)  qpoke st,32,値 / qpeek(st,32)  ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; SenderCompany : LPSTR (+40, 8byte)  qpoke st,40,値 / qpeek(st,40)  ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; SenderDept : LPSTR (+48, 8byte)  qpoke st,48,値 / qpeek(st,48)  ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; SenderBillingCode : LPSTR (+56, 8byte)  qpoke st,56,値 / qpeek(st,56)  ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; Reserved : LPSTR (+64, 8byte)  qpoke st,64,値 / qpeek(st,64)  ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; DrEmailAddress : LPSTR (+72, 8byte)  qpoke st,72,値 / qpeek(st,72)  ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; OutputFileName : LPSTR (+80, 8byte)  qpoke st,80,値 / qpeek(st,80)  ※IronHSPのみ。3.7/3.8は lpoke st,80,下位 : lpoke st,84,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global FAX_PRINT_INFOA
    #field int SizeOfStruct
    #field intptr DocName
    #field intptr RecipientName
    #field intptr RecipientNumber
    #field intptr SenderName
    #field intptr SenderCompany
    #field intptr SenderDept
    #field intptr SenderBillingCode
    #field intptr Reserved
    #field intptr DrEmailAddress
    #field intptr OutputFileName
#endstruct

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