FAX_PRINT_INFOA
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| SizeOfStruct | DWORD | 4 | +0 | +0 | FAX_PRINT_INFO 構造体のサイズをバイト単位で指定します。呼び出し元のアプリケーションは、このメンバーに sizeof(FAX_PRINT_INFO) を設定する必要があります。このメンバーは必須です。 |
| DocName | LPSTR | 8/4 | +8 | +4 | プリント スプーラーに表示される分かりやすい名前を格納する、NULL で終わる定数文字列へのポインターです。 |
| RecipientName | LPSTR | 8/4 | +16 | +8 | ファックス送信の受信者名を指定する、NULL で終わる定数文字列へのポインターです。 |
| RecipientNumber | LPSTR | 8/4 | +24 | +12 | ファックス送信の受信者のファックス番号を指定する、NULL で終わる定数文字列へのポインターです。このメンバーは必須です。 |
| SenderName | LPSTR | 8/4 | +32 | +16 | ファックス送信を開始した送信者の名前を指定する、NULL で終わる定数文字列へのポインターです。 |
| SenderCompany | LPSTR | 8/4 | +40 | +20 | ファックス送信を開始した送信者の会社名を指定する、NULL で終わる定数文字列へのポインターです。 |
| SenderDept | LPSTR | 8/4 | +48 | +24 | ファックス送信を開始した送信者の部署名を指定する、NULL で終わる定数文字列へのポインターです。 |
| SenderBillingCode | LPSTR | 8/4 | +56 | +28 | ファックス送信に適用される、アプリケーション固有またはサーバー固有の課金コードを示す、NULL で終わる定数文字列へのポインターです。ファックス サーバーはこの文字列を使用して、ファックス イベント ログにエントリを生成します。課金コードは省略可能です。 |
| Reserved | LPSTR | 8/4 | +64 | +32 | 予約済みです。NULL に設定しなければなりません。 |
| DrEmailAddress | LPSTR | 8/4 | +72 | +36 | ファックス サーバーが配信レポート (DR) または配信不能レポート (NDR) を送信する先の電子メール アドレスを指定する、NULL で終わる定数文字列へのポインターです。 |
| OutputFileName | LPSTR | 8/4 | +80 | +40 | このメンバーは、将来 Microsoft が使用するために予約されています。NULL に設定しなければなりません。 |
公式ドキュメント
FAX_PRINT_INFO 構造体は、ファックス サーバーがファックス送信を印刷するために必要な情報を格納します。この構造体には、送信者と受信者のデータ、省略可能な課金コード、および配信レポート情報が含まれます。
SizeOfStruct メンバーと RecipientNumber メンバーは必須です。その他のメンバーは省略可能です。
解説(Remarks)
ファックス クライアント アプリケーションは、指定したファックス プリンターで印刷ジョブを開始するために、FaxStartPrintJob 関数の呼び出しで FAX_PRINT_INFO 構造体を渡します。詳細については、Printing a Fax to a Device Context を参照してください。
winfax.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいてこの関数の ANSI 版または Unicode 版を自動的に選択するエイリアスとして FAX_PRINT_INFO を定義します。エンコーディングに依存しないエイリアスと、エンコーディングに依存するコードを混在させて使用すると、不一致が発生し、コンパイル エラーまたは実行時エラーの原因となる可能性があります。詳細については、Conventions for Function Prototypes を参照してください。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#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 Structureimport 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: pointerstruct 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