windows-nt/Source/XPSP1/NT/printscan/fax/setup/win9xupg/inc/property.h
2020-09-26 16:20:57 +08:00

300 lines
14 KiB
C

//
// MAPI Properties
//
//
// Mail user generic properties = 0x3a00 - 0x3aff
// 4000 57FF Transport-defined envelope property
// 5800 5FFF Transport-defined per-recipient property
// 6000 65FF User-defined non-transmittable property
// 6600 67FF Provider-defined internal non-transmittable property
// 6800 7BFF Message class-defined content property
// 7C00 7FFF Message class-defined non-transmittable
// property
// Transport-defined message envelope properties = 0x4000 - 0x57ff
// Transport-defined recipient properties = 0x5800 - 0x5fff
// User-defined non-transmittable message props = 0x6000 - 0x65ff
// Provider-defined internal non-transmittable props = 0x6600 - 0x67ff
// Message class-defined message content properties = 0x6800 - 0x7bff
// Message class-defined non-transmittable message
// props = 0x7c00 - 0x7fff
// User-defined properties identified only by name,
// through the property name to ID mapping facility
// of the IMAPIProp interface = 0x8000 - 0xfffe
//
#define TRANSPORT_ENVELOPE_BASE 0x4000
#define TRANSPORT_RECIP_BASE 0x5800
#define USER_NON_TRANSMIT_BASE 0x6000
#define PROVIDER_INTERNAL_NON_TRANSMIT_BASE 0x6600
#define MESSAGE_CLASS_CONTENT_BASE 0x6800
#define MESSAGE_CLASS_NON_TRANSMIT_BASE 0x7C00
#define EFAX_MESSAGE_BASE TRANSPORT_ENVELOPE_BASE + 0x500
#define EFAX_RECIPIENT_BASE TRANSPORT_RECIP_BASE + 0x100
#define EFAX_PR_OPTIONS_BASE PROVIDER_INTERNAL_NON_TRANSMIT_BASE + 0x100
#define EFAX_ADDR_TYPE "FAX"
//
// LOGON Properties
//
// Properties we store in the Profile.
//
// The following is used to access the properties in the logon array.
// If you add a property to the profile, you should increment this number!
#define MAX_LOGON_PROPERTIES 10
// Other logon properties:
// PR_SENDER_NAME - in mapitags.h
// PR_SENDER_EMAIL_ADDRESS - in mapitags.h (this file)
// Fax Product name
#define PR_FAX_PRODUCT_NAME PROP_TAG(PT_TSTRING, (EFAX_PR_OPTIONS_BASE + 0x0))
// Active fax device name
#define PR_FAX_ACTIVE_MODEM_NAME PROP_TAG(PT_TSTRING, (EFAX_PR_OPTIONS_BASE + 0x1))
// If value is TRUE, work offline
#define PR_FAX_WORK_OFF_LINE PROP_TAG(PT_BOOLEAN, (EFAX_PR_OPTIONS_BASE + 0x2))
// If true, you want to share the active fax device
#define PR_FAX_SHARE_DEVICE PROP_TAG(PT_BOOLEAN, (EFAX_PR_OPTIONS_BASE + 0x3))
// The share name
#define PR_FAX_SHARE_NAME PROP_TAG(PT_TSTRING, (EFAX_PR_OPTIONS_BASE + 0x4))
// Sender Country code ID - used internally by fax config
#define PR_FAX_SENDER_COUNTRY_ID PROP_TAG(PT_LONG, (EFAX_PR_OPTIONS_BASE + 0x5))
// multi-value proerty to hold the names of the netfax devices the user added
#define PR_FAX_NETFAX_DEVICES PROP_TAG(PT_MV_STRING8, (EFAX_PR_OPTIONS_BASE + 0x6))
// The share pathname on the sharing machine
#define PR_FAX_SHARE_PATHNAME PROP_TAG(PT_TSTRING, (EFAX_PR_OPTIONS_BASE + 0x7))
// Profile section version
#define PR_FAX_PROFILE_VERSION PROP_TAG(PT_LONG, (EFAX_PR_OPTIONS_BASE + 0x8))
//
// Non-Transmittable message properties
//
#define PR_FAX_CHEAP_BEGIN_HOUR PROP_TAG(PT_I2, (EFAX_MESSAGE_BASE + 0x1))
#define PR_FAX_CHEAP_BEGIN_MINUTE PROP_TAG(PT_I2, (EFAX_MESSAGE_BASE + 0x2))
#define PR_FAX_CHEAP_END_HOUR PROP_TAG(PT_I2, (EFAX_MESSAGE_BASE + 0x3))
#define PR_FAX_CHEAP_END_MINUTE PROP_TAG(PT_I2, (EFAX_MESSAGE_BASE + 0x4))
#define PR_FAX_NOT_EARLIER_HOUR PROP_TAG(PT_I2, (EFAX_MESSAGE_BASE + 0x5))
#define PR_FAX_NOT_EARLIER_MINUTE PROP_TAG(PT_I2, (EFAX_MESSAGE_BASE + 0x6))
#define PR_FAX_NOT_EARLIER_DATE PROP_TAG(PT_I2, (EFAX_MESSAGE_BASE + 0x7))
#define PR_FAX_NUMBER_RETRIES PROP_TAG(PT_I2, (EFAX_MESSAGE_BASE + 0x8))
#define PR_FAX_MINUTES_BETWEEN_RETRIES PROP_TAG(PT_I2, (EFAX_MESSAGE_BASE + 0x9))
// Should a cover page be sent with this message
#define PR_FAX_INCLUDE_COVER_PAGE PROP_TAG(PT_BOOLEAN, (EFAX_MESSAGE_BASE + 0xA))
#define PR_FAX_COVER_PAGE_BODY PROP_TAG(PT_I2, (EFAX_MESSAGE_BASE + 0xB))
#define PR_FAX_LOGO_STRING PROP_TAG(PT_STRING8, (EFAX_MESSAGE_BASE + 0xC))
// Should this message be send as text, in printed format, or best available
#define PR_FAX_DELIVERY_FORMAT PROP_TAG(PT_LONG, (EFAX_MESSAGE_BASE + 0xD))
#define PR_FAX_PRINT_ORIENTATION PROP_TAG(PT_I2, (EFAX_MESSAGE_BASE + 0xE))
#define PR_FAX_PAPER_SIZE PROP_TAG(PT_I2, (EFAX_MESSAGE_BASE + 0xF))
#define PR_FAX_IMAGE_QUALITY PROP_TAG(PT_I2, (EFAX_MESSAGE_BASE + 0x10))
// These should be set by transport so Linearizer can see them.
#define PR_FAX_SENDER_NAME PROP_TAG(PT_STRING8, (EFAX_MESSAGE_BASE + 0x11))
#define PR_FAX_SENDER_EMAIL_ADDRESS PROP_TAG(PT_STRING8, (EFAX_MESSAGE_BASE + 0x12))
#define PR_FAX_LMI_CUSTOM_OPTION PROP_TAG(PT_BINARY, (EFAX_MESSAGE_BASE + 0x13))
#define PR_FAX_PREVIOUS_STATE PROP_TAG(PT_I2, (EFAX_MESSAGE_BASE + 0x14))
#define PR_FAX_FAXJOB PROP_TAG(PT_BINARY, (EFAX_MESSAGE_BASE + 0x15))
// The billing code to bill for the transmission of this message
#define PR_FAX_BILLING_CODE PROP_TAG(PT_STRING8, (EFAX_MESSAGE_BASE + 0x16))
// Previous billing codes used
#define PR_FAX_PREV_BILLING_CODES PROP_TAG(PT_MV_STRING8, (EFAX_MESSAGE_BASE + 0x17))
// Is Fax message to begin (or fully included, if short) on the cover page
#define PR_FAX_BGN_MSG_ON_COVER PROP_TAG(PT_BOOLEAN, (EFAX_MESSAGE_BASE + 0x18))
// Should the message be sent immediately, at cheap rates or at a specific time
#define PR_FAX_SEND_WHEN_TYPE PROP_TAG(PT_LONG, (EFAX_MESSAGE_BASE + 0x19))
// Absolute pathname of default coverpage file
#define PR_FAX_DEFAULT_COVER_PAGE PROP_TAG(PT_STRING8, (EFAX_MESSAGE_BASE + 0x1A))
// Maximum Time to wait for connection (seconds)
#define PR_FAX_MAX_TIME_TO_WAIT PROP_TAG(PT_I2, (EFAX_MESSAGE_BASE + 0x1B))
// Enable/Disable logging calls
#define PR_FAX_LOG_ENABLE PROP_TAG(PT_BOOLEAN, (EFAX_MESSAGE_BASE + 0x1C))
// Number of calls to keep log of
#define PR_FAX_LOG_NUM_OF_CALLS PROP_TAG(PT_I2, (EFAX_MESSAGE_BASE + 0x1D))
// Display call progress
#define PR_FAX_DISPLAY_PROGRESS PROP_TAG(PT_BOOLEAN, (EFAX_MESSAGE_BASE + 0x1E))
// Embed Linked objects before sending
#define PR_FAX_EMBED_LINKED_OBJECTS PROP_TAG(PT_BOOLEAN, (EFAX_MESSAGE_BASE + 0x1F))
// TAPI Location ID
#define PR_FAX_TAPI_LOC_ID PROP_TAG(PT_LONG, (EFAX_MESSAGE_BASE + 0x20))
// Must render ALL attachments before sending
#define PR_FAX_MUST_RENDER_ALL_ATTACH PROP_TAG(PT_BOOLEAN, (EFAX_MESSAGE_BASE + 0x21))
// Enable per-recipient options
#define PR_FAX_ENABLE_RECIPIENT_OPTIONS PROP_TAG(PT_BOOLEAN, (EFAX_MESSAGE_BASE + 0x22))
// Calling Card Name
#define PR_FAX_CALL_CARD_NAME PROP_TAG(PT_STRING8, (EFAX_MESSAGE_BASE + 0x24))
// Print to fax rba stream filename
#define PR_FAX_PRINT_TO_NAME PROP_TAG(PT_STRING8, (EFAX_MESSAGE_BASE + 0x25))
#define PR_FAX_SECURITY_SEND PROP_TAG(PT_BINARY, (EFAX_MESSAGE_BASE + 0x26))
#define PR_FAX_SECURITY_RECEIVED PROP_TAG(PT_I2, (EFAX_MESSAGE_BASE + 0x27))
// RBA data property (print-to-fax)
#define PR_FAX_RBA_DATA PROP_TAG(PT_BINARY, (EFAX_MESSAGE_BASE + 0x28))
// Poll retrieval
#define PR_POLL_RETRIEVE_SENDME PROP_TAG(PT_I2, (EFAX_MESSAGE_BASE + 0x29))
#define PR_POLL_RETRIEVE_TITLE PROP_TAG(PT_TSTRING, (EFAX_MESSAGE_BASE + 0x30))
#define PR_POLL_RETRIEVE_PASSWORD PROP_TAG(PT_TSTRING, (EFAX_MESSAGE_BASE + 0x31))
#define PR_POLLTYPE PROP_TAG(PT_I2, (EFAX_MESSAGE_BASE + 0x32))
// Poll server
#define PR_MESSAGE_TYPE PROP_TAG(PT_I2, (EFAX_MESSAGE_BASE + 0x33))
// Digital signature for an attachment
#define PR_ATTACH_SIGNATURE PROP_TAG(PT_BINARY, (EFAX_MESSAGE_BASE + 0x34))
// (print-to-fax # of pages)
#define PR_FAX_PRINT_TO_PAGES PROP_TAG(PT_LONG, (EFAX_MESSAGE_BASE + 0x35))
// On incoming message attachment, this contains image data requiring render conversion.
#define PR_FAX_IMAGE PROP_TAG(PT_BINARY, (EFAX_MESSAGE_BASE + 0x36))
// Print a header line on the top of every G3 fax page (branding)
#define PR_FAX_PRINT_HEADER PROP_TAG(PT_BOOLEAN, (EFAX_MESSAGE_BASE + 0x37))
// Billing code DWORD representation
#define PR_FAX_BILLING_CODE_DWORD PROP_TAG(PT_LONG, (EFAX_MESSAGE_BASE + 0x38))
//
// Non-Transmittable mail-user properties
//
#define PR_FAX_RECIP_CAPABILITIES PROP_TAG(PT_I2, (EFAX_RECIPIENT_BASE + 0x0))
// Name of the recipient to put on the cover page
#define PR_FAX_CP_NAME PROP_TAG(PT_TSTRING, (EFAX_RECIPIENT_BASE + 0x1))
#define PR_FAX_CP_NAME_W PROP_TAG(PT_UNICODE, (EFAX_RECIPIENT_BASE + 0x1))
#define PR_FAX_CP_NAME_A PROP_TAG(PT_STRING8, (EFAX_RECIPIENT_BASE + 0x1))
#define PR_RECIP_INDEX PROP_TAG(PT_I2, (EFAX_RECIPIENT_BASE + 0x2))
#define PR_HOP_INDEX PROP_TAG(PT_I2, (EFAX_RECIPIENT_BASE + 0x3))
// BUGBUG: This should go away
#define PR_RECIP_VOICENUM PROP_TAG(PT_TSTRING, (EFAX_RECIPIENT_BASE + 0x4))
#define PR_FAX_ENCRYPTION_KEY PROP_TAG(PT_BINARY, (EFAX_RECIPIENT_BASE + 0x5))
// Moved here from chicago\ui\faxab\faxab.h
#define PR_COUNTRY_ID PROP_TAG(PT_LONG,0x6607)
#define PR_AREA_CODE PROP_TAG(PT_STRING8,0x6608)
#define PR_TEL_NUMBER PROP_TAG(PT_STRING8,0x6609)
#define PR_MAILBOX PROP_TAG(PT_STRING8,0x660a)
#define ArrayIndex(PROP, ARRAY)(ARRAY)[(PROP_ID(PROP) - EFAX_XP_MESSAGE_BASE - 1)]
/**********************************************************************************
Property Values Section
***********************************************************************************/
#define NUM_SENDER_PROPS 3 // How many sender ID properties?
// Send As
// PR_FAX_DELIVERY_FORMAT
#define SEND_BEST 0
#define SEND_EDITABLE 1
#define SEND_PRINTED 2
#define DEFAULT_SEND_AS SEND_BEST
// Send At
// PR_FAX_SEND_WHEN_TYPE
#define SEND_ASAP 0
#define SEND_CHEAP 1
#define SEND_AT_TIME 2
#define DEFAULT_SEND_AT SEND_ASAP
// Paper Size
// PR_FAX_PAPER_SIZE
#define PAPER_US_LETTER 0 // US Letter page size
#define PAPER_US_LEGAL 1
#define PAPER_A4 2
#define PAPER_B4 3
#define PAPER_A3 4
// "real" default page size is in a resource string depending on U.S. vs metric
#define DEFAULT_PAPER_SIZE PAPER_US_LETTER // Default page size
// Print Orientation
// PR_FAX_PRINT_ORIENTATION
#define PRINT_PORTRAIT 0 // Protrait printing
#define PRINT_LANDSCAPE 1
#define DEFAULT_PRINT_ORIENTATION PRINT_PORTRAIT
// Image Quality
// PR_FAX_IMAGE_QUALITY
#define IMAGE_QUALITY_BEST 0
#define IMAGE_QUALITY_STANDARD 1
#define IMAGE_QUALITY_FINE 2
#define IMAGE_QUALITY_300DPI 3
#define IMAGE_QUALITY_400DPI 4
#define DEFAULT_IMAGE_QUALITY IMAGE_QUALITY_BEST
// Speaker
// PR_FAX_SPEAKER_VOLUME
#define NUM_OF_SPEAKER_VOL_LEVELS 4 // Number of speaker volume levels
#define DEFAULT_SPEAKER_VOLUME 2 // Default speaker volume level
#define SPEAKER_ALWAYS_ON 2 // Speaker mode: always on
#define SPEAKER_ON_UNTIL_CONNECT 1 // speaker on unitl connected
#define SPEAKER_ALWAYS_OFF 0 // Speaker off
#define DEFAULT_SPEAKER_MODE SPEAKER_ON_UNTIL_CONNECT // Default speaker mode
// Answer
// PR_FAX_ANSWER_MODE
#define NUM_OF_RINGS 3
#define ANSWER_NO 0
#define ANSWER_MANUAL 1
#define ANSWER_AUTO 2
#define DEFAULT_ANSWER_MODE ANSWER_NO
// Blind Dial
#define DEFAULT_BLIND_DIAL 3
// Comma Delay
#define DEFAULT_COMMA_DELAY 2
// Dial Tone Wait
#define DEFAULT_DIAL_TONE_WAIT 30
// Hangup Delay
#define DEFAULT_HANGUP_DELAY 60
// Poll retrieval
// PR_POLL_RETRIEVE_SENDME
#define SENDME_DEFAULT 0
#define SENDME_DOCUMENT 1
// PR_POLLTYPE
#define POLLTYPE_REQUEST 1
#define POLLTYPE_STORE 2
// Type of fax devices (line IDs)
// PR_FAX_ACTIVE_MODEM_TYPE
/*
defined in ifaxdev\h\filet30.h
#define LINEID_NONE (0x0)
#define LINEID_COMM_PORTNUM (0x1)
#define LINEID_COMM_HANDLE (0x2)
#define LINEID_TAPI_DEVICEID (0x3)
#define LINEID_TAPI_PERMANENT_DEVICEID (0x4)
#define LINEID_NETFAX_DEVICE (0x10)
*/
// Line ID (depends on the value in PR_FAX_ACTIVE_MODEM_TYPE)
// PR_FAX_ACTIVE_MODEM
#define NO_MODEM 0xffffffff // To show no modem is selected
// PR_FAX_TAPI_LOC_ID
#define NO_LOCATION 0xffffffff // No TAPI location
// Values for PR_FAX_FLAGS
// #define EFAX_FLAG_PEER_TO_PEER ((ULONG)0x00000001)
#define EFAX_FLAG_UI_ALWAYS ((ULONG)0x00000002)
// #define EFAX_FLAG_LOG_EVENTS ((ULONG)0x00000004)
#define EFAX_FLAG_SAVE_DATA ((ULONG)0x00000008)