/packages/winceunits/src/sms.pp
https://github.com/slibre/freepascal · Puppet · 582 lines · 512 code · 70 blank · 0 comment · 27 complexity · c1826cd5ee631c1b8068a0774f7d5d4b MD5 · raw file
- {
- This file is part of the Free Pascal run time library.
- Copyright (c) 2008 Free Pascal development team.
- See the file COPYING.FPC, included in this distribution,
- for details about the copyright.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- ********************************************************************** }
- //
- // Module: sms.h
- //
- //
- // Microsoft Windows Mobile 6.0 for PocketPC SDK.
- //
- unit sms;
- {$CALLING cdecl}
- interface
- uses Windows;
- //
- // Errors
- //
- const
- FACILITY_SMS = $0200;
- // MAKE_HRESULT rules OK!
- // Specific registration errors (for SmsSetMessageNotification, SmsClearMessageNotification)
- const
- SMS_E_INVALIDPROTOCOL = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $0001;
- SMS_E_REGISTRATIONEXISTS = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $0002;
- SMS_S_NOSUCHREGISTRATION = (SEVERITY_SUCCESS shl 31) or (FACILITY_SMS shl 16) or $0003;
- // Specific messaging errors (for SmsOpen, SmsSendMessage, SmsGetSMSC, etc.)
- SMS_E_TOOMUCHDATA = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $0100;
- SMS_E_INVALIDDATA = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $0101;
- SMS_E_BUFFERTOOSMALL = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $0102;
- SMS_E_PROVIDERSPECIFICBUFFERWRONGSIZE = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $0103;
- SMS_E_TIMEUNAVAILABLE = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $0104;
- SMS_E_RECEIVEHANDLEALREADYOPEN = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $0105;
- SMS_E_DESTINATIONOUTOFSVC = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $0106;
- SMS_E_INVALIDADDRESS = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $0107;
- SMS_E_MSGBARREDBYOPERATOR = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $0108;
- SMS_E_MSGCALLBARRED = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $0109;
- SMS_E_NOSCSUBSCRIPTION = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $010a;
- SMS_E_SCBUSY = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $010b;
- SMS_E_SVCNOTSUBSCRIBED = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $010c;
- SMS_E_UNASSIGNEDNUMBER = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $010d;
- SMS_E_UNKNOWNSCADDRESS = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $010e;
- SMS_E_UNIDENTIFIEDSUBCRIBER = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $010f;
- SMS_E_FDNRESTRICT = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $0110;
- // General SMS messaging errors
- SMS_E_MISC = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $0200;
- SMS_E_PASSWORD = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $0201;
- SMS_E_SIM = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $0202;
- SMS_E_NETWORKACCESS = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $0203;
- SMS_E_NETWORK = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $0204;
- SMS_E_MOBILE = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $0205;
- SMS_E_NETWORKUNSUPPORTED = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $0206;
- SMS_E_MOBILEUNSUPPORTED = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $0207;
- SMS_E_BADPARAM = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $0208;
- SMS_E_STORAGE = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $0209;
- SMS_E_SMSC = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $020a;
- SMS_E_DESTINATION = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $020b;
- SMS_E_DESTINATIONUNSUPPORTED = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $020c;
- SMS_E_RADIOUNAVAILABLE = (SEVERITY_ERROR shl 31) or (FACILITY_SMS shl 16) or $020d;
- //
- // Constants
- //
- const
- SMS_DATAGRAM_SIZE = 140;
- SMS_BROADCAST_DATAGRAM_SIZE = 82;
- SMS_MAX_APPNAME_LENGTH = MAX_PATH;
- SMS_MAX_PARAMS_LENGTH = MAX_PATH;
- SMS_MAX_PROTOCOLNAME_LENGTH = MAX_PATH;
- SMS_MAX_MESSAGEUID_SIZE = 1024;
- SMS_MAX_ADDRESS_LENGTH = 256;
- SMS_MAX_SUBADDRESS_SIZE = 256;
- // dwMessageModes for SmsOpen
- SMS_MODE_RECEIVE = $00000001;
- SMS_MODE_SEND = $00000002;
- // dwOptions for SmsSendMessage
- SMS_OPTION_DELIVERY_NONE = $00000000;
- SMS_OPTION_DELIVERY_NO_RETRY = $00000001;
- // dwMessageOptions for TEXT_PROVIDER_SPECIFIC_DATA
- PS_MESSAGE_OPTION_NONE = $00000000;
- PS_MESSAGE_OPTION_REPLYPATH = $00000001;
- PS_MESSAGE_OPTION_STATUSREPORT = $00000002;
- PS_MESSAGE_OPTION_DISCARD = $00000004;
- // dwMessageStatus0 and dwMessageStatus1 for SmsGetMessageStatus and the SMS status-message provider (SMS_MSGTYPE_STATUS)
- // Message status is unknown iff dwMessageStatus0 and dwMessageStatus1 are both set to MESSAGE_STATUS_UNKNOWN
- MESSAGE_STATUS_UNKNOWN = $00000000;
- // Valid bits for dwMessageStatus0
- MESSAGE_STATUS_0_RECEIVEDBYSME = $00000001;
- MESSAGE_STATUS_0_FORWARDEDTOSME = $00000002;
- MESSAGE_STATUS_0_REPLACEDBYSC = $00000004;
- MESSAGE_STATUS_0_CONGESTION_TRYING = $00000008;
- MESSAGE_STATUS_0_SMEBUSY_TRYING = $00000010;
- MESSAGE_STATUS_0_SMENOTRESPONDING_TRYING = $00000020;
- MESSAGE_STATUS_0_SVCREJECTED_TRYING = $00000040;
- MESSAGE_STATUS_0_QUALITYUNAVAIL_TRYING = $00000080;
- MESSAGE_STATUS_0_SMEERROR_TRYING = $00000100;
- MESSAGE_STATUS_0_CONGESTION = $00000200;
- MESSAGE_STATUS_0_SMEBUSY = $00000400;
- MESSAGE_STATUS_0_SMENOTRESPONDING = $00000800;
- MESSAGE_STATUS_0_SVCREJECTED = $00001000;
- MESSAGE_STATUS_0_QUALITYUNAVAIL_TEMP = $00002000;
- MESSAGE_STATUS_0_SMEERROR = $00004000;
- MESSAGE_STATUS_0_REMOTEPROCERROR = $00008000;
- MESSAGE_STATUS_0_INCOMPATIBLEDEST = $00010000;
- MESSAGE_STATUS_0_CONNECTIONREJECTED = $00020000;
- MESSAGE_STATUS_0_NOTOBTAINABLE = $00040000;
- MESSAGE_STATUS_0_NOINTERNETWORKING = $00080000;
- MESSAGE_STATUS_0_VPEXPIRED = $00100000;
- MESSAGE_STATUS_0_DELETEDBYORIGSME = $00200000;
- MESSAGE_STATUS_0_DELETEDBYSC = $00400000;
- MESSAGE_STATUS_0_NOLONGEREXISTS = $00800000;
- MESSAGE_STATUS_0_QUALITYUNAVAIL = $01000000;
- MESSAGE_STATUS_0_RESERVED_COMPLETED = $02000000;
- MESSAGE_STATUS_0_RESERVED_TRYING = $04000000;
- MESSAGE_STATUS_0_RESERVED_ERROR = $08000000;
- MESSAGE_STATUS_0_RESERVED_TMPERROR = $10000000;
- MESSAGE_STATUS_0_SCSPECIFIC_COMPLETED = $20000000;
- MESSAGE_STATUS_0_SCSPECIFIC_TRYING = $40000000;
- MESSAGE_STATUS_0_SCSPECIFIC_ERROR = $80000000;
- // Valid bits for dwMessageStatus1
- MESSAGE_STATUS_1_SCSPECIFIC_TMPERROR = $00000001;
- // Language identifiers for SMS_BROADCAST_RANGES.dwBroadcastMsgLangs
- SMS_DCSLANG_UNKNOWN = $00000001;
- SMS_DCSLANG_GERMAN = $00000002;
- SMS_DCSLANG_ENGLISH = $00000004;
- SMS_DCSLANG_ITALIAN = $00000008;
- SMS_DCSLANG_FRENCH = $00000010;
- SMS_DCSLANG_SPANISH = $00000020;
- SMS_DCSLANG_DUTCH = $00000040;
- SMS_DCSLANG_SWEDISH = $00000080;
- SMS_DCSLANG_DANISH = $00000100;
- SMS_DCSLANG_PORTUGUESE = $00000200;
- SMS_DCSLANG_FINNISH = $00000400;
- SMS_DCSLANG_NORWEGIAN = $00000800;
- SMS_DCSLANG_GREEK = $00001000;
- SMS_DCSLANG_TURKISH = $00002000;
- SMS_DCSLANG_HUNGARIAN = $00004000;
- SMS_DCSLANG_POLISH = $00008000;
- SMS_DCSLANG_CZECH = $00010000;
- SMS_DCSLANG_HEBREW = $00020000;
- SMS_DCSLANG_ARABIC = $00040000;
- SMS_DCSLANG_RUSSIAN = $00080000;
- SMS_DCSLANG_ICELANDIC = $00100000;
- SMS_DCSLANG_ALL = $001fffff;
- // Valid flags for SMS_BROADCAST_RANGES.dwParams
- SMS_PARAM_SBR_BROADCASTMSGIDS = $00000001;
- SMS_PARAM_SBR_BROADCASTMSGLANGS = $00000002;
- SMS_PARAM_SBR_ACCEPTIDS = $00000004;
- //Valid values for ProtocolID
- SMS_MSGPROTOCOL_UNKNOWN = $00000000;
- SMS_MSGPROTOCOL_SMETOSME = $00000001;
- SMS_MSGPROTOCOL_IMPLICIT = $00000002;
- SMS_MSGPROTOCOL_TELEX = $00000003;
- SMS_MSGPROTOCOL_TELEFAX_GROUP3 = $00000004;
- SMS_MSGPROTOCOL_TELEFAX_GROUP4 = $00000005;
- SMS_MSGPROTOCOL_VOICEPHONE = $00000006;
- SMS_MSGPROTOCOL_ERMES = $00000007;
- SMS_MSGPROTOCOL_PAGING = $00000008;
- SMS_MSGPROTOCOL_VIDEOTEX = $00000009;
- SMS_MSGPROTOCOL_TELETEX = $0000000a;
- SMS_MSGPROTOCOL_TELETEX_PSPDN = $0000000b;
- SMS_MSGPROTOCOL_TELETEX_CSPDN = $0000000c;
- SMS_MSGPROTOCOL_TELETEX_PSTN = $0000000d;
- SMS_MSGPROTOCOL_TELETEX_ISDN = $0000000e;
- SMS_MSGPROTOCOL_UCI = $0000000f;
- SMS_MSGPROTOCOL_MSGHANDLING = $00000010;
- SMS_MSGPROTOCOL_X400 = $00000011;
- SMS_MSGPROTOCOL_EMAIL = $00000012;
- SMS_MSGPROTOCOL_SCSPECIFIC1 = $00000013;
- SMS_MSGPROTOCOL_SCSPECIFIC2 = $00000014;
- SMS_MSGPROTOCOL_SCSPECIFIC3 = $00000015;
- SMS_MSGPROTOCOL_SCSPECIFIC4 = $00000016;
- SMS_MSGPROTOCOL_SCSPECIFIC5 = $00000017;
- SMS_MSGPROTOCOL_SCSPECIFIC6 = $00000018;
- SMS_MSGPROTOCOL_SCSPECIFIC7 = $00000019;
- SMS_MSGPROTOCOL_GSMSTATION = $0000001a;
- SMS_MSGPROTOCOL_SM_TYPE0 = $0000001b;
- SMS_MSGPROTOCOL_RSM_TYPE1 = $0000001c;
- SMS_MSGPROTOCOL_RSM_TYPE2 = $0000001d;
- SMS_MSGPROTOCOL_RSM_TYPE3 = $0000001e;
- SMS_MSGPROTOCOL_RSM_TYPE4 = $0000001f;
- SMS_MSGPROTOCOL_RSM_TYPE5 = $00000020;
- SMS_MSGPROTOCOL_RSM_TYPE6 = $00000021;
- SMS_MSGPROTOCOL_RSM_TYPE7 = $00000022;
- SMS_MSGPROTOCOL_RETURNCALL = $00000023;
- SMS_MSGPROTOCOL_ME_DOWNLOAD = $00000024;
- SMS_MSGPROTOCOL_DEPERSONALIZATION = $00000025;
- SMS_MSGPROTOCOL_SIM_DOWNLOAD = $00000026;
- //
- // Enumerations
- //
- type
- SMS_ADDRESS_TYPE = (SMSAT_UNKNOWN := 0,
- SMSAT_INTERNATIONAL,
- SMSAT_NATIONAL,
- SMSAT_NETWORKSPECIFIC,
- SMSAT_SUBSCRIBER,
- SMSAT_ALPHANUMERIC,
- SMSAT_ABBREVIATED);
- SMS_DATA_ENCODING = (SMSDE_OPTIMAL := 0,
- SMSDE_GSM,
- SMSDE_UCS2);
- PROVIDER_SPECIFIC_MESSAGE_CLASS = (PS_MESSAGE_CLASS0 := 0,
- PS_MESSAGE_CLASS1,
- PS_MESSAGE_CLASS2,
- PS_MESSAGE_CLASS3,
- PS_MESSAGE_CLASSUNSPECIFIED);
- PROVIDER_SPECIFIC_REPLACE_OPTION = (PSRO_NONE := 0,
- PSRO_REPLACE_TYPE1,
- PSRO_REPLACE_TYPE2,
- PSRO_REPLACE_TYPE3,
- PSRO_REPLACE_TYPE4,
- PSRO_REPLACE_TYPE5,
- PSRO_REPLACE_TYPE6,
- PSRO_REPLACE_TYPE7,
- PSRO_RETURN_CALL,
- PSRO_DEPERSONALIZATION);
- //
- // Types
- //
- type
- SMS_HANDLE = DWORD;
- LPSMS_HANDLE = ^SMS_HANDLE;
- SMS_MESSAGE_ID = DWORD;
- LPSMS_MESSAGE_ID = ^SMS_MESSAGE_ID;
- const
- INVALID_MESSAGE_ID = SMS_MESSAGE_ID($ffffffff);
- // Registration structure used by SmsSetMessageNotification and SmsClearMessageNotification
- type
- smsregistrationdata_tag = record
- cbSize:DWORD;
- tszAppName:array[0..SMS_MAX_APPNAME_LENGTH-1] of TCHAR;
- tszParams:array[0..SMS_MAX_PARAMS_LENGTH-1] of TCHAR;
- tszProtocolName:array[0..SMS_MAX_PROTOCOLNAME_LENGTH-1] of TCHAR;
- end;
- SMSREGISTRATIONDATA = smsregistrationdata_tag;
- LPSMSREGISTRATIONDATA = ^smsregistrationdata_tag;
- // SMS addressing information
- type
- sms_address_tag = record
- smsatAddressType:SMS_ADDRESS_TYPE;
- ptsAddress:array[0..SMS_MAX_ADDRESS_LENGTH-1] of TCHAR;
- end;
- SMS_ADDRESS = sms_address_tag;
- LPSMS_ADDRESS = ^sms_address_tag;
- // SMS status message information
- type
- sms_status_information_tag = record
- smsmidMessageID:SMS_MESSAGE_ID;
- dwMessageStatus0:DWORD;
- dwMessageStatus1:DWORD;
- smsaRecipientAddress:SMS_ADDRESS;
- stServiceCenterTimeStamp:SYSTEMTIME; // (UTC time)
- stDischargeTime:SYSTEMTIME; // (UTC time)
- end;
- SMS_STATUS_INFORMATION = sms_status_information_tag;
- LPSMS_STATUS_INFORMATION = ^sms_status_information_tag;
- // SMS broadcast message range information
- type
- sms_range_tag = record
- dwMinimum:DWORD;
- dwMaximum:DWORD;
- end;
- SMS_RANGE = sms_range_tag;
- LPSMS_RANGE = ^sms_range_tag;
-
- // SMS broadcast message ranges information
- // Use #pragma to avoid "warning C4200: nonstandard extension used : zero-sized array in struct/union
- type
- sms_broadcast_ranges_tag = record
- cbSize:DWORD;
- dwParams:DWORD;
- dwNumRanges:DWORD;
- dwBroadcastMsgLangs:DWORD;
- bAccept:BOOL;
- smsrBroadcastRanges:array[0..0] of SMS_RANGE;
- end;
- SMS_BROADCAST_RANGES = sms_broadcast_ranges_tag;
- LPSMS_BROADCAST_RANGES = ^sms_broadcast_ranges_tag;
-
- //
- // SMS message types (for use with SmsOpen)
- //
- // Text message type
- const
- SMS_MSGTYPE_TEXT = 'Microsoft Text SMS Protocol';
-
- // Provider-specific data for use with SmsSendMessage and SmsReadMessage
- // Bitfield values for the extended parameters of the text provider structure.
- const
- TEXTPSEXTPARM_NONE = $00000000;
- TEXTPSEXTPARM_CALLBACK = $00000001;
- TEXTPSEXTPARM_PRIORITY = $00000002;
- TEXTPSEXTPARM_ALL = $00000003;
- // The priority enum should match up with the RIL_MSGPRIORITY_* defines.
- // If any new values are added, the Priority mapping functions of sms_txtshared_cdma.cpp
- // should also be adjusted.
- type
- TEXT_PROVIDER_SPECIFIC_PRIORITY_TYPE = (TEXTPSPRI_NONE := 0,
- TEXTPSPRI_NORMAL := 1,
- TEXTPSPRI_INTERACTIVE,
- TEXTPSPRI_URGENT,
- TEXTPSPRI_EMERGENCY);
- type
- text_provider_specific_data_tag = record
- dwMessageOptions:DWORD;
- psMessageClass:PROVIDER_SPECIFIC_MESSAGE_CLASS;
- psReplaceOption:PROVIDER_SPECIFIC_REPLACE_OPTION;
- dwHeaderDataSize:DWORD;
- pbHeaderData:array[0..SMS_DATAGRAM_SIZE-1] of byte; // For concatenated messages, only the header from the first segment is returned.
- fMessageContainsEMSHeaders:BOOL; // At least one segment of this message contains EMS headers.
- // Only set if EMS handler installed.
- dwProtocolID:DWORD; // PID of incoming message, or desired PID of outgoing message.
- // Applies only to GSM. Set to SMS_MSGPROTOCOL_UNKNOWN if psReplaceOption
- // is not PSRO_NONE.
- dwExtParams:DWORD; // Bitfield of valid additional structure parameters (all structure
- // values above are considered always valid).
- tpsPriority:TEXT_PROVIDER_SPECIFIC_PRIORITY_TYPE; // Applies only to CDMA IS637. Priority indicator.
- smsaCallback:SMS_ADDRESS; // Applies only to CDMA IS637. Callback number
- end;
- TEXT_PROVIDER_SPECIFIC_DATA = text_provider_specific_data_tag;
- // Class 2 Text message type
- const
- SMS_MSGTYPE_CLASS2 = 'Microsoft Class2 SMS Protocol';
- type
- class2_provider_specific_data_tag = record
- dwMessageOptions:DWORD;
- psMessageClass:PROVIDER_SPECIFIC_MESSAGE_CLASS;
- psReplaceOption:PROVIDER_SPECIFIC_REPLACE_OPTION;
- dwHeaderDataSize:DWORD;
- pbHeaderData:array[0..SMS_DATAGRAM_SIZE-1] of byte; // For concatenated messages, only the header from the first segment is returned.
- fMessageContainsEMSHeaders:BOOL; // At least one segment of this message contains EMS headers.
- // Only set if EMS handler installed.
- dwProtocolID:DWORD; // PID of incoming message, or desired PID of outgoing message.
- // Applies only to GSM. Set to SMS_MSGPROTOCOL_UNKNOWN if psReplaceOption
- // is not PSRO_NONE.
- dwLocation:DWORD;
- dwIndex:DWORD;
- end;
- CLASS2_PROVIDER_SPECIFIC_DATA = class2_provider_specific_data_tag;
- // Notification message type
- const
- SMS_MSGTYPE_NOTIFICATION = 'Microsoft Notification SMS Protocol (Receive Only)';
- // Provider-specific data for use with SmsReadMessage
- type
- NOTIFICATION_PROVIDER_SPECIFIC_MSG_WAITING_TYPE = (NOTIFICATIONPSMWT_NONE := 0,
- NOTIFICATIONPSMWT_GENERIC,
- NOTIFICATIONPSMWT_VOICEMAIL,
- NOTIFICATIONPSMWT_FAX,
- NOTIFICATIONPSMWT_EMAIL,
- NOTIFICATIONPSMWT_OTHER);
- const
- NOTIFICATIONPS_NUM_MSG_WAITING_UNKNOWN = -1;
- NOTIFICATIONPS_NUM_MSG_WAITING_NONZERO = -2;
- type
- NOTIFICATION_PROVIDER_SPECIFIC_INDICATOR_TYPE = (NOTIFICATIONPSIT_NONE := 0,
- NOTIFICATIONPSIT_LINE1 := 1,
- NOTIFICATIONPSIT_LINE2 := 2);
- type
- notification_provider_specific_data_tag = record
- dwMessageOptions:DWORD;
- psMessageClass:PROVIDER_SPECIFIC_MESSAGE_CLASS;
- psReplaceOption:PROVIDER_SPECIFIC_REPLACE_OPTION;
- npsMsgWaitingType:NOTIFICATION_PROVIDER_SPECIFIC_MSG_WAITING_TYPE;
- iNumberOfMessagesWaiting:longint;
- npsIndicatorType:NOTIFICATION_PROVIDER_SPECIFIC_INDICATOR_TYPE;
- end;
- NOTIFICATION_PROVIDER_SPECIFIC_DATA = notification_provider_specific_data_tag;
- // WDP message type
- const
- SMS_MSGTYPE_WDP = 'Microsoft WDP SMS Protocol';
- // Provider-specific data for use with SmsSendMessage and SmsReadMessage
- type
- WDP_PROVIDER_SPECIFIC_PORT_ADDRESSING = (WDPPSPA_8_BIT_PORT_NUMBERS := 0,
- WDPPSPA_16_BIT_PORT_NUMBERS);
- type
- wdp_provider_specific_data_tag = record
- wdppsPortAddressing:WDP_PROVIDER_SPECIFIC_PORT_ADDRESSING;
- wDestinationPort:word;
- wOriginatorPort:word;
- end;
- WDP_PROVIDER_SPECIFIC_DATA = wdp_provider_specific_data_tag;
- // WCMP message type
- const
- SMS_MSGTYPE_WCMP = 'Microsoft WCMP SMS Protocol';
-
- // Provider-specific data for use with SmsSendMessage and SmsReadMessage
- type
- WCMP_PROVIDER_SPECIFIC_MESSAGE_TYPE = (WCMPPSMT_UNSUPPORTED := 0,
- WCMPPSMT_PORT_UNREACHABLE,
- WCMPPSMT_MESSAGE_TOO_BIG,
- WCMPPSMT_ECHO_REQUEST,
- WCMPPSMT_ECHO_REPLY);
- type
- wcmp_provider_specific_data_tag = record
- wcmppsMessageType:WCMP_PROVIDER_SPECIFIC_MESSAGE_TYPE;
- wParam1:word;
- wParam2:word;
- wParam3:word;
- smsaAddress:SMS_ADDRESS;
- end;
- WCMP_PROVIDER_SPECIFIC_DATA = wcmp_provider_specific_data_tag;
- // Status message type
- const
- SMS_MSGTYPE_STATUS = 'Microsoft Status Message SMS Protocol (Receive Only)';
- // Provider-specific data for use with SmsReadMessage
- type
- status_provider_specific_data_tag = record
- smssiStatusInformation:SMS_STATUS_INFORMATION;
- end;
- STATUS_PROVIDER_SPECIFIC_DATA = status_provider_specific_data_tag;
- // Broadcast message type
- const
- SMS_MSGTYPE_BROADCAST = 'Microsoft Broadcast Message SMS Protocol (Receive Only)';
- type
- BROADCAST_PROVIDER_SPECIFIC_GEOGRAPHICAL_SCOPE = (BPSGS_UNKNOWN := 0,
- BPSGS_CELL_DISPLAY_IMMEDIATE,
- BPSGS_CELL,
- BPSGS_PLMN,
- BPSGS_LOCATION_AREA);
- // Provider-specific data for use with SmsReadMessage
- type
- broadcast_provider_specific_data_tag = record
- wMessageID:word;
- wMessageCode:word;
- bpsgsGeographicalScope:BROADCAST_PROVIDER_SPECIFIC_GEOGRAPHICAL_SCOPE;
- wUpdateNumber:word;
- end;
- BROADCAST_PROVIDER_SPECIFIC_DATA = broadcast_provider_specific_data_tag;
- // Raw message type
- const
- SMS_MSGTYPE_RAW = 'Microsoft Raw SMS Protocol (Receive Only)';
-
- // Provider-specific data for use with SmsReadMessage
- type
- raw_provider_specific_data_tag = record
- dwHeaderDataSize:DWORD;
- pbHeaderData:array[0..SMS_DATAGRAM_SIZE-1] of byte;
- end;
- RAW_PROVIDER_SPECIFIC_DATA = raw_provider_specific_data_tag;
- //
- // APIs for SMS.dll
- //
- const
- SmsDLL = 'sms.dll';
- function SmsSetMessageNotification(psmsrd:LPSMSREGISTRATIONDATA):HRESULT; external SmsDLL name 'SmsSetMessageNotification';
- function SmsClearMessageNotification(tszProtocolName:LPCTSTR):HRESULT; external SmsDLL name 'SmsClearMessageNotification';
- // Open the SMS Messaging component for read and/or write access
- //
- // Each protocol may only have one handle open with SMS_MODE_RECEIVE.
- // Additional attempts to get RECEIVE mode on a given protocol will result in
- // SMS_E_RECEIVEHANDLEALREADYOPEN.
- //
- // Currently all protocols have applications whith open RECEIVE handles. As a
- // result, using the SMS API to receive SMS messages is not supported. Attempts
- // to do so may interfere with the proper operation of Inbox, WAP, or other SMS
- // applications.
- //
- // The IMailRuleClient interface in cemapi.h may be used to access received
- // text SMS messages.
- function SmsOpen(ptsMessageProtocol:LPCTSTR;
- dwMessageModes:DWORD;
- psmshHandle:LPSMS_HANDLE;
- phMessageAvailableEvent:LPHANDLE):HRESULT; external SmsDLL name 'SmsOpen';
- // Close a handle to the SMS messaging component
- function SmsClose(smshHandle:SMS_HANDLE):HRESULT; external SmsDLL name 'SmsClose';
- // Send an SMS message
- function SmsSendMessage(smshHandle:SMS_HANDLE;
- psmsaSMSCAddress:LPSMS_ADDRESS;
- psmsaDestinationAddress:LPSMS_ADDRESS;
- pstValidityPeriod:LPSYSTEMTIME; // (Values in this structure are expressed relative to the current time)
- pbData:LPBYTE;
- dwDataSize:DWORD;
- pbProviderSpecificData:LPBYTE;
- dwProviderSpecificDataSize:DWORD;
- smsdeDataEncoding:SMS_DATA_ENCODING;
- dwOptions:DWORD;
- psmsmidMessageID:LPSMS_MESSAGE_ID):HRESULT; external SmsDLL name 'SmsSendMessage';
- // Determine an upper-bound for the size of the buffer needed by the next call to SmsReadMessage
- function SmsGetMessageSize(smshHandle:SMS_HANDLE;
- pdwDataSize:LPDWORD):HRESULT; external SmsDLL name 'SmsGetMessageSize';
- // Read an SMS message (the appropriate size of the buffer can be found via a call to SmsGetMessageSize)
- function SmsReadMessage(smshHandle:SMS_HANDLE;
- psmsaSMSCAddress:LPSMS_ADDRESS;
- psmsaSourceAddress:LPSMS_ADDRESS;
- pstReceiveTime:LPSYSTEMTIME; // (UTC time)
- pbBuffer:LPBYTE;
- dwBufferSize:DWORD;
- pbProviderSpecificBuffer:LPBYTE;
- dwProviderSpecificDataBuffer:DWORD;
- pdwBytesRead:LPDWORD):HRESULT; external SmsDLL name 'SmsReadMessage';
- // Waits to receive a status-report for an SMS message
- function SmsGetMessageStatus(smshHandle:SMS_HANDLE;
- smsmidMessageID:SMS_MESSAGE_ID;
- psmssiStatusInformation:LPSMS_STATUS_INFORMATION;
- dwTimeout:DWORD):HRESULT; external SmsDLL name 'SmsGetMessageStatus';
- // Get the default SMS Service Center address
- function SmsGetSMSC(psmsaSMSCAddress:LPSMS_ADDRESS):HRESULT; external SmsDLL name 'SmsGetSMSC';
- // Set the default SMS Service Center address
- function SmsSetSMSC(psmsaSMSCAddress:LPSMS_ADDRESS):HRESULT; external SmsDLL name 'SmsSetSMSC';
- // Get the range of broadcast messages to listen for
- function SmsGetBroadcastMsgRanges(psmsbrBroadcastRanges:LPSMS_BROADCAST_RANGES):HRESULT; external SmsDLL name 'SmsGetBroadcastMsgRanges';
- // Set the range of broadcast messages to listen for
- function SmsSetBroadcastMsgRanges(psmsbrBroadcastRanges:LPSMS_BROADCAST_RANGES):HRESULT; external SmsDLL name 'SmsSetBroadcastMsgRanges';
- // Get the device's phone number for SMS
- function SmsGetPhoneNumber(psmsaAddress:LPSMS_ADDRESS):HRESULT; external SmsDLL name 'SmsGetPhoneNumber';
- // Approximate the system time based on the time indicated by the SMSC in the last status-report message
- function SmsGetTime(ptsCurrentTime:LPSYSTEMTIME; // (UTC time)
- pdwErrorMargin:LPDWORD):HRESULT; external SmsDLL name 'SmsGetTime';
- implementation
- end.