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

FAX_EVENTW

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

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

フィールド

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

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

FEI_DIALING

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

FEI_SENDING

送信側デバイスがファックス データの 1 ページを送信しています。

FEI_RECEIVING

受信側デバイスがファックス データの 1 ページを受信しています。

FEI_COMPLETED

デバイスがファックス送信の呼び出しを完了しました。

FEI_BUSY

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

FEI_NO_ANSWER

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

FEI_BAD_ADDRESS

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

FEI_NO_DIAL_TONE

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

FEI_DISCONNECTED

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

FEI_FATAL_ERROR

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

FEI_NOT_FAX_CALL

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

FEI_CALL_DELAYED

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

FEI_CALL_BLACKLISTED

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

FEI_RINGING

受信側デバイスの呼び出し音が鳴っています。

FEI_ABORTING

デバイスがファックス ジョブを中止しています。

FEI_ROUTING

受信側デバイスが、受信したファックス文書をルーティングしています。

FEI_MODEM_POWERED_ON

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

FEI_MODEM_POWERED_OFF

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

FEI_IDLE

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

FEI_FAXSVC_ENDED

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

FEI_ANSWERED

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

FEI_FAXSVC_STARTED

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

FEI_JOB_QUEUED

ファックス ジョブがキューに登録されました。

FEI_DELETED

ファックス ジョブは処理されました。このジョブのジョブ識別子は無効になりました。

FEI_NEVENTS

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

JobIdDWORD4+20+20

対象のファックス ジョブを識別する一意な番号を指定します。このメンバーが値 0xffffffff の場合は、非アクティブなファックス ジョブであることを示します。なお、この番号は印刷スプーラーの識別番号ではありません。

- EventId.FEI_ABORTING

デバイスがファックス ジョブを中止しています。

- EventId.FEI_ANSWERED

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

- EventId.FEI_BAD_ADDRESS

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

- EventId.FEI_BUSY

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

- EventId.FEI_CALL_BLACKLISTED

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

- EventId.FEI_CALL_DELAYED

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

- EventId.FEI_COMPLETED

デバイスがファックス送信の呼び出しを完了しました。

- EventId.FEI_DELETED

ファックス ジョブは処理されました。このジョブのジョブ識別子は無効になりました。

- EventId.FEI_DIALING

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

- EventId.FEI_DISCONNECTED

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

- EventId.FEI_FATAL_ERROR

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

- EventId.FEI_FAXSVC_ENDED

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

- EventId.FEI_FAXSVC_STARTED

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

- EventId.FEI_IDLE

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

- EventId.FEI_JOB_QUEUED

ファックス ジョブがキューに登録されました。

- EventId.FEI_MODEM_POWERED_OFF

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

- EventId.FEI_MODEM_POWERED_ON

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

- EventId.FEI_NEVENTS

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

- EventId.FEI_NOT_FAX_CALL

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

- EventId.FEI_NO_ANSWER

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

- EventId.FEI_NO_DIAL_TONE

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

- EventId.FEI_RECEIVING

受信側デバイスがファックス データの 1 ページを受信しています。

- EventId.FEI_RINGING

受信側デバイスの呼び出し音が鳴っています。

- EventId.FEI_ROUTING

受信側デバイスが、受信したファックス文書をルーティングしています。

- EventId.FEI_SENDING

送信側デバイスがファックス データの 1 ページを送信しています。

公式ドキュメント

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

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

解説(Remarks)

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

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

メモ

winfax.h ヘッダーは、UNICODE プリプロセッサー定数の定義に応じてこの関数の ANSI 版または Unicode 版を自動的に選択するエイリアスとして FAX_EVENT を定義します。エンコーディングに依存しないエイリアスの使用と、エンコーディングに依存するコードを混在させると、不一致によりコンパイル エラーや実行時エラーが発生する可能性があります。詳細については、Conventions for Function Prototypes を参照してください。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_EVENTW  (x64 24 / x86 24 バイト)
typedef struct FAX_EVENTW {
    DWORD SizeOfStruct;
    FILETIME TimeStamp;
    DWORD DeviceId;
    DWORD EventId;
    DWORD JobId;
} FAX_EVENTW;
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_EVENTW
{
    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_EVENTW
    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_EVENTW(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_EVENTW {
    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_EVENTW struct {
	SizeOfStruct uint32
	TimeStamp FILETIME
	DeviceId uint32
	EventId uint32
	JobId uint32
}
type
  FILETIME = record
    dwLowDateTime: DWORD;
    dwHighDateTime: DWORD;
  end;

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

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

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

struct FAX_EVENTW
{
    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_EVENTW サイズ: 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_EVENTW
    #field int SizeOfStruct
    #field FILETIME TimeStamp
    #field int DeviceId
    #field int EventId
    #field int JobId
#endstruct

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