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

FAX_EVENTA

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

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

フィールド

フィールドサイズx64x86説明
SizeOfStructDWORD4+0+0FAX_EVENT 構造体のサイズをバイト単位で指定します。FAX サーバーは、このメンバーに sizeof(FAX_EVENT) を設定します。
TimeStampFILETIME8+4+4FAX サーバーがイベントを生成した時刻を格納する FILETIME 構造体を指定します。
DeviceIdDWORD4+12+12対象の FAX デバイスの永続的な回線識別子を示す DWORD 変数を指定します。
EventIdDWORD4+16+16

FAX サーバー内で発生した現在の非同期イベントを識別する DWORD 変数を指定します。次の表に、発生する可能性のあるイベントとその意味を示します。

FEI_DIALING

送信側デバイスが FAX 番号をダイヤルしています。

FEI_SENDING

送信側デバイスが FAX データのページを送信しています。

FEI_RECEIVING

受信側デバイスが FAX データのページを受信しています。

FEI_COMPLETED

デバイスが FAX 送信の呼び出しを完了しました。

FEI_BUSY

送信側デバイスが話中信号を検出しました。

FEI_NO_ANSWER

受信側デバイスが応答しません。

FEI_BAD_ADDRESS

FAX 番号が無効なため、送信側デバイスは呼び出しを完了できません。

FEI_NO_DIAL_TONE

ダイヤル トーンを検出できないため、送信側デバイスは呼び出しを完了できません。

FEI_DISCONNECTED

FAX デバイスが切断されたか、FAX の呼び出し自体が切断されたため、デバイスは呼び出しを完了できません。

FEI_FATAL_ERROR

デバイスで致命的なプロトコル エラーが発生しました。

FEI_NOT_FAX_CALL

モデム デバイスがデータ呼び出しまたは音声呼び出しを受信しました。

FEI_CALL_DELAYED

送信側デバイスが話中信号を複数回受信しました。ダイヤルの制限があるため、デバイスは呼び出しを再試行できません。(一部の国/地域では、番号が話中の場合の再試行回数が制限されています。)

FEI_CALL_BLACKLISTED

電話番号がブロックまたは予約されているため、デバイスは呼び出しを完了できません。911 などの番号はブロックされます。

FEI_RINGING

受信側デバイスが呼び出し中です。

FEI_ABORTING

デバイスが FAX ジョブを中止しています。

FEI_ROUTING

受信側デバイスが、受信した FAX ドキュメントをルーティングしています。

FEI_MODEM_POWERED_ON

モデム デバイスの電源がオンになりました。

FEI_MODEM_POWERED_OFF

モデム デバイスの電源がオフになりました。

FEI_IDLE

デバイスはアイドル状態です。

FEI_FAXSVC_ENDED

FAX サービスが終了しました。詳細については、後の「解説」セクションを参照してください。

FEI_ANSWERED

受信側デバイスが新しい呼び出しに応答しました。

FEI_FAXSVC_STARTED

FAX サービスが開始されました。詳細については、後の「解説」セクションを参照してください。

FEI_JOB_QUEUED

FAX ジョブがキューに登録されました。

FEI_DELETED

FAX ジョブが処理されました。そのジョブのジョブ識別子は無効になりました。

FEI_NEVENTS

受信した FAX イベントの総数です。詳細については、後の「解説」セクションを参照してください。

JobIdDWORD4+20+20対象の FAX ジョブを識別する一意の番号を指定します。このメンバーが値 0xffffffff の場合は、非アクティブな FAX ジョブであることを示します。この番号は印刷スプーラーの識別番号ではないことに注意してください。

公式ドキュメント

FAX_EVENT 構造体は、I/O 完了パケットの内容を表します。FAX サーバーは、非同期の FAX サーバー イベントを FAX クライアント アプリケーションに通知するために、この完了パケットを送信します。

FAX イベント キューを作成するには、FAX クライアント アプリケーションが FaxInitializeEventQueue 関数を呼び出す必要があります。このキューにより、アプリケーションは FAX サーバーからの非同期イベントの通知を受け取ることができます。

解説(Remarks)

FAX クライアント アプリケーションは、FAX サービスから FEI_FAXSVC_ENDED メッセージを受け取った後は、FAX イベントを受け取らなくなります。FAX イベントの受信を再開するには、FAX サービスが再起動したときに、アプリケーションが FaxInitializeEventQueue 関数を再度呼び出す必要があります。アプリケーションは、サービス コントロール マネージャーを使用して、FAX サービスが実行中かどうかを判断できます。

通知メッセージを使用してイベントを受け取る場合、アプリケーションは FEI_NEVENTS イベントを利用できます。メッセージがアプリケーションのベース ウィンドウ メッセージ以上、かつベース ウィンドウ メッセージ + FEI_NEVENTS 以下である場合、アプリケーションはそのメッセージを FAX ウィンドウ メッセージとして処理できます。アプリケーションは、FaxInitializeEventQueue 関数の MessageStart パラメーターでベース ウィンドウ メッセージを指定します。ベース ウィンドウ メッセージは WM_USER メッセージより大きい値でなければなりません。詳細については、FaxClose および アプリケーションが FAX イベントの通知を受け取れるようにする を参照してください。

メモ

winfax.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI 版または Unicode 版を自動的に選択するエイリアスとして FAX_EVENT を定義します。エンコードに依存しないエイリアスを、エンコードに依存するコードと混在させて使用すると、不一致が生じ、コンパイル エラーや実行時エラーの原因となることがあります。詳細については、関数プロトタイプの規則を参照してください。

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

各言語での定義

#include <windows.h>

// FILETIME  (x64 8 / x86 8 バイト)
typedef struct FILETIME {
    DWORD dwLowDateTime;
    DWORD dwHighDateTime;
} FILETIME;

// FAX_EVENTA  (x64 24 / x86 24 バイト)
typedef struct FAX_EVENTA {
    DWORD SizeOfStruct;
    FILETIME TimeStamp;
    DWORD DeviceId;
    DWORD EventId;
    DWORD JobId;
} FAX_EVENTA;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct FILETIME
{
    public uint dwLowDateTime;
    public uint dwHighDateTime;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct FAX_EVENTA
{
    public uint SizeOfStruct;
    public FILETIME TimeStamp;
    public uint DeviceId;
    public uint EventId;
    public uint JobId;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure FILETIME
    Public dwLowDateTime As UInteger
    Public dwHighDateTime As UInteger
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure FAX_EVENTA
    Public SizeOfStruct As UInteger
    Public TimeStamp As FILETIME
    Public DeviceId As UInteger
    Public EventId As UInteger
    Public JobId As UInteger
End Structure
import ctypes
from ctypes import wintypes

class FILETIME(ctypes.Structure):
    _fields_ = [
        ("dwLowDateTime", wintypes.DWORD),
        ("dwHighDateTime", wintypes.DWORD),
    ]

class FAX_EVENTA(ctypes.Structure):
    _fields_ = [
        ("SizeOfStruct", wintypes.DWORD),
        ("TimeStamp", FILETIME),
        ("DeviceId", wintypes.DWORD),
        ("EventId", wintypes.DWORD),
        ("JobId", wintypes.DWORD),
    ]
#[repr(C)]
pub struct FILETIME {
    pub dwLowDateTime: u32,
    pub dwHighDateTime: u32,
}

#[repr(C)]
pub struct FAX_EVENTA {
    pub SizeOfStruct: u32,
    pub TimeStamp: FILETIME,
    pub DeviceId: u32,
    pub EventId: u32,
    pub JobId: u32,
}
import "golang.org/x/sys/windows"

type FILETIME struct {
	dwLowDateTime uint32
	dwHighDateTime uint32
}

type FAX_EVENTA struct {
	SizeOfStruct uint32
	TimeStamp FILETIME
	DeviceId uint32
	EventId uint32
	JobId uint32
}
type
  FILETIME = record
    dwLowDateTime: DWORD;
    dwHighDateTime: DWORD;
  end;

  FAX_EVENTA = record
    SizeOfStruct: DWORD;
    TimeStamp: FILETIME;
    DeviceId: DWORD;
    EventId: DWORD;
    JobId: DWORD;
  end;
const FILETIME = extern struct {
    dwLowDateTime: u32,
    dwHighDateTime: u32,
};

const FAX_EVENTA = extern struct {
    SizeOfStruct: u32,
    TimeStamp: FILETIME,
    DeviceId: u32,
    EventId: u32,
    JobId: u32,
};
type
  FILETIME {.bycopy.} = object
    dwLowDateTime: uint32
    dwHighDateTime: uint32

  FAX_EVENTA {.bycopy.} = object
    SizeOfStruct: uint32
    TimeStamp: FILETIME
    DeviceId: uint32
    EventId: uint32
    JobId: uint32
struct FILETIME
{
    uint dwLowDateTime;
    uint dwHighDateTime;
}

struct FAX_EVENTA
{
    uint SizeOfStruct;
    FILETIME TimeStamp;
    uint DeviceId;
    uint EventId;
    uint JobId;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; FAX_EVENTA サイズ: 24 バイト(x64)
dim st, 6    ; 4byte整数×6(構造体サイズ 24 / 4 切り上げ)
; SizeOfStruct : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; TimeStamp : FILETIME (+4, 8byte)  varptr(st)+4 を基点に操作(8byte:入れ子/配列)
; DeviceId : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; EventId : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; JobId : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global FILETIME
    #field int dwLowDateTime
    #field int dwHighDateTime
#endstruct

#defstruct global FAX_EVENTA
    #field int SizeOfStruct
    #field FILETIME TimeStamp
    #field int DeviceId
    #field int EventId
    #field int JobId
#endstruct

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