summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryury <yury@3ad0048d-3df7-0310-abae-a5850022a9f2>2008-12-17 12:59:02 +0000
committeryury <yury@3ad0048d-3df7-0310-abae-a5850022a9f2>2008-12-17 12:59:02 +0000
commit5164e7c229117b5b1798885156dc84ba72f13306 (patch)
treefb6cfa2141fae1f0968e79063599dfb00c4b4747
parent4303a67bf767d474c8e9c7877e8835a713f400b3 (diff)
downloadfpc-5164e7c229117b5b1798885156dc84ba72f13306.tar.gz
Merged revisions 11191-11192,11203-11204,11218,11904-11906 via svnmerge from
http://svn.freepascal.org/svn/fpc/trunk ........ r11191 | yury | 2008-06-04 17:13:39 +0300 (Ср, 04 июн 2008) | 1 line * Added CP_UTF7 and CP_UTF8 constants. Mantis #10822. ........ r11192 | yury | 2008-06-04 17:58:20 +0300 (Ср, 04 июн 2008) | 1 line + Added many new wince api interface units by Vasil Maximov. ........ r11203 | yury | 2008-06-05 11:27:26 +0300 (Чт, 05 июн 2008) | 2 lines * Added some types by Vasil Maximov. ........ r11204 | yury | 2008-06-05 11:39:00 +0300 (Чт, 05 июн 2008) | 1 line + Added more wince api interface units by Vasil Maximov. ........ r11218 | yury | 2008-06-11 13:50:18 +0300 (Ср, 11 июн 2008) | 1 line * Some additions to Windows unit by Vasil Maximov. ........ r11904 | yury | 2008-10-16 14:43:01 +0300 (Чт, 16 окт 2008) | 1 line + New wince api units and some fixes to existing api units by Vasil Maximov. ........ r11905 | yury | 2008-10-17 13:41:46 +0300 (Пт, 17 окт 2008) | 1 line + Some fixes to wince api units by Vasil Maximov. ........ r11906 | yury | 2008-10-17 13:45:52 +0300 (Пт, 17 окт 2008) | 1 line + ras and raserror wince api units by Vasil Maximov. ........ git-svn-id: http://svn.freepascal.org/svn/fpc/branches/fixes_2_2@12374 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r--packages/winceunits/Makefile10
-rw-r--r--packages/winceunits/Makefile.fpc3
-rw-r--r--packages/winceunits/src/aygshell.pp9
-rw-r--r--packages/winceunits/src/bt_api.pp595
-rw-r--r--packages/winceunits/src/bt_sdp.pp228
-rw-r--r--packages/winceunits/src/bthapi.pp388
-rw-r--r--packages/winceunits/src/bthutil.pp83
-rw-r--r--packages/winceunits/src/buildwinceunits.pp4
-rw-r--r--packages/winceunits/src/connmgr.pp726
-rw-r--r--packages/winceunits/src/devload.pp240
-rw-r--r--packages/winceunits/src/devmgmt.pp73
-rw-r--r--packages/winceunits/src/keybd.pp315
-rw-r--r--packages/winceunits/src/mmreg.pp3135
-rw-r--r--packages/winceunits/src/mmsystem.pp1881
-rw-r--r--packages/winceunits/src/msacm.pp1182
-rw-r--r--packages/winceunits/src/nled.pp244
-rw-r--r--packages/winceunits/src/phone.pp325
-rw-r--r--packages/winceunits/src/ras.pp901
-rw-r--r--packages/winceunits/src/raserror.pp210
-rw-r--r--packages/winceunits/src/ril.pp8735
-rw-r--r--packages/winceunits/src/sms.pp582
-rw-r--r--packages/winceunits/src/wininet.pp4362
-rw-r--r--packages/winceunits/src/ws2bth.pp320
-rw-r--r--rtl/wince/wininc/base.inc45
-rw-r--r--rtl/wince/wininc/coredll.inc174
-rw-r--r--rtl/wince/wininc/defines.inc207
-rw-r--r--rtl/wince/wininc/messages.inc7
-rw-r--r--rtl/wince/wininc/struct.inc39
-rw-r--r--rtl/wince/winsock2.pp34
29 files changed, 24828 insertions, 229 deletions
diff --git a/packages/winceunits/Makefile b/packages/winceunits/Makefile
index 5c18a9cc09..36b339c852 100644
--- a/packages/winceunits/Makefile
+++ b/packages/winceunits/Makefile
@@ -1,5 +1,5 @@
#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2008/06/15]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2008/12/16]
#
default: all
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded
@@ -115,6 +115,10 @@ FPC:=$(shell $(FPCPROG) -PB)
endif
ifneq ($(findstring Error,$(FPC)),)
override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+else
+ifeq ($(strip $(wildcard $(FPC))),)
+FPC:=$(firstword $(FPCPROG))
+endif
endif
else
override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
@@ -270,10 +274,10 @@ ifeq ($(FULL_TARGET),arm-wince)
override TARGET_UNITS+=buildwinceunits
endif
ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=aygshell commctrl commdlg iphlpapi notify oleauto power shellapi simmgr tapi gpsapi todaycmn windbase cesync gx winioctl msgqueue pm service htmlctrl sipapi cpl
+override TARGET_IMPLICITUNITS+=aygshell commctrl commdlg iphlpapi notify oleauto power shellapi simmgr tapi gpsapi todaycmn windbase cesync gx winioctl msgqueue pm service htmlctrl sipapi cpl bt_api bt_sdp bthapi bthutil ril sms ws2bth keybd nled phone connmgr devload devmgmt mmreg mmsystem msacm wininet ras raserror
endif
ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=aygshell commctrl commdlg iphlpapi notify oleauto power shellapi simmgr tapi gpsapi todaycmn windbase cesync gx winioctl msgqueue pm service htmlctrl sipapi cpl
+override TARGET_IMPLICITUNITS+=aygshell commctrl commdlg iphlpapi notify oleauto power shellapi simmgr tapi gpsapi todaycmn windbase cesync gx winioctl msgqueue pm service htmlctrl sipapi cpl bt_api bt_sdp bthapi bthutil ril sms ws2bth keybd nled phone connmgr devload devmgmt mmreg mmsystem msacm wininet ras raserror
endif
override INSTALL_BUILDUNIT=buildwinceunits
override INSTALL_FPCPACKAGE=y
diff --git a/packages/winceunits/Makefile.fpc b/packages/winceunits/Makefile.fpc
index 3b25033977..a41592312c 100644
--- a/packages/winceunits/Makefile.fpc
+++ b/packages/winceunits/Makefile.fpc
@@ -10,7 +10,8 @@ version=2.2.3
units_wince=buildwinceunits
implicitunits_wince=aygshell commctrl commdlg iphlpapi notify oleauto power shellapi simmgr tapi \
gpsapi todaycmn windbase cesync gx winioctl msgqueue pm service htmlctrl \
- sipapi cpl
+ sipapi cpl bt_api bt_sdp bthapi bthutil ril sms ws2bth keybd nled \
+ phone connmgr devload devmgmt mmreg mmsystem msacm wininet ras raserror
units_win32=rapi cesync
[install]
diff --git a/packages/winceunits/src/aygshell.pp b/packages/winceunits/src/aygshell.pp
index 83dc1012d5..1d5c2c9721 100644
--- a/packages/winceunits/src/aygshell.pp
+++ b/packages/winceunits/src/aygshell.pp
@@ -43,7 +43,6 @@
29 ComboEditAutoComplete
45 ComboSubProc
190 CreateImageCache
- 2021 DMProcessConfigXML
330 DPI_ExtractIconEx
311 DPI_LoadImageFile
310 DPI_LoadLibraryRes
@@ -364,10 +363,10 @@ const
SIP_STATUS_UNAVAILABLE = 0;
SIP_STATUS_AVAILABLE = 1;
- SIPF_OFF = $00000000;
- SIPF_ON = $00000001;
- SIPF_DOCKED = $00000002;
- SIPF_LOCKED = $00000004;
+ SIPF_OFF = $00000000;
+ SIPF_ON = $00000001;
+ SIPF_DOCKED = $00000002;
+ SIPF_LOCKED = $00000004;
{Supported system parameters}
SPI_SETCOMPLETIONINFO = 223;
diff --git a/packages/winceunits/src/bt_api.pp b/packages/winceunits/src/bt_api.pp
new file mode 100644
index 0000000000..705d897a02
--- /dev/null
+++ b/packages/winceunits/src/bt_api.pp
@@ -0,0 +1,595 @@
+{
+ 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.
+
+ ********************************************************************** }
+//------------------------------------------------------------------------------
+//
+// Bluetooth client API declarations
+//
+//
+// Module Name:
+//
+// bt_api.h
+//
+// Abstract:
+//
+// This file defines client-level APIs to Bluetooth stack
+//
+//
+//------------------------------------------------------------------------------
+//
+// Bluetooth client API
+//
+
+//
+// Microsoft Windows Mobile 6.0 for PocketPC SDK.
+//
+
+unit bt_api;
+
+{$CALLING cdecl}
+
+interface
+
+uses Windows, WinSock2, WinIOCtl, ws2bth;
+
+//
+// COD classes
+//
+const
+ BTH_COD_MAJOR_SERVICE_CLASS_INFORMATION = $800000;
+ BTH_COD_MAJOR_SERVICE_CLASS_TELEPHONY = $400000;
+ BTH_COD_MAJOR_SERVICE_CLASS_AUDIO = $200000;
+ BTH_COD_MAJOR_SERVICE_CLASS_OBEX = $100000;
+ BTH_COD_MAJOR_SERVICE_CLASS_CAPTURE = $080000;
+ BTH_COD_MAJOR_SERVICE_CLASS_RENDERING = $040000;
+ BTH_COD_MAJOR_SERVICE_CLASS_NETWORK = $020000;
+ BTH_COD_MAJOR_SERVICE_CLASS_LIMITED_DISC = $002000;
+
+ BTH_COD_MAJOR_DEVICE_CLASS_MISC = $000000;
+ BTH_COD_MAJOR_DEVICE_CLASS_COMPUTER = $000100;
+ BTH_COD_MAJOR_DEVICE_CLASS_PHONE = $000200;
+ BTH_COD_MAJOR_DEVICE_CLASS_LAP = $000300;
+ BTH_COD_MAJOR_DEVICE_CLASS_AUDIO = $000400;
+ BTH_COD_MAJOR_DEVICE_CLASS_PERIPHERAL = $000500;
+ BTH_COD_MAJOR_DEVICE_CLASS_UNCLASSIFIED = $001f00;
+
+ BTH_COD_MINOR_COMPUTER_UNCLASSIFIED = $000000;
+ BTH_COD_MINOR_COMPUTER_DESKTOP = $000004;
+ BTH_COD_MINOR_COMPUTER_SERVER = $000008;
+ BTH_COD_MINOR_COMPUTER_LAPTOP = $00000c;
+ BTH_COD_MINOR_COMPUTER_HANDHELD = $000010;
+ BTH_COD_MINOR_COMPUTER_PDA = $000014;
+
+ BTH_COD_MINOR_PHONE_UNCLASSIFIED = $000000;
+ BTH_COD_MINOR_PHONE_CELL = $000004;
+ BTH_COD_MINOR_PHONE_CORDLESS = $000008;
+ BTH_COD_MINOR_PHONE_SMART = $00000c;
+ BTH_COD_MINOR_PHONE_WIRED = $000010;
+
+ BTH_COD_MINOR_LAP_AVAILABLE = $000000;
+ BTH_COD_MINOR_LAP_1_17 = $000004;
+ BTH_COD_MINOR_LAP_17_33 = $000008;
+ BTH_COD_MINOR_LAP_33_50 = $00000c;
+ BTH_COD_MINOR_LAP_50_67 = $000010;
+ BTH_COD_MINOR_LAP_67_83 = $000014;
+ BTH_COD_MINOR_LAP_83_99 = $000018;
+ BTH_COD_MINOR_LAP_NO_SERVICE = $00001c;
+
+ BTH_COD_MINOR_AUDIO_UNCLASSIFIED = $000000;
+ BTH_COD_MINOR_AUDIO_HEADSET = $000004;
+
+ BTH_NAMEDEVENT_PAIRING_CHANGED = 'system/events/bluetooth/PairingChange';
+ BTH_NAMEDEVENT_HARDWARE_CHANGED = 'system/events/bluetooth/HardwareChange';
+ BTH_NAMEDEVENT_DEVICEID_CHANGED = 'system/events/bluetooth/DeviceIdChange';
+ BTH_NAMEDEVENT_CONNECTIVITY_CHANGED = 'system/events/bluetooth/ConnectivityChange';
+ BTH_NAMEDEVENT_SECURITY_CHANGED = 'system/events/bluetooth/SecurityChange';
+ BTH_NAMEDEVENT_CONNECTIONS_CHANGED = 'system/events/bluetooth/ConnectionsChange';
+ BTH_NAMEDEVENT_BASEBAND_CHANGED = 'system/events/bluetooth/BasebandChange';
+ BTH_NAMEDEVENT_STACK_INITED = 'system/events/bluetooth/StackInitialized';
+ BTH_NAMEDEVENT_PAN_REFRESH = 'system/events/bluetooth/pan/refresh';
+
+
+{$IFNDEF __bt_ddi_H__}
+//
+// Attention: also defined in bt_ddi.h! Keep in sync!
+//
+// Hardware Status
+//
+const
+ HCI_HARDWARE_UNKNOWN = 0;
+ HCI_HARDWARE_NOT_PRESENT = 1;
+ HCI_HARDWARE_INITIALIZING = 2;
+ HCI_HARDWARE_RUNNING = 3;
+ HCI_HARDWARE_SHUTDOWN = 4;
+ HCI_HARDWARE_ERROR = 5;
+{$ENDIF __bt_ddi_H__}
+
+const
+ BTH_GET_BASEBAND_CONNECTIONS_EX_API_VERSION = 1;
+
+type
+ _BASEBAND_CONNECTION = record
+ hConnection:USHORT;
+ baAddress:BT_ADDR;
+ cDataPacketsPending:longint;
+ _flags:UINT;
+{
+ UINT fLinkType : 1; // The type of link. Zero (0) indicates SCO, and 1 indicates ACL.
+ UINT fEncrypted : 1; // Encryption is enabled.
+ UINT fAuthenticated : 1; // Indicates whether the connection has been authenticated.
+ UINT fMode : 3; // The connection mode.
+}
+ end;
+ BASEBAND_CONNECTION = _BASEBAND_CONNECTION;
+ PBASEBAND_CONNECTION = ^_BASEBAND_CONNECTION;
+
+type
+ _BASEBAND_CONNECTION_EX = record
+ hConnection:USHORT;
+ baAddress:BT_ADDR;
+ cDataPacketsPending:longint;
+ link_type:UCHAR;
+ mode:UCHAR;
+ _flags:UINT;
+{
+ UINT fEncrypted : 1;
+ BOOL fAuthenticated : 1;
+}
+ end;
+ BASEBAND_CONNECTION_EX = _BASEBAND_CONNECTION_EX;
+ PBASEBAND_CONNECTION_EX = ^_BASEBAND_CONNECTION_EX;
+
+const
+ HCI_PAGE_SCAN_TYPE_STANDARD = $00;
+ HCI_PAGE_SCAN_TYPE_INTERLACED = $01;
+
+ HCI_INQUIRY_SCAN_TYPE_STANDARD = $00;
+ HCI_INQUIRY_SCAN_TYPE_INTERLACED = $01;
+
+
+//
+// Warning: To use the following Bth* APIs you must link to btdrt.lib.
+// This library may or may not be available in your SDK.
+//
+// To preserve Win32 compatibility, consider using the Winsock equivalent
+// of these functions.
+//
+
+
+
+const
+ BtdrtDll = 'btdrt.dll';
+
+//
+// Management APIs
+//
+function BthWriteScanEnableMask(mask:byte):longint; external BtdrtDll name 'BthWriteScanEnableMask';
+
+function BthReadScanEnableMask(pmask:LPBYTE):longint; external BtdrtDll name 'BthReadScanEnableMask';
+
+function BthWritePageTimeout(timeout:word):longint; external BtdrtDll name 'BthWritePageTimeout';
+
+function BthReadPageTimeout(ptimeout:LPWORD):longint; external BtdrtDll name 'BthReadPageTimeout';
+
+function BthWriteCOD(cod:dword):longint; external BtdrtDll name 'BthWriteCOD';
+
+function BthReadCOD(pcod:LPDWORD):longint; external BtdrtDll name 'BthReadCOD';
+
+function BthGetRemoteCOD(pbt:PBT_ADDR; pcod:LPDWORD):longint; external BtdrtDll name 'BthGetRemoteCOD';
+
+function BthWriteAuthenticationEnable(ae:byte):longint; external BtdrtDll name 'BthWriteAuthenticationEnable';
+
+function BthReadAuthenticationEnable(pae:LPBYTE):longint; external BtdrtDll name 'BthReadAuthenticationEnable';
+
+function BthWriteLinkPolicySettings(pba:PBT_ADDR; lps:word):longint; external BtdrtDll name 'BthWriteLinkPolicySettings';
+
+function BthReadLinkPolicySettings(pba:PBT_ADDR; plps:LPWORD):longint; external BtdrtDll name 'BthReadLinkPolicySettings';
+
+function BthEnterHoldMode(pba:PBT_ADDR; hold_mode_max:word; hold_mode_min:word; pinterval:LPWORD):longint; external BtdrtDll name 'BthEnterHoldMode';
+
+function BthEnterSniffMode(pba:PBT_ADDR;
+ sniff_mode_max:word;
+ sniff_mode_min:word;
+ sniff_attempt:word;
+ sniff_timeout:word;
+ pinterval:LPWORD):longint; external BtdrtDll name 'BthEnterSniffMode';
+
+function BthExitSniffMode(pba:PBT_ADDR):longint; external BtdrtDll name 'BthExitSniffMode';
+
+function BthEnterParkMode(pba:PBT_ADDR; beacon_max:word; beacon_min:word; pinterval:LPWORD):longint; external BtdrtDll name 'BthEnterParkMode';
+
+function BthExitParkMode(pba:PBT_ADDR):longint; external BtdrtDll name 'BthExitParkMode';
+
+function BthGetCurrentMode(pba:PBT_ADDR; pmode:LPBYTE):longint; external BtdrtDll name 'BthGetCurrentMode';
+
+function BthGetBasebandHandles(cHandles:longint; pHandles:LPWORD; pcHandlesReturned:PLongint):longint; external BtdrtDll name 'BthGetBasebandHandles';
+
+function BthGetBasebandConnections(cConnections:longint; pConnections:PBASEBAND_CONNECTION; pcConnectionsReturned:PLongint):longint; external BtdrtDll name 'BthGetBasebandConnections';
+
+function BthGetBasebandConnectionsEx(dwApiVersion:DWORD;
+ cConnections:longint;
+ pConnections:PBASEBAND_CONNECTION_EX;
+ pcConnectionsReturned:PLongint):longint; external BtdrtDll name 'BthGetBasebandConnectionsEx';
+
+function BthGetAddress(_handle:word; pba:PBT_ADDR):longint; external BtdrtDll name 'BthGetAddress';
+
+function BthReadLocalAddr(pba:PBT_ADDR):longint; external BtdrtDll name 'BthReadLocalAddr';
+
+function BthGetHardwareStatus(pistatus:PLongint):longint; external BtdrtDll name 'BthGetHardwareStatus';
+
+function BthReadLocalVersion(phci_version:LPBYTE;
+ phci_revision:LPWORD;
+ plmp_version:LPBYTE;
+ plmp_subversion:LPWORD;
+ pmanufacturer:LPWORD;
+ plmp_features:LPBYTE):longint; external BtdrtDll name 'BthReadLocalVersion';
+
+function BthReadRemoteVersion(pba:PBT_ADDR;
+ plmp_version:LPBYTE;
+ plmp_subversion:LPWORD;
+ pmanufacturer:LPWORD;
+ plmp_features:LPBYTE):longint; external BtdrtDll name 'BthReadRemoteVersion';
+
+function BthPerformInquiry(LAP:LongWord;
+ _length:byte;
+ num_responses:byte;
+ cBuffer:LongWord;
+ pcDiscoveredDevices:LPDWORD;
+ InquiryList:PBthInquiryResult):longint; external BtdrtDll name 'BthPerformInquiry';
+
+function BthCancelInquiry:longint; external BtdrtDll name 'BthCancelInquiry';
+
+function BthRemoteNameQuery(pba:PBT_ADDR; cBuffer:LongWord; pcRequired:LPDWORD; szString:PWCHAR):longint; external BtdrtDll name 'BthRemoteNameQuery';
+
+function BthTerminateIdleConnections:longint; external BtdrtDll name 'BthTerminateIdleConnections';
+
+function BthSetInquiryFilter(pba:PBT_ADDR):longint; external BtdrtDll name 'BthSetInquiryFilter';
+
+function BthSetCODInquiryFilter(cod:LongWord; codMask:LongWord):longint; external BtdrtDll name 'BthSetCODInquiryFilter';
+
+function BthClearInquiryFilter:longint; external BtdrtDll name 'BthClearInquiryFilter';
+
+function BthSwitchRole(pbt:PBT_ADDR; usRole:USHORT):longint; external BtdrtDll name 'BthSwitchRole';
+
+function BthGetRole(pbt:PBT_ADDR; pusRole:PUSHORT):longint; external BtdrtDll name 'BthGetRole';
+
+function BthReadRSSI(pbt:PBT_ADDR; pbRSSI:LPBYTE):longint; external BtdrtDll name 'BthReadRSSI';
+
+//
+// Security manager APIs
+//
+function BthSetPIN(pba:PBT_ADDR; cPinLength:longint; ppin:LPBYTE):longint; external BtdrtDll name 'BthSetPIN';
+
+function BthRevokePIN(pba:PBT_ADDR):longint; external BtdrtDll name 'BthRevokePIN';
+
+type
+ TBthLinkKey = packed array[0..15] of byte;
+ PBthLinkKey = ^TBthLinkKey;
+
+
+function BthSetLinkKey(pba:PBT_ADDR; key:TBthLinkKey):longint; external BtdrtDll name 'BthSetLinkKey';
+
+function BthGetLinkKey(pba:PBT_ADDR; key:TBthLinkKey):longint; external BtdrtDll name 'BthGetLinkKey';
+
+function BthRevokeLinkKey(pba:PBT_ADDR):longint; external BtdrtDll name 'BthRevokeLinkKey';
+
+function BthAuthenticate(pba:PBT_ADDR):longint; external BtdrtDll name 'BthAuthenticate';
+
+function BthSetEncryption(pba:PBT_ADDR; fOn:longint):longint; external BtdrtDll name 'BthSetEncryption';
+
+function BthSetSecurityUI(_hEvent:HANDLE; dwStoreTimeout:DWORD; dwProcTimeout:DWORD):longint; external BtdrtDll name 'BthSetSecurityUI';
+
+function BthGetPINRequest(pbt:PBT_ADDR):longint; external BtdrtDll name 'BthGetPINRequest';
+
+function BthRefusePINRequest(pbt:PBT_ADDR):longint; external BtdrtDll name 'BthRefusePINRequest';
+
+function BthAnswerPairRequest(pba:PBT_ADDR; cPinLength:longint; ppin:LPBYTE):longint; external BtdrtDll name 'BthAnswerPairRequest';
+
+function BthPairRequest(pba:PBT_ADDR; cPinLength:longint; ppin:LPBYTE):longint; external BtdrtDll name 'BthAnswerPairRequest';
+
+//
+// Connection APIs
+//
+
+function BthCreateACLConnection(pbt:PBT_ADDR; _phandle:LPWORD):longint; external BtdrtDll name 'BthCreateACLConnection';
+
+function BthCreateSCOConnection(pbt:PBT_ADDR; _phandle:LPWORD):longint; external BtdrtDll name 'BthCreateSCOConnection';
+
+function BthCloseConnection(_handle:word):longint; external BtdrtDll name 'BthCloseConnection';
+
+function BthAcceptSCOConnections(fAccept:BOOL):longint; external BtdrtDll name 'BthAcceptSCOConnections';
+
+function BthWritePageScanActivity(pageScanInterval:word; pageScanWindow:word):longint; external BtdrtDll name 'BthWritePageScanActivity';
+
+function BthWriteInquiryScanActivity(inquiryScanInterval:word; inquiryScanWindow:word):longint; external BtdrtDll name 'BthWriteInquiryScanActivity';
+
+function BthReadPageScanActivity(pPageScanInterval:LPWORD; pPageScanWindow:LPWORD):longint; external BtdrtDll name 'BthReadPageScanActivity';
+
+function BthReadInquiryScanActivity(pInquiryScanInterval:LPWORD; pInquiryScanWindow:LPWORD):longint; external BtdrtDll name 'BthReadInquiryScanActivity';
+
+function BthWritePageScanType(pageScanType:byte):longint; external BtdrtDll name 'BthWritePageScanType';
+
+function BthWriteInquiryScanType(inquiryScanType:byte):longint; external BtdrtDll name 'BthWriteInquiryScanType';
+
+function BthReadPageScanType(pPageScanType:LPBYTE):longint; external BtdrtDll name 'BthReadPageScanType';
+
+function BthReadInquiryScanType(pInquiryScanType:LPBYTE):longint; external BtdrtDll name 'BthReadInquiryScanType';
+
+function BthCreateSynchronousConnection(pbt:PBT_ADDR;
+ pHandle:LPWORD;
+ txBandwidth:LongWord;
+ rxBandwidth:LongWord;
+ maxLatency:word;
+ voiceSetting:word;
+ retransmit:byte):longint; external BtdrtDll name 'BthCreateSynchronousConnection';
+
+function BthAcceptSynchronousConnections(fAccept:BOOL):longint; external BtdrtDll name 'BthAcceptSynchronousConnections';
+
+
+//
+// SDP Name Service APIs
+//
+type
+{
+ SdpAttributeRange = _SdpAttributeRange;
+ SdpQueryUuid = _SdpQueryUuid;
+}
+
+ _WSAQuerySetW = TWSAQuerySetW;
+
+ _WSAESETSERVICEOP = TWSAeSetServiceOp;
+ WSAESETSERVICEOP = _WSAESETSERVICEOP;
+
+function BthNsSetService(pSet:LPWSAQUERYSET; op:WSAESETSERVICEOP; dwFlags:DWORD):longint; external BtdrtDll name 'BthNsSetService';
+
+function BthNsLookupServiceBegin(pQuerySet:LPWSAQUERYSET; dwFlags:DWORD; lphLookup:LPHANDLE):longint; external BtdrtDll name 'BthNsLookupServiceBegin';
+
+function BthNsLookupServiceNext(hLookup:HANDLE; dwFlags:DWORD; lpdwBufferLength:LPDWORD; pResults:LPWSAQUERYSET):longint; external BtdrtDll name 'BthNsLookupServiceNext';
+
+function BthNsLookupServiceEnd(hLookup:HANDLE):longint; external BtdrtDll name 'BthNsLookupServiceEnd';
+
+//
+// RFCOMM Apis
+//
+const
+ RFCOMM_PORT_FLAGS_REMOTE_DCB = $00000001;
+ RFCOMM_PORT_FLAGS_KEEP_DCD = $00000002;
+ RFCOMM_PORT_FLAGS_AUTHENTICATE = $00000004;
+ RFCOMM_PORT_FLAGS_ENCRYPT = $00000008;
+
+{$IFNDEF __bt_ddi_H__}
+//
+// Attention: also defined in bt_ddi.h! Keep in sync!
+//
+// channel:
+// RFCOMM_CHANNEL_ALL accept connection on all channels (default upper layer)
+// RFCOMM_CHANNEL_CLIENT_ONLY do not accept connections at all (client only)
+// ...or channel to restrict connections on
+//
+const
+ RFCOMM_CHANNEL_ALL = $00;
+ RFCOMM_CHANNEL_MULTIPLE = $fe;
+ RFCOMM_CHANNEL_CLIENT_ONLY = $ff;
+{$ENDIF __bt_ddi_H__}
+
+type
+ _portemu_port_params = record
+ channel:longint;
+ flocal:longint;
+ device:BT_ADDR;
+ imtu:longint;
+ iminmtu:longint;
+ imaxmtu:longint;
+ isendquota:longint;
+ irecvquota:longint;
+ uuidService:GUID;
+ uiportflags:LongWord;
+ end;
+ PORTEMUPortParams = _portemu_port_params;
+
+// Bluetooth serial IOCTLs are cross-defined in pegdser.h to reserve spot there.
+const
+ IOCTL_BLUETOOTH_GET_RFCOMM_CHANNEL = (FILE_DEVICE_SERIAL_PORT shl 16) or
+ (FILE_ANY_ACCESS shl 14) or
+ (24 shl 2) or
+ METHOD_BUFFERED;
+// #define IOCTL_BLUETOOTH_GET_RFCOMM_CHANNEL CTL_CODE(FILE_DEVICE_SERIAL_PORT,24,METHOD_BUFFERED,FILE_ANY_ACCESS)
+
+ IOCTL_BLUETOOTH_GET_PEER_DEVICE = (FILE_DEVICE_SERIAL_PORT shl 16) or
+ (FILE_ANY_ACCESS shl 14) or
+ (25 shl 2) or
+ METHOD_BUFFERED;
+// #define IOCTL_BLUETOOTH_GET_PEER_DEVICE CTL_CODE(FILE_DEVICE_SERIAL_PORT,25,METHOD_BUFFERED,FILE_ANY_ACCESS)
+
+//
+// Bluetooth notification system
+//
+function RequestBluetoothNotifications(
+ dwClass:DWORD; // class of notifications to register for
+ hMsgQ:HANDLE // message queue created by caller
+ ):HANDLE; external BtdrtDll name 'RequestBluetoothNotifications';
+
+function StopBluetoothNotifications(
+ h:HANDLE // Handle returned from RequestBluetoothNotifications
+ ):BOOL; external BtdrtDll name 'StopBluetoothNotifications';
+
+type
+ _BTEVENT = record
+ dwEventId:DWORD; // Event ID
+ dwReserved:DWORD; // Reserved
+ baEventData:array[0..63] of byte; // Event Data
+ end;
+ BTEVENT = _BTEVENT;
+ PBTEVENT = ^_BTEVENT;
+
+//
+// Class of events to notify connections going up/down
+// and other connection-related changes (role, mode).
+//
+const
+ BTE_CLASS_CONNECTIONS = 1;
+
+ BTE_CONNECTION = 100;
+ BTE_DISCONNECTION = 101;
+ BTE_ROLE_SWITCH = 102;
+ BTE_MODE_CHANGE = 103;
+ BTE_PAGE_TIMEOUT = 104;
+
+type
+ BT_CONNECT_EVENT = record
+ dwSize:DWORD; // To keep track of version
+ hConnection:USHORT; // Baseband connection handle
+ bta:BT_ADDR; // Address of remote device
+ ucLinkType:UCHAR; // Link Type (ACL/SCO)
+ ucEncryptMode:UCHAR; // Encryption mode
+ end;
+ PBT_CONNECT_EVENT = ^BT_CONNECT_EVENT;
+
+type
+ BT_DISCONNECT_EVENT = record
+ dwSize:DWORD; // To keep track of version
+ hConnection:USHORT; // Baseband connection handle
+ ucReason:UCHAR; // Reason for disconnection
+ end;
+ PBT_DISCONNECT_EVENT = ^BT_DISCONNECT_EVENT;
+
+type
+ BT_ROLE_SWITCH_EVENT = record
+ dwSize:DWORD; // To keep track of version
+ bta:BT_ADDR; // Address of remote device
+ _flags:UINT;
+{
+ UINT fRole : 1; // New Role (master/slave)
+}
+ end;
+ PBT_ROLE_SWITCH_EVENT = ^BT_ROLE_SWITCH_EVENT;
+
+type
+ BT_MODE_CHANGE_EVENT = record
+ dwSize:DWORD; // To keep track of version
+ hConnection:USHORT; // Baseband connection handle
+ bta:BT_ADDR; // Address of remote device
+ bMode:byte; // Power mode (sniff, etc)
+ usInterval:USHORT; // Power mode interval
+ end;
+ PBT_MODE_CHANGE_EVENT = ^BT_MODE_CHANGE_EVENT;
+
+//
+// Class of events to notify changes in pairing.
+//
+const
+ BTE_CLASS_PAIRING = 2;
+
+ BTE_KEY_NOTIFY = 200;
+ BTE_KEY_REVOKED = 201;
+
+type
+ BT_LINK_KEY_EVENT = record
+ dwSize:DWORD; // To keep track of version
+ bta:BT_ADDR; // Address of remote device
+ link_key:array[0..15] of UCHAR; // Link key data
+ key_type:UCHAR; // Link key type
+ end;
+ PBT_LINK_KEY_EVENT = ^BT_LINK_KEY_EVENT;
+
+//
+// Class of events to notify changes specific to the
+// local device (cod, name)
+//
+const
+ BTE_CLASS_DEVICE = 4;
+
+ BTE_LOCAL_NAME = 300;
+ BTE_COD = 301;
+
+//
+// Class of events to notify change of state of the
+// core stack.
+//
+const
+ BTE_CLASS_STACK = 8;
+
+ BTE_STACK_UP = 400;
+ BTE_STACK_DOWN = 401;
+
+//
+// Class of events to notify change of state of AVDTP
+//
+const
+ BTE_CLASS_AVDTP = 16;
+
+ BTE_AVDTP_STATE = 500;
+
+ BT_AVDTP_STATE_DISCONNECTED = 0;
+ BT_AVDTP_STATE_SUSPENDED = 1;
+ BT_AVDTP_STATE_STREAMING = 2;
+
+type
+ BT_AVDTP_STATE_CHANGE = record
+ dwSize:DWORD; // To keep track of version
+ bta:BT_ADDR; // Address of remote device
+ dwState:DWORD; // New state of the AVDTP stream
+ end;
+ PBT_AVDTP_STATE_CHANGE = ^BT_AVDTP_STATE_CHANGE;
+
+//
+// Class of events to notify change of PAN state
+//
+const
+ BTE_CLASS_PAN = 32;
+
+ BTE_PAN_CONNECTIONS = 600;
+
+type
+ BT_PAN_NUM_CONNECTIONS = record
+ dwSize:DWORD; // To keep track of version
+ NumConnections:DWORD; // Number of peers connected
+ end;
+ PBT_PAN_NUM_CONNECTIONS = ^BT_PAN_NUM_CONNECTIONS;
+
+//
+// PAN APIs
+//
+function BthActivatePAN(fActivate:BOOL):longint; external BtdrtDll name 'BthActivatePAN';
+
+
+function rfRegisterDevice(lpszType:LPCWSTR; dwIndex:DWORD; lpszLib:LPCWSTR; dwInfo:DWORD):HANDLE; external KernelDLL name 'RegisterDevice'; // index 14F
+
+function rfDeregisterDevice(hDevice:HANDLE):BOOL; external KernelDLL name 'DeregisterDevice';
+
+function rfCreateFile(lpFileName:LPCTSTR;
+ dwDesiredAccess:DWORD;
+ dwShareMode:DWORD;
+ lpSecurityAttributes:LPSECURITY_ATTRIBUTES;
+ dwCreationDisposition:DWORD;
+ dwFlagsAndAttributes:DWORD;
+ hTemplateFile:HANDLE):HANDLE; external KernelDLL name 'CreateFileW';
+
+function rfReadFile(_hFile:HANDLE; // handle to file
+ lpBuffer:LPVOID; // data buffer
+ nNumberOfBytesToRead:DWORD; // number of bytes to read
+ lpNumberOfBytesRead:LPDWORD; // number of bytes read
+ lpOverlapped:LPOVERLAPPED // overlapped buffer
+ ):BOOL; external KernelDLL name 'ReadFile'; // index F4
+
+function rfWriteFile(_hFile:HANDLE; // handle to file
+ lpBuffer:LPCVOID; // data buffer
+ nNumberOfBytesToWrite:DWORD; // number of bytes to write
+ lpNumberOfBytesWritten:LPDWORD; // number of bytes written
+ lpOverlapped:LPOVERLAPPED // overlapped buffer
+ ):BOOL; external KernelDLL name 'WriteFile';
+
+function rfCloseHandle(_hFile:HANDLE):BOOL; external KernelDLL name 'CloseHandle';
+
+implementation
+
+end. \ No newline at end of file
diff --git a/packages/winceunits/src/bt_sdp.pp b/packages/winceunits/src/bt_sdp.pp
new file mode 100644
index 0000000000..615fe52477
--- /dev/null
+++ b/packages/winceunits/src/bt_sdp.pp
@@ -0,0 +1,228 @@
+{
+ 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.
+
+ ********************************************************************** }
+//------------------------------------------------------------------------------
+//
+// Bluetooth Test Client
+//
+// Module Name:
+//
+// bt_sdp.h
+//
+// Abstract:
+//
+// This file contains constants and structures for Simple Discovery Protocol.
+//
+//------------------------------------------------------------------------------
+
+//
+// Microsoft Windows Mobile 6.0 for PocketPC SDK.
+//
+
+unit bt_sdp;
+
+interface
+
+uses Windows;
+
+const
+ SDP_ERROR_INVALID_SDP_VERSION = $0001;
+ SDP_ERROR_INVALID_RECORD_HANDLE = $0002;
+ SDP_ERROR_INVALID_REQUEST_SYNTAX = $0003;
+ SDP_ERROR_INVALID_PDU_SIZE = $0004;
+ SDP_ERROR_INVALID_CONTINUATION_STATE = $0005;
+ SDP_ERROR_INSUFFICIENT_RESOURCES = $0006;
+
+const
+ SDP_ATTRIB_RECORD_HANDLE = $0000;
+ SDP_ATTRIB_CLASS_ID_LIST = $0001;
+ SDP_ATTRIB_RECORD_STATE = $0002;
+ SDP_ATTRIB_SERVICE_ID = $0003;
+ SDP_ATTRIB_PROTOCOL_DESCRIPTOR_LIST = $0004;
+ SDP_ATTRIB_BROWSE_GROUP_LIST = $0005;
+ SDP_ATTRIB_LANG_BASE_ATTRIB_ID_LIST = $0006;
+ SDP_ATTRIB_INFO_TIME_TO_LIVE = $0007;
+ SDP_ATTRIB_AVAILABILITY = $0008;
+ SDP_ATTRIB_PROFILE_DESCRIPTOR_LIST = $0009;
+ SDP_ATTRIB_DOCUMENTATION_URL = $000A;
+ SDP_ATTRIB_CLIENT_EXECUTABLE_URL = $000B;
+ SDP_ATTRIB_ICON_URL = $000C;
+
+//
+// Attribute IDs in the range of = $000D - = $01FF are reserved for future use
+//
+ SDP_ATTRIB_PROFILE_SPECIFIC = $0200;
+
+ STRING_NAME_OFFSET = $0000;
+ STRING_DESCRIPTION_OFFSET = $0001;
+ STRING_PROVIDER_NAME_OFFSET = $0002;
+
+ SDP_ATTRIB_SDP_VERSION_NUMBER_LIST = $0200;
+ SDP_ATTRIB_SDP_DATABASE_STATE = $0201;
+
+ SDP_ATTRIB_BROWSE_GROUP_ID = $0200;
+
+ SDP_ATTRIB_CORDLESS_EXTERNAL_NETWORK = $0301;
+
+ SDP_ATTRIB_FAX_CLASS_1_SUPPORT = $0302;
+ SDP_ATTRIB_FAX_CLASS_2_0_SUPPORT = $0303;
+ SDP_ATTRIB_FAX_CLASS_2_SUPPORT = $0304;
+ SDP_ATTRIB_FAX_AUDIO_FEEDBACK_SUPPORT = $0305;
+
+ SDP_ATTRIB_HEADSET_REMOTE_AUDIO_VOLUME_CONTROL = $0302;
+
+ SDP_ATTRIB_LAN_LPSUBNET = $0200;
+
+ SDP_ATTRIB_OBJECT_PUSH_SUPPORTED_FORMATS_LIST = $0303;
+
+ SDP_ATTRIB_SYNCH_SUPPORTED_DATA_STORES_LIST = $0301;
+
+// this is in the assigned numbers doc, but it does not show up in any profile
+ SDP_ATTRIB_SERVICE_VERSION = $0300;
+
+ SDP_ATTRIB_PAN_SECURITY_DESCRIPTION = $030A;
+ SDP_ATTRIB_PAN_NET_ACCESS_TYPE = $030B;
+ SDP_ATTRIB_PAN_MAX_NET_ACCESS_RATE = $030C;
+ SDP_ATTRIB_PAN_IPV4_SUBNET = $030D;
+ SDP_ATTRIB_PAN_IPV6_SUBNET = $030E;
+
+
+// Bluetooth base UUID for service discovery
+const
+// Bluetooth_Base_UUID:GUID = '{00000000-0000-1000-7007-00805F9B34FB}';
+ Bluetooth_Base_UUID :GUID = '{00000000-0000-1000-8000-00805F9B34FB}';
+
+ SDP_PROTOCOL_UUID :GUID = '{00000001-0000-1000-8000-00805F9B34FB}';
+ UDP_PROTOCOL_UUID :GUID = '{00000002-0000-1000-8000-00805F9B34FB}';
+ RFCOMM_PROTOCOL_UUID:GUID = '{00000003-0000-1000-8000-00805F9B34FB}';
+ TCP_PROTOCOL_UUID :GUID = '{00000004-0000-1000-8000-00805F9B34FB}';
+ TCSBIN_PROTOCOL_UUID:GUID = '{00000005-0000-1000-8000-00805F9B34FB}';
+ TCSAT_PROTOCOL_UUID :GUID = '{00000006-0000-1000-8000-00805F9B34FB}';
+ OBEX_PROTOCOL_UUID :GUID = '{00000008-0000-1000-8000-00805F9B34FB}';
+ IP_PROTOCOL_UUID :GUID = '{00000009-0000-1000-8000-00805F9B34FB}';
+ FTP_PROTOCOL_UUID :GUID = '{0000000A-0000-1000-8000-00805F9B34FB}';
+ HTTP_PROTOCOL_UUID :GUID = '{0000000C-0000-1000-8000-00805F9B34FB}';
+ WSP_PROTOCOL_UUID :GUID = '{0000000E-0000-1000-8000-00805F9B34FB}';
+ BNEP_PROTOCOL_UUID :GUID = '{0000000F-0000-1000-8000-00805F9B34FB}';
+ L2CAP_PROTOCOL_UUID :GUID = '{00000100-0000-1000-8000-00805F9B34FB}';
+
+ ServiceDiscoveryServerServiceClassID_UUID :GUID = '{00001000-0000-1000-8008-00805F9B34FB}';
+ BrowseGroupDescriptorServiceClassID_UUID :GUID = '{00001001-0000-1000-8000-00805F9B34FB}';
+ PublicBrowseGroupServiceClass_UUID :GUID = '{00001002-0000-1000-8000-00805F9B34FB}';
+ SerialPortServiceClass_UUID :GUID = '{00001101-0000-1000-8000-00805F9B34FB}';
+ LANAccessUsingPPPServiceClass_UUID :GUID = '{00001102-0000-1000-8000-00805F9B34FB}';
+ DialupNetworkingServiceClass_UUID :GUID = '{00001103-0000-1000-8000-00805F9B34FB}';
+ IrMCSyncServiceClass_UUID :GUID = '{00001104-0000-1000-8000-00805F9B34FB}';
+ OBEXObjectPushServiceClass_UUID :GUID = '{00001105-0000-1000-8000-00805F9B34FB}';
+ OBEXFileTransferServiceClass_UUID :GUID = '{00001106-0000-1000-8000-00805F9B34FB}';
+ IrMCSyncCommandServiceClass_UUID :GUID = '{00001107-0000-1000-8000-00805F9B34FB}';
+ HeadsetServiceClass_UUID :GUID = '{00001108-0000-1000-8000-00805F9B34FB}';
+ CordlessTelephonyServiceClass_UUID :GUID = '{00001109-0000-1000-8000-00805F9B34FB}';
+ AudioSourceServiceClass_UUID :GUID = '{0000110A-0000-1000-8000-00805F9B34FB}';
+ AudioSinkServiceClass_UUID :GUID = '{0000110B-0000-1000-8000-00805F9B34FB}';
+ AV_RemoteControlTargetServiceClass_UUID :GUID = '{0000110C-0000-1000-8000-00805F9B34FB}';
+ AdvancedAudioDistributionServiceClass_UUID:GUID = '{0000110D-0000-1000-8000-00805F9B34FB}';
+ AV_RemoteControlServiceClass_UUID :GUID = '{0000110E-0000-1000-8000-00805F9B34FB}';
+ VideoConferencingServiceClass_UUID :GUID = '{0000110F-0000-1000-8000-00805F9B34FB}';
+ IntercomServiceClass_UUID :GUID = '{00001110-0000-1000-8000-00805F9B34FB}';
+ FaxServiceClass_UUID :GUID = '{00001111-0000-1000-8000-00805F9B34FB}';
+ HeadsetAudioGatewayServiceClass_UUID :GUID = '{00001112-0000-1000-8000-00805F9B34FB}';
+ PANUServiceClass_UUID :GUID = '{00001115-0000-1000-8000-00805F9B34FB}';
+ NAPServiceClass_UUID :GUID = '{00001116-0000-1000-8000-00805F9B34FB}';
+ GNServiceClass_UUID :GUID = '{00001117-0000-1000-8000-00805F9B34FB}';
+ HandsfreeServiceClass_UUID :GUID = '{0000111E-0000-1000-8000-00805F9B34FB}';
+ HandsfreeAudioGatewayServiceClass_UUID :GUID = '{0000111F-0000-1000-8000-00805F9B34FB}';
+ PnPInformationServiceClass_UUID :GUID = '{00001200-0000-1000-8000-00805F9B34FB}';
+ GenericNetworkingServiceClass_UUID :GUID = '{00001201-0000-1000-8000-00805F9B34FB}';
+ GenericFileTransferServiceClass_UUID :GUID = '{00001202-0000-1000-8000-00805F9B34FB}';
+ GenericAudioServiceClass_UUID :GUID = '{00001203-0000-1000-8000-00805F9B34FB}';
+ GenericTelephonyServiceClass_UUID :GUID = '{00001204-0000-1000-8000-00805F9B34FB}';
+
+
+const
+ SDP_PROTOCOL_UUID16 = $0001;
+ UDP_PROTOCOL_UUID16 = $0002;
+ RFCOMM_PROTOCOL_UUID16 = $0003;
+ TCP_PROTOCOL_UUID16 = $0004;
+ TCSBIN_PROTOCOL_UUID16 = $0005;
+ TCSAT_PROTOCOL_UUID16 = $0006;
+ OBEX_PROTOCOL_UUID16 = $0008;
+ IP_PROTOCOL_UUID16 = $0009;
+ FTP_PROTOCOL_UUID16 = $000A;
+ HTTP_PROTOCOL_UUID16 = $000C;
+ WSP_PROTOCOL_UUID16 = $000E;
+ BNEP_PROTOCOL_UUID16 = $000F;
+ HID_PROTOCOL_UUID16 = $0011;
+ AVCTP_PROTOCOL_UUID16 = $0017;
+ AVDTP_PROTOCOL_UUID16 = $0019;
+ L2CAP_PROTOCOL_UUID16 = $0100;
+
+ ServiceDiscoveryServerServiceClassID_UUID16 = $1000;
+ BrowseGroupDescriptorServiceClassID_UUID16 = $1001;
+ PublicBrowseGroupServiceClassID_UUID16 = $1002;
+ SerialPortServiceClassID_UUID16 = $1101;
+ LANAccessUsingPPPServiceClassID_UUID16 = $1102;
+ DialupNetworkingServiceClassID_UUID16 = $1103;
+ IrMCSyncServiceClassID_UUID16 = $1104;
+ OBEXObjectPushServiceClassID_UUID16 = $1105;
+ OBEXFileTransferServiceClassID_UUID16 = $1106;
+ IrMcSyncCommandServiceClassID_UUID16 = $1107;
+ HeadsetServiceClassID_UUID16 = $1108;
+ CordlessServiceClassID_UUID16 = $1109;
+ AudioSourceServiceClassID_UUID16 = $110A;
+ AudioSinkServiceClassID_UUID16 = $110B;
+ AV_RemoteControlTargetServiceClassID_UUID16 = $110C;
+ AdvancedAudioDistributionServiceClassID_UUID16 = $110D;
+ AV_RemoteControlServiceClassID_UUID16 = $110E;
+ VideoConferencingServiceClassID_UUID16 = $110F;
+ IntercomServiceClassID_UUID16 = $1110;
+ FaxServiceClassID_UUID16 = $1111;
+ HeadsetAudioGatewayServiceClassID_UUID16 = $1112;
+ PANUServiceClassID_UUID16 = $1115;
+ NAPServiceClassID_UUID16 = $1116;
+ GNServiceClassID_UUID16 = $1117;
+ HandsfreeServiceClassID_UUID16 = $111E;
+ HandsfreeAudioGatewayServiceClassID_UUID16 = $111F;
+ PnPInformationServiceClassID_UUID16 = $1200;
+ GenericNetworkingServiceClassID_UUID16 = $1201;
+ GenericFileTransferServiceClassID_UUID16 = $1202;
+ GenericAudioServiceClassID_UUID16 = $1203;
+ GenericTelephonyServiceClassID_UUID16 = $1204;
+
+ PSM_SDP = $0001;
+ PSM_RFCOMM = $0003;
+ PSM_TCS_BIN = $0005;
+ PSM_TCS_BIN_CORDLESS = $0007;
+
+
+// HID specific SDP attrib ids.
+const
+ SDP_ATTRIB_HID_DEVICE_RELEASE_NUMBER = $0200;
+ SDP_ATTRIB_HID_PARSER_VERSION = $0201;
+ SDP_ATTRIB_HID_DEVICE_SUBCLASS = $0202;
+ SDP_ATTRIB_HID_COUNTRY_CODE = $0203;
+ SDP_ATTRIB_HID_VIRTUAL_CABLE = $0204;
+ SDP_ATTRIB_HID_RECONNECT_INITIATE = $0205;
+ SDP_ATTRIB_HID_DESCRIPTOR_LIST = $0206;
+ SDP_ATTRIB_HID_LANGID_BASE_LIST = $0207;
+ SDP_ATTRIB_HID_SDP_DISABLE = $0208;
+ SDP_ATTRIB_HID_BATTERY_POWER = $0209;
+ SDP_ATTRIB_HID_REMOTE_WAKE = $020A;
+ SDP_ATTRIB_HID_PROFILE_VERSION = $020B;
+ SDP_ATTRIB_HID_SUPERVISION_TIMEOUT = $020C;
+ SDP_ATTRIB_HID_NORMALLY_CONNECTABLE = $020D;
+ SDP_ATTRIB_HID_BOOT_DEVICE = $020E;
+
+
+implementation
+
+end. \ No newline at end of file
diff --git a/packages/winceunits/src/bthapi.pp b/packages/winceunits/src/bthapi.pp
new file mode 100644
index 0000000000..e0c57188df
--- /dev/null
+++ b/packages/winceunits/src/bthapi.pp
@@ -0,0 +1,388 @@
+{
+ 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: bthapi.h, bthapi.idl
+//
+
+//
+// Microsoft Windows Mobile 6.0 for PocketPC SDK.
+//
+
+unit bthapi;
+
+{$MODE OBJFPC}
+
+interface
+
+uses Windows;
+
+const
+ LIBID_BTHAPILib:TIID = '{00BC26C8-0A87-41d0-82BA-61FF9E0B1BB5}';
+
+const
+ IID_ISdpWalk:TIID = '{57134AE6-5D3C-462D-BF2F-810361FBD7E7}';
+ IID_ISdpNodeContainer:TIID = '{43F6ED49-6E22-4F81-A8EB-DCED40811A77}';
+ IID_ISdpSearch:TIID = '{D93B6B2A-5EEF-4E1E-BECF-F5A4340C65F5}';
+ IID_ISdpStream = '{A6ECD9FB-0C7A-41A3-9FF0-0B617E989357}';
+ IID_ISdpRecord:TIID = '{10276714-1456-46D7-B526-8B1E83D5116E}';
+ IID_IBluetoothDevice:TIID = '{5BD0418B-D705-4766-B215-183E4EADE341}';
+ IID_IBluetoothAuthenticate:TIID = '{5F0FBA2B-8300-429D-99AD-96A2835D4901}';
+
+const
+ CLSID_SdpNodeContainer:CLSID = '{D5CA76C5-0DEE-4453-96A1-E603C2401766}';
+
+ CLSID_SdpSearch:CLSID = '{3B898402-857E-4E41-9145-BC35431B7B4D}';
+
+ CLSID_SdpWalk:CLSID = '{ED384010-59AE-44c7-8FCA-F3DF22CDCD28}';
+
+ CLSID_SdpStream:CLSID = '{249797FA-19DB-4dda-94D4-E0BCD30EA65E}';
+
+ CLSID_SdpRecord:CLSID = '{ACD02BA7-9667-4085-A100-CC6ACA9621D6}';
+
+
+{$IFNDEF __BTHSDPDEF_H__}
+type
+ SDP_LARGE_INTEGER_16 = record
+ LowPart:ULONGLONG;
+ HighPart:LONGLONG;
+ end;
+ PSDP_LARGE_INTEGER_16 = ^SDP_LARGE_INTEGER_16;
+ LPSDP_LARGE_INTEGER_16 = ^SDP_LARGE_INTEGER_16;
+
+ SDP_ULARGE_INTEGER_16 = record
+ LowPart:ULONGLONG;
+ HighPart:ULONGLONG;
+ end;
+ PSDP_ULARGE_INTEGER_16 = ^SDP_ULARGE_INTEGER_16;
+ LPSDP_ULARGE_INTEGER_16 = ^SDP_ULARGE_INTEGER_16;
+
+
+type
+ NodeContainerType = (NodeContainerTypeSequence := 0,
+ NodeContainerTypeAlternative);
+ PNodeContainerType = ^NodeContainerType;
+
+
+type
+ SDP_ERROR = USHORT;
+ PSDP_ERROR = ^SDP_ERROR;
+
+type
+ SDP_TYPE = (SDP_TYPE_NIL := 0,
+ SDP_TYPE_UINT := $1,
+ SDP_TYPE_INT := $2,
+ SDP_TYPE_UUID := $3,
+ SDP_TYPE_STRING := $4,
+ SDP_TYPE_BOOLEAN := $5,
+ SDP_TYPE_SEQUENCE := $6,
+ SDP_TYPE_ALTERNATIVE := $7,
+ SDP_TYPE_URL := $8,
+ SDP_TYPE_CONTAINER := $20);
+ PSDP_TYPE = ^SDP_TYPE;
+
+ SDP_SPECIFICTYPE = (SDP_ST_NONE := 0,
+ SDP_ST_UINT8 := $10,
+ SDP_ST_INT8 := $20,
+ SDP_ST_UINT16 := $110,
+ SDP_ST_INT16 := $120,
+ SDP_ST_UUID16 := $130,
+ SDP_ST_UINT32 := $210,
+ SDP_ST_INT32 := $220,
+ SDP_ST_UUID32 := $230,
+ SDP_ST_UINT64 := $310,
+ SDP_ST_INT64 := $320,
+ SDP_ST_UINT128 := $410,
+ SDP_ST_INT128 := $420,
+ SDP_ST_UUID128 := $430);
+ PSDP_SPECIFICTYPE = ^SDP_SPECIFICTYPE;
+
+
+type
+ _SdpAttributeRange = record
+ minAttribute:USHORT;
+ maxAttribute:USHORT;
+ end;
+ SdpAttributeRange = _SdpAttributeRange;
+ PSdpAttributeRange = ^_SdpAttributeRange;
+
+type
+ SdpQueryUuidUnion = record
+ case integer of
+ 0: (uuid128:GUID);
+ 1: (uuid32:ULONG);
+ 2: (uuid16:USHORT);
+ end;
+
+type
+ _SdpQueryUuid = record
+ u:SdpQueryUuidUnion;
+ uuidType:USHORT;
+ end;
+ SdpQueryUuid = _SdpQueryUuid;
+ PSdpQueryUuid = ^_SdpQueryUuid;
+
+
+const
+ BTH_SDP_VERSION = 1;
+
+type
+ _BTHNS_SETBLOB = record
+ pSdpVersion:PULONG;
+ pRecordHandle:PULONG;
+ Reserved:array[0..3] of ULONG;
+ fSecurity:ULONG;
+ fOptions:ULONG;
+ ulRecordLength:ULONG;
+ pRecord:array[0..0] of UCHAR;
+ end;
+ BTHNS_SETBLOB = _BTHNS_SETBLOB;
+ PBTHNS_SETBLOB = ^_BTHNS_SETBLOB;
+
+const
+ MAX_UUIDS_IN_QUERY = 12;
+ SDP_SERVICE_SEARCH_REQUEST = 1;
+ SDP_SERVICE_ATTRIBUTE_REQUEST = 2;
+ SDP_SERVICE_SEARCH_ATTRIBUTE_REQUEST = 3;
+
+//
+// The following may be passed as parameters to BthNsLookupServiceNext as extended
+// dwFlags options for device inquiry.
+//
+const
+// Causes traversal through list to be reset to first element.
+ BTHNS_LUP_RESET_ITERATOR = $00010000;
+// Does not increment list, causes next query to be performed on current item as well.
+ BTHNS_LUP_NO_ADVANCE = $00020000;
+// Causes LookupServiceEnd to abort current inquiry.
+ BTHNS_ABORT_CURRENT_INQUIRY = $fffffffd;
+
+
+type
+ _BTHNS_INQUIRYBLOB = record
+ LAP:ULONG;
+ _length:byte;
+ num_responses:byte;
+ end;
+ BTHNS_INQUIRYBLOB = _BTHNS_INQUIRYBLOB;
+ PBTHNS_INQUIRYBLOB = ^_BTHNS_INQUIRYBLOB;
+
+type
+ _BTHNS_RESTRICTIONBLOB = record
+ _type:ULONG;
+ serviceHandle:ULONG;
+ uuids:array[0..11] of SdpQueryUuid;
+ numRange:ULONG;
+ pRange:array[0..0] of SdpAttributeRange;
+ end;
+ BTHNS_RESTRICTIONBLOB = _BTHNS_RESTRICTIONBLOB;
+ PBTHNS_RESTRICTIONBLOB = ^_BTHNS_RESTRICTIONBLOB;
+
+{$DEFINE __BTHSDPDEF_H__}
+{$ENDIF __BTHSDPDEF_H__}
+
+
+type
+ SdpString = record
+ val:^ShortInt;
+ _length:ULONG;
+ end;
+
+//
+// flags for fConnect in SdpSearch::Connect
+//
+const
+ SDP_SEARCH_LOCAL = $00000001;
+ SDP_SEARCH_CACHED = $00000002;
+
+type
+// Forward declarations.
+ ISdpNodeContainer = interface;
+ ISdpRecord = interface;
+
+ PISdpRecord = ^ISdpRecord;
+ PPISdpRecord = ^PISdpRecord;
+
+ NodeDataUnion = record
+ case integer of
+ 0: (int128:SDP_LARGE_INTEGER_16);
+ 1: (uint128:SDP_ULARGE_INTEGER_16);
+ 2: (uuid128:GUID);
+ 3: (uuid32:ULONG);
+ 4: (uuid16:USHORT);
+ 5: (int64:LONGLONG);
+ 6: (uint64:ULONGLONG);
+ 7: (int32:LONG);
+ 8: (uint32:ULONG);
+ 9: (int16:SHORT);
+ 10: (uint16:USHORT);
+ 11: (int8:ShortInt);
+ 12: (uint8:UCHAR);
+ 13: (booleanVal:UCHAR);
+ 14: (str:SdpString);
+ 15: (url:SdpString);
+ 16: (container:pointer{ISdpNodeContainer});
+ end;
+
+ NodeData = record
+ _type:USHORT;
+ specificType:USHORT;
+ u:NodeDataUnion;
+ end;
+ PNODEDATA = ^NodeData;
+
+ BthDeviceStringType = (BthDeviceStringTypeFriendlyName := 0,
+ BthDeviceStringTypeDeviceName,
+ BthDeviceStringTypeDisplay,
+ BthDeviceStringTypeClass,
+ BthDeviceStringTypeAddress);
+
+// #pragma pack(push)
+// #pragma pack(1)
+{$PACKRECORDS 1}
+ _BthDeviceInfo = record
+ btAddress:ULONGLONG;
+ cod:ULONG;
+ lmpSupportedFeatures:ULONGLONG;
+ name:array[0..247] of ShortInt;
+ end;
+ BthDeviceInfo = _BthDeviceInfo;
+ PBthDeviceInfo = ^_BthDeviceInfo;
+{$PACKRECORDS DEFAULT}
+// #pragma pack(pop)
+
+// Needful types.
+ PPUCHAR = ^PUCHAR;
+ PPUSHORT = ^PUSHORT;
+ PPWCHAR = ^PWCHAR;
+
+ ISdpWalk = interface(IUnknown)
+ ['{57134AE6-5D3C-462D-BF2F-810361FBD7E7}']
+ function WalkNode(pData:PNODEDATA; state:ULONG):HRESULT; stdcall;
+ function WalkStream(elementType:UCHAR; elementSize:ULONG; pStream:PUCHAR):HRESULT; stdcall;
+ end;
+
+ ISdpNodeContainer = interface(IUnknown)
+ ['{43F6ED49-6E22-4F81-A8EB-DCED40811A77}']
+ function CreateStream(out ppStream:PUCHAR;{ppStream:PPUCHAR;} pSize:PULONG):HRESULT; stdcall;
+ function WriteStream(pStream:PUCHAR; pNumBytesWritten:PULONG):HRESULT; stdcall;
+ function AppendNode(pData:PNODEDATA):HRESULT; stdcall;
+ function GetType(pType:PNodeContainerType):HRESULT; stdcall;
+ function SetType(_type:NodeContainerType):HRESULT; stdcall;
+ function Walk(pWalk:ISdpWalk):HRESULT; stdcall;
+ function SetNode(nodeIndex:ULONG; pData:PNODEDATA):HRESULT; stdcall;
+ function GetNode(nodeIndex:ULONG; pData:PNODEDATA):HRESULT; stdcall;
+ function LockContainer(lock:UCHAR):HRESULT; stdcall;
+ function GetNodeCount(pNodeCount:PULONG):HRESULT; stdcall;
+ function CreateFromStream(pStream:PUCHAR; _size:ULONG):HRESULT; stdcall;
+ function GetNodeStringData(nodeIndex:ULONG; pData:PNODEDATA):HRESULT; stdcall;
+ function GetStreamSize(pSize:PULONG):HRESULT; stdcall;
+ end;
+
+ ISdpSearch = interface(IUnknown)
+ ['{D93B6B2A-5EEF-4E1E-BECF-F5A4340C65F5}']
+ function _Begin(pAddrss:PULONGLONG; fConnect:ULONG):HRESULT; stdcall;
+ function _End:HRESULT; stdcall;
+ function ServiceSearch(pUuidList:PSdpQueryUuid;
+ listSize:ULONG;
+ pHandles:PULONG;
+ pNumHandles:PUSHORT):HRESULT; stdcall;
+ function AttributeSearch(_handle:ULONG;
+ pRangeListP:SdpAttributeRange;
+ numRanges:ULONG;
+ out ppSdpRecord:ISdpRecord{ppSdpRecord:PISdpRecord}):HRESULT; stdcall;
+ function ServiceAndAttributeSearch(pUuidList:PSdpQueryUuid;
+ listSize:ULONG;
+ pRangeList:PSdpAttributeRange;
+ numRanges:ULONG;
+ out pppSdpRecord:PISdpRecord{pppSdpRecord:PPISdpRecord};
+ pNumRecords:PULONG):HRESULT; stdcall;
+ end;
+
+
+ ISdpStream = interface(IUnknown)
+ ['{A6ECD9FB-0C7A-41A3-9FF0-0B617E989357}']
+{$IF DEFINED(WINCE) OR DEFINED(WINCE_EMULATION)}
+ function Validate(pStream:PUCHAR; _size:ULONG; pErrorByte:PULONG):HRESULT; stdcall;
+{$ELSE}
+ function Validate(pStream:PUCHAR; _size:ULONG; pErrorByte:PULONG_PTR):HRESULT; stdcall;
+{$ENDIF}
+ function Walk(pStream:PUCHAR; _size:ULONG; pWalk:ISdpWalk):HRESULT; stdcall;
+
+ function RetrieveRecords(pStream:PUCHAR; _size:ULONG; var ppSdpRecords:ISdpRecord;{ppSdpRecords:PISdpRecord;} pNumRecords:PULONG):HRESULT; stdcall;
+
+ function RetrieveUuid128(pStream:PUCHAR; pUuid128:PGUID):HRESULT; stdcall;
+
+ function RetrieveUint16(pStream:PUCHAR; pUint16:PUSHORT):HRESULT; stdcall;
+ function RetrieveUint32(pStream:PUCHAR; pUint32:ULONG):HRESULT; stdcall;
+ function RetrieveUint64(pStream:PUCHAR; pUint64:PULONGLONG):HRESULT; stdcall;
+ function RetrieveUint128(pStream:PUCHAR; pUint128:PSDP_ULARGE_INTEGER_16):HRESULT; stdcall;
+ function RetrieveInt16(pStream:PUCHAR; pInt16:PSHORT):HRESULT; stdcall;
+ function RetrieveInt32(pStream:PUCHAR; pInt32:PLONG):HRESULT; stdcall;
+ function RetrieveInt64(pStream:PUCHAR; pInt64:PLONGLONG):HRESULT; stdcall;
+ function RetrieveInt128(pStream:PUCHAR; pInt128:PSDP_LARGE_INTEGER_16):HRESULT; stdcall;
+
+ function ByteSwapUuid128(pInUuid128:PGUID; pOutUuid128:PGUID):HRESULT; stdcall;
+ function ByteSwapUint128(pInUint128:PSDP_ULARGE_INTEGER_16; pOutUint128:PSDP_ULARGE_INTEGER_16):HRESULT; stdcall;
+ function ByteSwapUint64(inUint64:ULONGLONG; pOutUint64:PULONGLONG):HRESULT; stdcall;
+ function ByteSwapUint32(uint32:ULONG; pUint32:PULONG):HRESULT; stdcall;
+ function ByteSwapUint16(uint16:USHORT; pUint16:PUSHORT):HRESULT; stdcall;
+ function ByteSwapInt128(pInInt128:PSDP_LARGE_INTEGER_16; pOutInt128:PSDP_LARGE_INTEGER_16):HRESULT; stdcall;
+ function ByteSwapInt64(inInt64:LONGLONG; pOutInt64:PLONGLONG):HRESULT; stdcall;
+ function ByteSwapInt32(int32:LONG; pInt32:PLONG):HRESULT; stdcall;
+ function ByteSwapInt16(int16:SHORT; pInt16:PSHORT):HRESULT; stdcall;
+
+ function NormalizeUuid(pDataUuid:PNODEDATA; pNormalizeUuid:PGUID):HRESULT; stdcall;
+ function RetrieveElementInfo(pStream:PUCHAR;
+ pElementType:PSDP_TYPE;
+ pElementSpecificType:PSDP_SPECIFICTYPE;
+ pElementSize:PULONG;
+ pStorageSize:PULONG;
+ out ppData:PUCHAR{ppData:PPUCHAR}):HRESULT; stdcall;
+ function VerifySequenceOf(pStream:PUCHAR; _size:PULONG; ofType:SDP_TYPE; pSpecificSizes:PUCHAR; pNumFound:PULONG):HRESULT; stdcall;
+ end;
+
+ ISdpRecord = interface(IUnknown)
+ ['{10276714-1456-46D7-B526-8B1E83D5116E}']
+ function CreateFromStream(pStream:PUCHAR; _size:ULONG):HRESULT; stdcall;
+ function WriteToStream(out ppStream:PUCHAR;{ppStream:PPUCHAR;} pStreamSize:PULONG; preSize:ULONG; postSize:ULONG):HRESULT; stdcall;
+ function SetAttribute(attribute:USHORT; pNode:PNODEDATA):HRESULT; stdcall;
+ function SetAttributeFromStream(attribute:USHORT; pStream:PUCHAR; _size:ULONG):HRESULT; stdcall;
+ function GetAttribute(attribute:USHORT; pNode:PNODEDATA):HRESULT; stdcall;
+ function GetAttributeAsStream(attribute:USHORT; out ppStream:PUCHAR;{ppStream:PPUCHAR;} pSize:PULONG):HRESULT; stdcall;
+ function Walk(pWalk:ISdpWalk):HRESULT; stdcall;
+ function GetAttributeList(out ppList:PUSHORT;{ppList:PPUSHORT;} pListSize:PULONG):HRESULT; stdcall;
+ function GetString(_offset:USHORT; pLangId:PUSHORT; var ppString:PWCHAR{ppString:PPWCHAR}):HRESULT; stdcall;
+ function GetIcon(cxRes:longint; cyRes:longint; phIcon:LPHICON):HRESULT; stdcall;
+ function GetServiceClass(pServiceClass:LPGUID):HRESULT; stdcall;
+ end;
+
+
+ IBluetoothDevice = interface(IUnknown)
+ ['{5BD0418B-D705-4766-B215-183E4EADE341}']
+ function Initialize(pInfo:PBthDeviceInfo):HRESULT; stdcall;
+ function GetInfo(pInfo:PBthDeviceInfo):HRESULT; stdcall;
+ function GetString(_type:BthDeviceStringType; var ppString:PWCHAR{ppString:PPWCHAR}):HRESULT; stdcall;
+ function SetString(_type:BthDeviceStringType; pString:PWCHAR):HRESULT; stdcall;
+ function GetIcon(cxRes:longint; cyRes:longint; phIcon:LPHICON):HRESULT; stdcall;
+ function GetApprovedServices(pServices:PGUID; pServiceCount:PULONG):HRESULT; stdcall;
+ function GetPassKey(hwndParent:HWND; pPassKey:PUCHAR; pPassKeyLength:PUCHAR):HRESULT; stdcall;
+ end;
+
+ IBluetoothAuthenticate = interface(IUnknown)
+ ['{5F0FBA2B-8300-429D-99AD-96A2835D4901}']
+
+ end;
+
+implementation
+
+end. \ No newline at end of file
diff --git a/packages/winceunits/src/bthutil.pp b/packages/winceunits/src/bthutil.pp
new file mode 100644
index 0000000000..b2047ec50c
--- /dev/null
+++ b/packages/winceunits/src/bthutil.pp
@@ -0,0 +1,83 @@
+{
+ 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.
+
+ ********************************************************************** }
+//
+// Microsoft Windows Mobile 6.0 for PocketPC SDK.
+//
+
+unit bthutil;
+
+{$CALLING cdecl}
+
+interface
+
+uses Windows;
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// @enum BTH_RADIO_MODE |
+// Enumerate all the possible modes of operation of the bluetooth radio
+//
+////////////////////////////////////////////////////////////////////////////////
+
+type
+ BTH_RADIO_MODE = DWORD;
+
+const
+ BTH_POWER_OFF = 0;
+ BTH_CONNECTABLE = 1;
+ BTH_DISCOVERABLE = 2;
+
+const
+ BthutilDLL = 'bthutil.dll';
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// @func int | BthSetMode |
+// This function set the bluetooth Mode of operation and reflects it in
+// the control panel. It also persist that state across hardware insertion
+// and reboot
+//
+// @syntax BthSetMode( DWORD dwMode )
+//
+// @parm DWORD | dwMode |
+// BTH_POWER_OFF to turn the bluetooth radio OFF
+// BTH_CONNECTABLE to turn the bluetooth radio ON and CONNECTABLE
+// BTH_DISCOVERABLE to turn the bluetooth radio ON and CONNECTABLE and DISCOVERABLE
+//
+// @rdesc int: ERROR_SUCCESS on success. Error code describing error on failure.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+function BthSetMode(dwMode:DWORD):longint; external BthutilDLL name 'BthSetMode';
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// @func int | BthGetMode |
+// This function retrieves the current mode of operation of the bluetooth radio
+//
+// @syntax BthGetMode( DWORD* pdwMode )
+//
+// @parm DWORD* | pdwMode |
+// BTH_POWER_OFF to indicate the bluetooth radio is OFF
+// BTH_CONNECTABLE to indicate the bluetooth radio ON and CONNECTABLE
+// BTH_DISCOVERABLE to indicate the bluetooth radio ON and CONNECTABLE and DISCOVERABLE
+//
+// @rdesc int: ERROR_SUCCESS on success. Error code describing error on failure.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+function BthGetMode(pdwMode:LPDWORD):longint; external BthutilDLL name 'BthGetMode';
+
+implementation
+
+end. \ No newline at end of file
diff --git a/packages/winceunits/src/buildwinceunits.pp b/packages/winceunits/src/buildwinceunits.pp
index 42c08ccfb5..109c74147a 100644
--- a/packages/winceunits/src/buildwinceunits.pp
+++ b/packages/winceunits/src/buildwinceunits.pp
@@ -23,7 +23,9 @@ interface
uses
aygshell,commctrl,commdlg,iphlpapi,notify,oleauto,power,shellapi,simmgr,tapi,
gpsapi,todaycmn,windbase,cesync,gx,winioctl,msgqueue,pm,service,htmlctrl,
- sipapi, cpl;
+ sipapi, cpl, bt_api, bt_sdp, bthapi, bthutil, ril, sms, ws2bth,
+ keybd, nled, phone, connmgr, devload, devmgmt, mmreg, mmsystem, msacm,
+ wininet, ras, raserror;
implementation
diff --git a/packages/winceunits/src/connmgr.pp b/packages/winceunits/src/connmgr.pp
new file mode 100644
index 0000000000..0d7f4f9a4a
--- /dev/null
+++ b/packages/winceunits/src/connmgr.pp
@@ -0,0 +1,726 @@
+{
+ 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 Name:
+//
+// connmgr.h
+//
+// DESCRIPTION from MSDN:
+// The Connection Manager API is used to centralize and automate the establishment
+// and management of the network connections on a Windows Mobile-based device.
+// Mobile device applications use Connection Manager to establish or schedule a
+// network connection, and Connection Manager handles the details of the connection.
+// The application simply informs Connection Manager of the network type to use
+// for the connection (the Internet, for example).
+// When an application requests a network connection, Connection Manager first
+// retrieves all of the possible connections from a set of Connection Service
+// Providers (CSPs). Connection Manager then associates a set of costs with these
+// routes and ultimately determines the optimal connection based on cost, latency,
+// bandwidth, and other factors. Finally, Connection Manager queues the requested
+// connection and uses the CSPs to establish the connection at the appropriate
+// time.
+//
+
+//
+// Microsoft Windows Mobile 6.0 for PocketPC SDK.
+//
+
+unit connmgr;
+
+{$CALLING cdecl}
+
+interface
+
+uses Windows, WinSock2;
+
+const
+ CellcoreDLL = 'cellcore.dll';
+
+// - connmgr_conntypes.h
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Connection types | Describes possible connection types and subtypes
+//
+// @comm none
+//
+// -----------------------------------------------------------------------------
+const
+ CM_CONNTYPE_UNKNOWN = 0;
+ CM_CONNTYPE_CELLULAR = 1;
+ CM_CONNTYPE_NIC = 2;
+ CM_CONNTYPE_BLUETOOTH = 3;
+ CM_CONNTYPE_UNIMODEM = 4;
+ CM_CONNTYPE_VPN = 5;
+ CM_CONNTYPE_PROXY = 6;
+ CM_CONNTYPE_PC = 7;
+ CM_CONNTYPE_MAX = 8;
+
+ CM_CONNSUBTYPE_UNKNOWN = 0;
+
+ CM_CONNSUBTYPE_CELLULAR_UNKNOWN = 0;
+ CM_CONNSUBTYPE_CELLULAR_CSD = 1;
+ CM_CONNSUBTYPE_CELLULAR_GPRS = 2;
+ CM_CONNSUBTYPE_CELLULAR_1XRTT = 3; // @constdefine Not distinct from CSD.
+ CM_CONNSUBTYPE_CELLULAR_1XEVDO = 4; // @constdefine Not distinct from CSD.
+ CM_CONNSUBTYPE_CELLULAR_1XEVDV = 5; // @constdefine Not distinct from CSD.
+ CM_CONNSUBTYPE_CELLULAR_EDGE = 6; // @constdefine Not distinct from GPRS.
+ CM_CONNSUBTYPE_CELLULAR_UMTS = 7; // @constdefine Not distinct from GPRS.
+ CM_CONNSUBTYPE_CELLULAR_VOICE = 8;
+ CM_CONNSUBTYPE_CELLULAR_PTT = 9; // @constdefine Push-to-Talk, not supported.
+ CM_CONNSUBTYPE_CELLULAR_HSDPA = 10; // @constdefine High-Speed Downlink Packet Access (3.5G).
+ CM_CONNSUBTYPE_CELLULAR_MAX = 11;
+
+ CM_CONNSUBTYPE_NIC_UNKNOWN = 0;
+ CM_CONNSUBTYPE_NIC_ETHERNET = 1;
+ CM_CONNSUBTYPE_NIC_WIFI = 2;
+ CM_CONNSUBTYPE_NIC_MAX = 3;
+
+ CM_CONNSUBTYPE_BLUETOOTH_UNKNOWN = 0;
+ CM_CONNSUBTYPE_BLUETOOTH_RAS = 1;
+ CM_CONNSUBTYPE_BLUETOOTH_PAN = 2;
+ CM_CONNSUBTYPE_BLUETOOTH_MAX = 3;
+
+ CM_CONNSUBTYPE_UNIMODEM_UNKNOWN = 0;
+ CM_CONNSUBTYPE_UNIMODEM_CSD = 1;
+ CM_CONNSUBTYPE_UNIMODEM_OOB_CSD = 2;
+//
+// Derived from unimodem device types
+//
+const
+ CM_CONNSUBTYPE_UNIMODEM_NULL_MODEM = 3; // Direct Cable Connect (DCC)
+ CM_CONNSUBTYPE_UNIMODEM_EXTERNAL_MODEM = 4; // Serial port attached modem
+ CM_CONNSUBTYPE_UNIMODEM_INTERNAL_MODEM = 5;
+ CM_CONNSUBTYPE_UNIMODEM_PCMCIA_MODEM = 6;
+ CM_CONNSUBTYPE_UNIMODEM_IRCOMM_MODEM = 7; // DCC over Irda
+ CM_CONNSUBTYPE_UNIMODEM_DYNAMIC_MODEM = 8; // Bluetooth modem
+ CM_CONNSUBTYPE_UNIMODEM_DYNAMIC_PORT = 9; // DCC over Bluetooth
+ CM_CONNSUBTYPE_UNIMODEM_MAX = 10;
+
+
+ CM_CONNSUBTYPE_VPN_UNKNOWN = 0;
+ CM_CONNSUBTYPE_VPN_L2TP = 1;
+ CM_CONNSUBTYPE_VPN_PPTP = 2;
+ CM_CONNSUBTYPE_VPN_MAX = 3;
+
+ CM_CONNSUBTYPE_PROXY_UNKNOWN = 0;
+ CM_CONNSUBTYPE_PROXY_NULL = 1;
+ CM_CONNSUBTYPE_PROXY_HTTP = 2;
+ CM_CONNSUBTYPE_PROXY_WAP = 3;
+ CM_CONNSUBTYPE_PROXY_SOCKS4 = 4;
+ CM_CONNSUBTYPE_PROXY_SOCKS5 = 5;
+ CM_CONNSUBTYPE_PROXY_MAX = 6;
+
+ CM_CONNSUBTYPE_PC_UNKNOWN = 0;
+ CM_CONNSUBTYPE_PC_DESKTOPPASSTHROUGH = 1;
+ CM_CONNSUBTYPE_PC_IR = 2;
+ CM_CONNSUBTYPE_PC_MODEM_LINK = 3;
+ CM_CONNSUBTYPE_PC_MAX = 4;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Connection options | Describes possible connection options
+//
+// @comm none
+//
+// -----------------------------------------------------------------------------
+const
+ CM_DSF_BILLBYTIME = $00000001; // @constdefine Connection is billed by time.
+ CM_DSF_ALWAYSON = $00000002; // @constdefine Connection is always on.
+ CM_DSF_SUSPENDRESUME = $00000004; // @constdefine Connection is suspend/resume capable.
+
+// - end of connmgr_conntypes.h
+
+
+// - connmgr_status.h
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct CONNMGR_CONNECTION_IPADDR | Address information for an active connection
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ _CONNMGR_CONNECTION_IPADDR = record
+ cIPAddr:DWORD; // @field Count of addresses in array.
+ IPAddr:array[0..0] of SOCKADDR_STORAGE; // @field Array of IPv4 and/or IPv6 addresses.
+ end;
+ CONNMGR_CONNECTION_IPADDR = _CONNMGR_CONNECTION_IPADDR;
+ LPCONNMGR_CONNECTION_IPADDR = ^_CONNMGR_CONNECTION_IPADDR;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct CONNMGR_CONNECTION_DETAILED_STATUS | Information about available connections
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ CONNMGRDETAILEDSTATUS_VERSION = 1;
+
+ CONNMGRDETAILEDSTATUS_PARAM_TYPE = $00000001;
+ CONNMGRDETAILEDSTATUS_PARAM_SUBTYPE = $00000002;
+ CONNMGRDETAILEDSTATUS_PARAM_DESTNET = $00000004;
+ CONNMGRDETAILEDSTATUS_PARAM_SOURCENET = $00000008;
+ CONNMGRDETAILEDSTATUS_PARAM_FLAGS = $00000010;
+ CONNMGRDETAILEDSTATUS_PARAM_SECURE = $00000020;
+ CONNMGRDETAILEDSTATUS_PARAM_DESCRIPTION = $00000040;
+ CONNMGRDETAILEDSTATUS_PARAM_ADAPTERNAME = $00000080;
+ CONNMGRDETAILEDSTATUS_PARAM_CONNSTATUS = $00000100;
+ CONNMGRDETAILEDSTATUS_PARAM_LASTCONNECT = $00000200;
+ CONNMGRDETAILEDSTATUS_PARAM_SIGNALQUALITY = $00000400;
+ CONNMGRDETAILEDSTATUS_PARAM_IPADDR = $00000800;
+
+type
+ LPCONNMGR_CONNECTION_DETAILED_STATUS = ^_CONNMGR_CONNECTION_DETAILED_STATUS;
+ _CONNMGR_CONNECTION_DETAILED_STATUS = record
+ pNext:LPCONNMGR_CONNECTION_DETAILED_STATUS;
+
+ dwVer:DWORD; // @field Structure version; current is CONNMGRDETAILEDSTATUS_VERSION.
+ dwParams:DWORD; // @field Combination of CONNMGRDETAILEDSTATUS_PARAM_* values.
+
+ dwType:DWORD; // @field One of CM_CONNTYPE_* values.
+ dwSubtype:DWORD; // @field One of CM_CONNSUBTYPE_* values.
+
+ dwFlags:DWORD; // @field Combination of CM_DSF_* flags.
+ dwSecure:DWORD; // @field Secure level (0 == not-secure) of connection.
+
+ guidDestNet:GUID; // @field GUID of destination network.
+ guidSourceNet:GUID; // @field GUID of source network.
+
+ szDescription:PTCHAR; // @field Name of connection, 0-terminated string or NULL if N/A.
+ szAdapterName:GUID; // @field Name of adapter, 0-terminated or NULL if N/A.
+
+ dwConnectionStatus:DWORD; // @field One of CONNMGR_STATUS_*.
+ LastConnectTime:SYSTEMTIME; // @field Time connection was last established.
+ dwSignalQuality:DWORD; // @field Signal quality normalized in the range 0-255.
+
+ pIPAddr:LPCONNMGR_CONNECTION_IPADDR; // @field Available IP addrs, or NULL if N/A.
+ end;
+ CONNMGR_CONNECTION_DETAILED_STATUS = _CONNMGR_CONNECTION_DETAILED_STATUS;
+// End of version 1 fields.
+
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func ConnMgrQueryDetailedStatus | Returns detailed information about all existing connections.
+//
+// @comm Standard semantics here, call once to find out buffer size, then call
+// again to get array of CONNMGR_CONNECTION_DETAILED_STATUS structures.
+// Note: since connections can change often, make sure to allow for possibility
+// that between first and second call, the necessary amount of space needed for
+// the return structure changes.
+//
+// -----------------------------------------------------------------------------
+
+function ConnMgrQueryDetailedStatus(pStatusBuffer:LPCONNMGR_CONNECTION_DETAILED_STATUS; // @parm Pointer to buffer to be filled status info.
+ pcbBufferSize:LPDWORD // @parm IN: Size of buffer. OUT: size of buffer needed.
+ ):HRESULT; external CellcoreDLL name 'ConnMgrQueryDetailedStatus';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func ConnMgrRegisterForStatusNotification | Registers a window handle for connection status notifications.
+//
+// @comm Will post a notification when,
+// 1) an inactive connection is created or deleted, ex. via user input.
+// 2) any of of the active connections changes connection state, i.e.
+// active to inactive, or inactive to active.
+// Note: Notifications will not be generated for other changes, ex. change in
+// signal quality.
+//
+// -----------------------------------------------------------------------------
+
+const
+ CONNMGR_STATUS_CHANGE_NOTIFICATION_MSG = 'CONNMGR_STATUS_CHANGE_NOTIFICATION_MSG';
+
+function ConnMgrRegisterForStatusChangeNotification(fEnable:BOOL; // @parm Turn on or turn off notifications
+ _hWnd:HWND // @parm Window to post status change notifications to
+ ):HRESULT; external CellcoreDLL name 'ConnMgrRegisterForStatusChangeNotification';
+
+// - end of connmgr_status.h
+
+
+// - connmgr_proxy.h
+
+// Proxy CSP config/settings
+const
+ IID_ConnPrv_IProxyExtension:TIID = '{AF96B0BD-A481-482C-A094-A8448767A0C0}';
+
+const
+ CMPROXY_PROXYSERVER_MAXSIZE = 256;
+ CMPROXY_USERNAME_MAXSIZE = 32;
+ CMPROXY_PASSWORD_MAXSIZE = 32;
+ CMPROXY_EXTRAINFO_MAXSIZE = 256;
+ CMPROXY_PROXYOVERRIDE_MAXSIZE = 64;
+
+type
+ _PROXY_CONFIG = record
+ dwType:DWORD;
+ dwEnable:DWORD;
+ szProxyServer:array[0..CMPROXY_PROXYSERVER_MAXSIZE-1] of TCHAR;
+ szUsername:array[0..CMPROXY_USERNAME_MAXSIZE-1] of TCHAR;
+ szPassword:array[0..CMPROXY_PASSWORD_MAXSIZE-1] of TCHAR;
+ szProxyOverride:array[0..CMPROXY_PROXYOVERRIDE_MAXSIZE-1] of TCHAR;
+ szExtraInfo:array[0..CMPROXY_EXTRAINFO_MAXSIZE-1] of TCHAR;
+ end;
+ PROXY_CONFIG = _PROXY_CONFIG;
+ LPPROXY_CONFIG = ^_PROXY_CONFIG;
+
+// - end of connmgr_proxy.h
+
+// - connmgr.h
+
+const
+ IID_DestNetInternet:TIID = '{436EF144-B4FB-4863-A041-8F905A62C572}';
+
+ IID_DestNetCorp:TIID = '{A1182988-0D73-439e-87AD-2A5B369F808B}';
+
+ IID_DestNetWAP = '{7022E968-5A97-4051-BC1C-C578E2FBA5D9}';
+
+ IID_DestNetSecureWAP:TIID = '{F28D1F74-72BE-4394-A4A7-4E296219390C}';
+
+//
+// Connection Manager
+//
+
+//
+// Client API
+//
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Valid Params | Defines valid parameters in CONNMGR_CONNECTIONINFO
+//
+// @comm The following flags in the dwParams field of the CONNMGR_CONNECTIONINFO structure
+// define which optional parameters are valid.
+//
+// -----------------------------------------------------------------------------
+const
+ CONNMGR_PARAM_GUIDDESTNET = $01; // @constdefine guidDestNet field is valid
+ CONNMGR_PARAM_MAXCOST = $02; // @constdefine MaxCost field is valid
+ CONNMGR_PARAM_MINRCVBW = $04; // @constdefine MinRcvBw field is valid
+ CONNMGR_PARAM_MAXCONNLATENCY = $08; // @constdefine MaxConnLatency field is valid
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Proxy flags | Defines which proxies the application supports
+//
+// @comm The following flags in the dwFlags field of the CONNMGR_CONNECTIONINFO structure
+// define special connection properties supported by client apps, typically which proxies are
+// supported by each app. For example, each CONNMGR_FLAG_PROXY_* specifies that this connection
+// can be specified by configuring an appropriate proxy server. e.g. HTTP this is appropriate
+// for Internet Explorer and other HTTP based protocols, including HTTP-DAV synchronization.
+// If none of these flags are specified, then only a direct IP connection (or tunnel) will be attempted.
+//
+// -----------------------------------------------------------------------------
+const
+ CONNMGR_FLAG_PROXY_HTTP = $01; // @constdefine HTTP Proxy supported
+ CONNMGR_FLAG_PROXY_WAP = $02; // @constdefine WAP Proxy (gateway) supported
+ CONNMGR_FLAG_PROXY_SOCKS4 = $04; // @constdefine SOCKS4 Proxy supported
+ CONNMGR_FLAG_PROXY_SOCKS5 = $08; // @constdefine SOCKS5 Proxy supported
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Control flags | Defines connection properties
+//
+// @comm The following flags in the dwFlags field of the CONNMGR_CONNECTIONINFO structure
+// define special connection properties supported by client apps,
+//
+// -----------------------------------------------------------------------------
+const
+ CONNMGR_FLAG_SUSPEND_AWARE = $10; // @constdefine suspended connections supported
+ CONNMGR_FLAG_REGISTERED_HOME = $20; // @constdefine only dial out if we're registered on the home network
+ CONNMGR_FLAG_NO_ERROR_MSGS = $40; // @constdefine don't show any error messages for failed connections
+ CONNMGR_FLAG_WAKE_ON_INCOMING = $80; // @constdefine to satisfy request use only those interfaces that can wake the system on incoming traffic
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Priority | Defines which priority of the applications connections
+//
+// @comm The following flags in the dwPriority field of the CONNMGR_CONNECTIONINFO structure
+// define the priority of the connection. Connection manager arbitrates among multiple connections,
+// satisfying as many as possible at a time but giving preference to higher priorities
+//
+// -----------------------------------------------------------------------------
+const
+ CONNMGR_PRIORITY_VOICE = $00020000;
+// @constdefine Voice, highest priority, reserved for internal use only.
+
+ CONNMGR_PRIORITY_USERINTERACTIVE = $00008000;
+// @constdefine User initiated action caused this request, and UI is
+// currently pending on the creation of this connection.
+// This is appropriate for an interactive browsing session,
+// or if the user selects "MORE" at the bottom of a truncated
+// mail message, etc.
+
+
+ CONNMGR_PRIORITY_USERBACKGROUND = $00002000;
+// @constdefine User initiated connection which has recently become idle.
+// A connection should be marked as idle when it is no
+// longer the user's current task.
+
+ CONNMGR_PRIORITY_USERIDLE = $00000800;
+// @constdefine Interactive user task which has been idle for an application
+// specified time. The application should toggle the state
+// between CONNMGR_PRIORITY_USERIDLE and CONNMGR_PRIORITY_USERINTERACTIVE as the user
+// uses the application. This helps ConnectionManager
+// optimize responsiveness to the interactive application,
+// while sharing the connection with background applications.
+
+ CONNMGR_PRIORITY_HIPRIBKGND = $00000200;
+// @constdefine High priority background connection
+
+ CONNMGR_PRIORITY_IDLEBKGND = $00000080;
+// @constdefine Idle priority background connection
+
+ CONNMGR_PRIORITY_EXTERNALINTERACTIVE = $00000020;
+// @constdefine Connection is requested on behalf of an external entity, but
+// is an interactive session (e.g. AT Command Iterpreter)
+
+ CONNMGR_PRIORITY_LOWBKGND = $00000008;
+// @constdefine Lowest priority. Only connects if another higher priority client is already using the same path.
+
+ CONNMGR_PRIORITY_CACHED = $00000002;
+// @constdefine Cached connection, reserved for internal use only.
+
+ CONNMGR_PRIORITY_ALWAYS_ON = $00000001;
+// @constdefine Always on connection, reserved for internal use only.
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct CONNMGR_CONNECTIONINFO | Information about connection request
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ _CONNMGR_CONNECTIONINFO = record
+ cbSize:DWORD; // @field Size of this structure
+ dwParams:DWORD; // @field Valid parms, set of CONNMGR_PARAM_*
+ dwFlags:DWORD; // @field Connection flags, set of CONNMGR_FLAG_*
+ dwPriority:DWORD; // @field Priority, one of CONNMGR_PRIORITY_*
+ bExclusive:BOOL; // @field Connection is exclusive, see comments
+ bDisabled:BOOL; // @field Don't actually connect
+ guidDestNet:GUID; // @field GUID of network to connect to
+ _hWnd:HWND; // @field hWnd to post status change messages to
+ uMsg:UINT; // @field Msg to use when posting status changes
+ lParam:LPARAM; // @field lParam to use when posting status changes
+ ulMaxCost:ULONG; // @field Max acceptable cost of connection
+ ulMinRcvBw:ULONG; // @field Min acceptable receive bandwidth of connection
+ ulMaxConnLatency:ULONG; // @field Max acceptable connect latency
+ end;
+ CONNMGR_CONNECTIONINFO = _CONNMGR_CONNECTIONINFO;
+ LPCONNMGR_CONNECTIONINFO = ^_CONNMGR_CONNECTIONINFO;
+
+// @comm bExclusive: If false, the connection is shared among all applications, and other
+// applications with an interest in a connection to this network will be notified that
+// the connection is available. If true, then this connection can not be shared with other
+// applications, and no other applications will be notified, and any application requesting
+// a connection to the same network will be treated as a contender for
+// the same resource, and not permitted to share the existing connection. A decision will be made
+// between this connection and the others based on connection priority.
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Creates a connection request.
+//
+// @comm Return Value: S_OK if success, error code otherwise
+//
+// -----------------------------------------------------------------------------
+function ConnMgrEstablishConnection(pConnInfo:LPCONNMGR_CONNECTIONINFO; // @parm Params describing requested connection
+ phConnection:LPHANDLE // @parm Returned connection handle
+ ):HRESULT; external CellcoreDLL name 'ConnMgrEstablishConnection';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Creates a connection request.
+//
+// @comm Return Value: Same as ConnMgrEstablishConnection, but doesn't return
+// until connection has either been established or failed.
+//
+// -----------------------------------------------------------------------------
+function ConnMgrEstablishConnectionSync(pConnInfo:LPCONNMGR_CONNECTIONINFO; // @parm Params describing requested connection
+ phConnection:LPHANDLE; // @parm Returned connection handle
+ dwTimeout:DWORD; // @parm Timeout
+ pdwStatus:LPDWORD // @parm Final status value, one of CONNMGR_STATUS_*
+ ):HRESULT; external CellcoreDLL name 'ConnMgrEstablishConnectionSync';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Status values | Describes the current status of the connection
+//
+// @comm none
+//
+// -----------------------------------------------------------------------------
+const
+ CONNMGR_STATUS_UNKNOWN = $00; // @constdefine Unknown status
+
+ CONNMGR_STATUS_CONNECTED = $10; // @constdefine Connection is up
+ CONNMGR_STATUS_SUSPENDED = $11; // @constdefine Connection is up but suspended
+
+ CONNMGR_STATUS_DISCONNECTED = $20; // @constdefine Connection is disconnected
+ CONNMGR_STATUS_CONNECTIONFAILED = $21; // @constdefine Connection failed and cannot not be reestablished
+ CONNMGR_STATUS_CONNECTIONCANCELED = $22; // @constdefine User aborted connection
+ CONNMGR_STATUS_CONNECTIONDISABLED = $23; // @constdefine Connection is ready to connect but disabled
+ CONNMGR_STATUS_NOPATHTODESTINATION = $24; // @constdefine No path could be found to destination
+ CONNMGR_STATUS_WAITINGFORPATH = $25; // @constdefine Waiting for a path to the destination
+ CONNMGR_STATUS_WAITINGFORPHONE = $26; // @constdefine Voice call is in progress
+ CONNMGR_STATUS_PHONEOFF = $27; // @constdefine Phone resource needed and phone is off
+ CONNMGR_STATUS_EXCLUSIVECONFLICT = $28; // @constdefine the connection could not be established because it would multi-home an exclusive connection
+ CONNMGR_STATUS_NORESOURCES = $29; // @constdefine Failed to allocate resources to make the connection.
+ CONNMGR_STATUS_CONNECTIONLINKFAILED = $2A; // @constdefine Connection link disconnected prematurely.
+ CONNMGR_STATUS_AUTHENTICATIONFAILED = $2B; // @constdefine Failed to authenticate user.
+ CONNMGR_STATUS_NOPATHWITHPROPERTY = $2C; // @constdefine Path with connection having requested property, ex. WAKE_ON_INCOMING, is not available.
+
+ CONNMGR_STATUS_WAITINGCONNECTION = $40; // @constdefine Attempting to connect
+ CONNMGR_STATUS_WAITINGFORRESOURCE = $41; // @constdefine Resource is in use by another connection
+ CONNMGR_STATUS_WAITINGFORNETWORK = $42; // @constdefine Network is used by higher priority thread or device is roaming.
+
+ CONNMGR_STATUS_WAITINGDISCONNECTION = $80; // @constdefine Connection is being brought down
+ CONNMGR_STATUS_WAITINGCONNECTIONABORT = $81; // @constdefine Aborting connection attempt
+
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Returns status about the current connection.
+//
+// @comm none
+//
+// -----------------------------------------------------------------------------
+function ConnMgrConnectionStatus(hConnection:HANDLE; // @parm Handle to connection, returned from ConnMgrEstablishConnection
+ pdwStatus:LPDWORD // @parm Returns current connection status, one of CONNMGR_STATUS_*
+ ):HRESULT; external CellcoreDLL name 'ConnMgrConnectionStatus';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Deletes specified connection request, potentially dropping the physical connection.
+//
+// @comm none
+//
+// -----------------------------------------------------------------------------
+function ConnMgrReleaseConnection(hConnection:HANDLE; // @parm Handle to connection, returned from ConnMgrEstablishConnection
+ bCache:BOOL // @parm ConnMgr can cache connection
+ ):HRESULT; external CellcoreDLL name 'ConnMgrReleaseConnection';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Changes a connection's priority.
+//
+// @comm none
+//
+// -----------------------------------------------------------------------------
+function ConnMgrSetConnectionPriority(hConnection:HANDLE; // @parm Handle to connection, returned from ConnMgrEstablishConnection
+ dwPriority:DWORD // @parm New priority
+ ):HRESULT; external CellcoreDLL name 'ConnMgrSetConnectionPriority';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func General purpose (backdoor) API for exchanging information with planner or providers.
+//
+// @comm none
+//
+// -----------------------------------------------------------------------------
+function ConnMgrProviderMessage(hConnection:HANDLE; // @parm Optional, Handle to connection
+ pguidProvider:LPGUID; // @parm Provider GUID
+ pdwIndex:LPDWORD; // @parm Optional index, used to address multiple providers associated with connection
+ dwMsg1:DWORD; // @parm General param 1
+ dwMsg2:DWORD; // @parm General param 2
+ pParams:PBYTE; // @param Pointer to params structure
+ cbParamSize:ULONG // @param size of params structure
+ ):HRESULT; external CellcoreDLL name 'ConnMgrProviderMessage';
+
+const
+ CONNMGR_MAX_DESC = 128; // @constdefine Max size of a network description
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct CONNMGR_DESTINATION_INFO | Information about a specific network
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ _CONNMGR_DESTINATION_INFO = record
+ _guid:GUID; // @field GUID associated with network
+ szDescription:array[0..CONNMGR_MAX_DESC-1] of TCHAR; // @field Description of network
+ fSecure:BOOL; // @field Is it OK to allow multi-homing on the network
+ end;
+ CONNMGR_DESTINATION_INFO = _CONNMGR_DESTINATION_INFO;
+ LPCONNMGR_DESTINATION_INFO = ^_CONNMGR_DESTINATION_INFO;
+
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Enumerates available networks.
+//
+// @comm none
+//
+// -----------------------------------------------------------------------------
+function ConnMgrEnumDestinations(nIndex:longint; // @param Index of network
+ pDestInfo:LPCONNMGR_DESTINATION_INFO // @param ptr to structure to fill in with info about network
+ ):HRESULT; external CellcoreDLL name 'ConnMgrEnumDestinations';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct SCHEDULEDCONNECTIONINFO | Information about a scheduled connection
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ _SCHEDULEDCONNECTIONINFO = record
+ guidDest:GUID; // @field Guid of network
+ uiStartTime:UINT64; // @field Starting time, same ref as filetime
+ uiEndTime:UINT64; // @field Ending time, same ref as filetime
+ uiPeriod:UINT64; // @field Period between schedule attempts
+ szAppName:array[0..MAX_PATH-1] of TCHAR; // @field App name to execute when scheduled
+ szCmdLine:array[0..MAX_PATH-1] of TCHAR; // @field Cmd line to execute when scheduled
+ szToken:array[0..31] of TCHAR; // @field Unique token identifying this scheduled connection
+ bPiggyback:BOOL; // @field If true, execute app whenever network is available
+ end;
+ SCHEDULEDCONNECTIONINFO = _SCHEDULEDCONNECTIONINFO;
+ LPSCHEDULEDCONNECTIONINFO = ^_SCHEDULEDCONNECTIONINFO;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Registers a scheduled connection
+//
+// @comm none
+//
+// -----------------------------------------------------------------------------
+function ConnMgrRegisterScheduledConnection(pSCI:SCHEDULEDCONNECTIONINFO // @param Ptr to struct describing scheduled connection
+ ):HRESULT; external CellcoreDLL name 'ConnMgrRegisterScheduledConnection';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Unregisters a scheduled connection
+//
+// @comm none
+//
+// -----------------------------------------------------------------------------
+function ConnMgrUnregisterScheduledConnection(pwszToken:LPCTSTR // @param Token of scheduled connection to unregister
+ ):HRESULT; external CellcoreDLL name 'ConnMgrUnregisterScheduledConnection';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Maps a URL to a destination network GUID
+//
+// @comm none
+//
+// -----------------------------------------------------------------------------
+function ConnMgrMapURL(pwszURL:LPCTSTR; // @parm URL to map
+ pguid:LPGUID; // @parm Returned network GUID
+ pdwIndex:LPDWORD // @parm Index in table for next search
+ ):HRESULT; external CellcoreDLL name 'ConnMgrMapURL';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Returns a handle to an event which becomes signaled when the ConnMgr API
+// is ready to be used. Caller is responsible for calling CloseHandle on the returned event.
+//
+// @comm none
+//
+// -----------------------------------------------------------------------------
+function ConnMgrApiReadyEvent:HANDLE; external CellcoreDLL name 'ConnMgrApiReadyEvent';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Defines the type of a connection reference
+//
+// @comm none
+//
+// -----------------------------------------------------------------------------
+
+{$PACKENUM 4}
+type
+ _ConnMgrConRefTypeEnum = (ConRefType_NAP := 0, // @constdefine NAP connection reference
+ ConRefType_PROXY // @constdefine PROXY connection reference
+ );
+ ConnMgrConRefTypeEnum = _ConnMgrConRefTypeEnum;
+{$PACKENUM DEFAULT}
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Maps a connection reference to its corresponding GUID
+//
+// @comm none
+//
+// -----------------------------------------------------------------------------
+
+function ConnMgrMapConRef(e:ConnMgrConRefTypeEnum; // @parm Specify type of connection reference
+ szConRef:LPCTSTR; // @parm Connection reference to map
+ pGUID:LPGUID // @parm Returned connection reference GUID
+ ):HRESULT; external CellcoreDLL name 'ConnMgrMapConRef';
+
+
+// - end of connmgr.h
+
+implementation
+
+end.
diff --git a/packages/winceunits/src/devload.pp b/packages/winceunits/src/devload.pp
new file mode 100644
index 0000000000..30471ba525
--- /dev/null
+++ b/packages/winceunits/src/devload.pp
@@ -0,0 +1,240 @@
+{
+ 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 Name:
+//
+// devload.h
+//
+// Abstract:
+//
+// Device loader structures and defines
+//
+
+//
+// Microsoft Windows Mobile 6.0 for PocketPC SDK.
+//
+
+unit devload;
+
+{$CALLING cdecl}
+
+interface
+
+uses Windows;
+
+// @doc DRIVERS
+
+//
+// These keys are under HKEY_LOCAL_MACHINE
+//
+const
+ DEVLOAD_DRIVERS_KEY = 'Drivers';
+ DEVLOAD_BUILT_IN_KEY = 'Drivers\BuiltIn';
+ DEVLOAD_PCMCIA_KEY = 'Drivers\PCMCIA';
+ DEVLOAD_ACTIVE_KEY = 'Drivers\Active';
+ DEVLOAD_DETECT_KEY = DEVLOAD_PCMCIA_KEY + '\Detect';
+
+//
+// These are the required and optional values under a device key.
+//
+const
+ DEVLOAD_DLLNAME_VALNAME = 'Dll'; // DLL name (required)
+ DEVLOAD_DLLNAME_VALTYPE = REG_SZ;
+ DEVLOAD_ICLASS_VALNAME = 'IClass'; // Class(es) of device interface (semi-required)
+ DEVLOAD_ICLASS_VALTYPE = REG_MULTI_SZ;
+ DEVLOAD_LOADORDER_VALNAME = 'Order'; // LoadOrder (optional)
+ DEVLOAD_LOADORDER_VALTYPE = REG_DWORD;
+ DEVLOAD_ENTRYPOINT_VALNAME = 'Entry'; // Entrypoint name (deprecated)
+ DEVLOAD_ENTRYPOINT_VALTYPE = REG_SZ;
+ DEVLOAD_PREFIX_VALNAME = 'Prefix'; // Device prefix (optional)
+ DEVLOAD_PREFIX_VALTYPE = REG_SZ;
+ DEVLOAD_INDEX_VALNAME = 'Index'; // Device index (optional)
+ DEVLOAD_INDEX_VALTYPE = REG_DWORD;
+ DEVLOAD_CONTEXT_VALNAME = 'Context'; // Device context (optional)
+ DEVLOAD_CONTEXT_VALTYPE = REG_DWORD;
+ DEVLOAD_INITCODE_VALNAME = 'Ioctl'; // Device IO control code to indicate context (deprecated)
+ DEVLOAD_INITCODE_VALTYPE = REG_DWORD;
+ DEVLOAD_BUSINITCODE_VALNAME = 'BusIoctl'; // Bus IO control code to indicate context
+ DEVLOAD_BUSINITCODE_VALTYPE = REG_DWORD;
+ DEVLOAD_FLAGS_VALNAME = 'Flags'; // Flag to control loading/unloading (optional)
+ DEVLOAD_FLAGS_VALTYPE = REG_DWORD;
+ DEVLOAD_INTRPEND_VALNAME = 'NoIntrPend'; // Is the interrupt pending flag invalid (optional)
+ DEVLOAD_INTRPEND_VALTYPE = REG_DWORD;
+ DEVLOAD_REPARMS_VALNAME = 'RegenumParms'; // Regenum parms passed into Active\xx
+ DEVLOAD_REPARMS_VALTYPE = REG_MULTI_SZ;
+
+ DEVLOAD_MEMBASE_VALNAME = 'MemBase'; // Memory base (optional)
+ DEVLOAD_MEMLEN_VALNAME = 'MemLen'; // Memory length (optional)
+ DEVLOAD_IOBASE_VALNAME = 'IoBase'; // IO base (optional)
+ DEVLOAD_IOLEN_VALNAME = 'IoLen'; // IO length (optional)
+ DEVLOAD_SYSINTR_VALNAME = 'SysIntr'; // System interrupt number (optional)
+ DEVLOAD_IRQ_VALNAME = 'Irq'; // Irq number (optional)
+ DEVLOAD_IFCTYPE_VALNAME = 'InterfaceType'; // Bus interface type (i.e. PCIbus, ISA, etc) (optional)
+ DEVLOAD_BUSNUMBER_VALNAME = 'BusNumber'; // Bus number (relevant for PCIbus) (optional)
+ DEVLOAD_ISRDLL_VALNAME = 'IsrDll'; // DLL name of ISR (optional)
+ DEVLOAD_ISRHANDLER_VALNAME = 'IsrHandler'; // ISR handler function name (optional)
+
+//
+// The presence of the value "Keep" will cause device.exe to skip the call to
+// FreeLibrary after calling the specified entrypoint. This only affects
+// builtin drivers that specify an entrypoint. (This usage is deprecated -
+// make appropriate use of the UNLOAD flag instead).
+//
+const
+ DEVLOAD_KEEPLIB_VALNAME = 'Keep'; // (deprecated - see above)
+ DEVLOAD_KEEPLIB_VALTYPE = REG_DWORD;
+
+//
+// Flag values.
+//
+const
+ DEVFLAGS_NONE = $00000000; // No flags defined
+ DEVFLAGS_UNLOAD = $00000001; // Unload driver after call to entry point returns
+ DEVFLAGS_LOADLIBRARY = $00000002; // Use LoadLibrary instead of LoadDriver
+ DEVFLAGS_NOLOAD = $00000004; // Don't load Dll
+ DEVFLAGS_NAKEDENTRIES = $00000008; // Entry points don't have Prefix prepended
+ DEVFLAGS_BOOTPHASE_1 = $00001000; // This driver only load at system phase 1
+ DEVFLAGS_IRQ_EXCLUSIVE = $00000100; // This driver only can be load when it has exclusive access for IRQ.
+ DEVFLAGS_TRUSTEDCALLERONLY = $00010000; // This driver only can be opened by trusted application.
+
+//
+// Structure passed in the input buffer of DeviceIoControl() for the
+// post initialization ioctl
+//
+type
+ _POST_INIT_BUF = record
+ p_hDevice:HANDLE; // device handle from RegisterDevice
+ p_hDeviceKey:HKEY; // open registry handle to the driver's device key
+ end;
+ POST_INIT_BUF = _POST_INIT_BUF;
+ PPOST_INIT_BUF = ^POST_INIT_BUF;
+
+
+//
+// For passing additional registry settings to ActivateDeviceEx()
+//
+type
+ _REGINI = record
+ lpszVal:LPCWSTR;
+ pData:LPBYTE;
+ dwLen:DWORD;
+ dwType:DWORD;
+ end;
+ REGINI = _REGINI;
+ LPCREGINI = ^_REGINI;
+
+//
+// These values reside under a device's active key
+//
+const
+ DEVLOAD_CLIENTINFO_VALNAME = 'ClientInfo'; // ClientInfo DWORD from ActivateDriver
+ DEVLOAD_CLIENTINFO_VALTYPE = REG_DWORD;
+ DEVLOAD_HANDLE_VALNAME = 'Hnd'; // Device handle (from RegisterDevice)
+ DEVLOAD_HANDLE_VALTYPE = REG_DWORD;
+ DEVLOAD_DEVNAME_VALNAME = 'Name'; // Device name (i.e "COM1:")
+ DEVLOAD_DEVNAME_VALTYPE = REG_SZ;
+ DEVLOAD_DEVKEY_VALNAME = 'Key'; // Device key in \Drivers\(Built-In or PCMCIA)
+ DEVLOAD_DEVKEY_VALTYPE = REG_SZ;
+ DEVLOAD_PNPID_VALNAME = 'PnpId'; // Plug and Play Id (PCMCIA, optional)
+ DEVLOAD_PNPID_VALTYPE = REG_SZ;
+ DEVLOAD_SOCKET_VALNAME = 'Sckt'; // PCMCIA socket (optional)
+ DEVLOAD_SOCKET_VALTYPE = REG_DWORD; // Actually a CARD_SOCKET_HANDLE
+ DEVLOAD_INTERFACETYPE_VALNAME = 'InterfaceType'; // Bus Type
+ DEVLOAD_INTERFACETYPE_VALTYPE = REG_DWORD;
+
+
+//
+// These values reside under a device's active key. They are provided by the device's bus
+// driver. All values are optional. The BusParent tells the Device Manager which device
+// driver loaded the new driver. The BusPrefix is used to specify DLL entry point decoration
+// for devices that do not expose a stream interface to applications (via the legacy or $device
+// namespaces). If a Prefix value is specified in the device's device key and a BusPrefix value
+// is specified, they must match. The BusName provides the Device Manager with the name that the
+// device driver will expose in the $bus namespace. This name must be unique and is completely
+// specified by the bus driver; it is not decorated with an instance index; if a duplicate name
+// is found, the driver will not load.
+//
+const
+ DEVLOAD_BUSPARENT_VALNAME = 'BusParent'; // parent bus driver handle
+ DEVLOAD_BUSPARENT_VALTYPE = REG_DWORD;
+ DEVLOAD_BUSPREFIX_VALNAME = 'BusPrefix'; // DLL entry point decoration -- must match "Prefix" if present in device key
+ DEVLOAD_BUSPREFIX_VALTYPE = REG_SZ;
+ DEVLOAD_BUSNAME_VALNAME = 'BusName'; // device's name on the parent bus
+ DEVLOAD_BUSNAME_VALTYPE = REG_SZ;
+
+//
+// TAPI Pnp support
+//
+const
+ DEVLOAD_TSPDLL_VALNAME = 'Tsp'; // TAPI Service Provider DLL
+ DEVLOAD_TSPDLL_VALTYPE = REG_SZ;
+ DEVLOAD_TSPDEV_VALNAME = 'THnd'; // TAPI device index
+ DEVLOAD_TSPDEV_VALTYPE = REG_DWORD;
+
+//
+// Prototype for the optional device driver entrypoint
+//
+type
+ PFN_DEV_ENTRY = function(param1:LPTSTR):DWORD; cdecl; // Parameter is registry path of device's key
+
+const
+ DEVKEY_LEN = 256; // Max length of registry key path name
+ DEVNAME_LEN = 16; // Max length of device name
+ DEVDLL_LEN = 64; // Max length of device driver DLL name
+ DEVENTRY_LEN = 64; // Max length of device driver entrypoint name
+ DEVPREFIX_LEN = 8; // Max length of device prefix
+
+
+//
+// Device APIs: EnumPnpIds, EnumDevices, GetDeviceKeys and OpenDeviceKey
+// (in coredll.dll)
+//
+function EnumPnpIds(PnpList:LPTSTR; lpBuflen:LPDWORD):DWORD; external KernelDLL name 'EnumPnpIds'; // index BE
+function EnumDevices(DevList:LPTSTR; lpBuflen:LPDWORD):DWORD; external KernelDLL name 'EnumDevices'; // index BF
+function GetDeviceKeys(DevName:LPCTSTR; ActiveKey:LPTSTR; lpActiveLen:LPDWORD;
+ DriverKey:LPTSTR; lpDriverLen:LPDWORD):DWORD; external KernelDLL name 'GetDeviceKeys'; // index C0
+function OpenDeviceKey(ActiveKey:LPCTSTR):HKEY; external KernelDLL name 'OpenDeviceKey'; // index C1
+function GetDeviceHandleFromContext(pContext:LPCTSTR):HANDLE; external KernelDLL name 'GetDeviceHandleFromContext';
+
+
+const
+ DevMgrDLL = 'devmgr.dll';
+//
+// Device Manager APIs located in devmgr.dll. These APIs are only available to drivers
+// loaded in the Device Manager's process context.
+//
+function DmAdvertiseInterface(hDevice:HANDLE; const devclass:LPGUID; name:LPCWSTR; fAdd:BOOL):DWORD; external DevMgrDLL name 'DmAdvertiseInterface';
+
+//
+// This interface GUID indicates that the device supports differentiating the $bus and $device
+// (and legacy) namespaces. Devices must advertise this GUID via IClass or calls to
+// DmAdvertiseInterface() before CreateFile() requests on their $bus names will succeed. The GUID
+// must be associated with their bus name, not their $device or legacy name.
+//
+const
+ DMCLASS_PROTECTEDBUSNAMESPACE = '{6F40791D-300E-44E4-BC38-E0E63CA8375C}';
+
+//
+// Drivers that advertise DMCLASS_PROTECTEDBUSNAMESPACE will have this bit set in the dwAccess
+// parameter to their XXX_Open() entry point when a handle is opened using the $bus namespace.
+// This allows them to know which handles are allowed to carry out privileged operations. If they
+// advertise DMCLASS_PROTECTEDBUSNAMESPACE, they are required to block privileged operations on
+// handles opened in the $device or legacy namespaces.
+//
+const
+ DEVACCESS_BUSNAMESPACE = FILE_WRITE_ATTRIBUTES;
+
+implementation
+
+end.
diff --git a/packages/winceunits/src/devmgmt.pp b/packages/winceunits/src/devmgmt.pp
new file mode 100644
index 0000000000..e634a2608b
--- /dev/null
+++ b/packages/winceunits/src/devmgmt.pp
@@ -0,0 +1,73 @@
+{
+ 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 Name:
+//
+// devmgmt.h
+//
+// DESCRIPTION:
+// Device Management APIs
+//
+
+//
+// Included Module Name:
+//
+// cfgmgrapi.h
+//
+// DESCRIPTION:
+// Configmanager API to process XML configuration files
+//
+
+//
+// Microsoft Windows Mobile 6.0 for PocketPC SDK.
+//
+
+unit devmgmt;
+
+{$CALLING cdecl}
+
+interface
+
+uses Windows, aygshell;
+
+// - cfgmgrapi.h
+
+// Possible error codes returned by Configmanager
+const
+ CONFIG_E_OBJECTBUSY = HRESULT($80042001);
+ CONFIG_E_CANCELTIMEOUT = HRESULT($80042002);
+ CONFIG_E_ENTRYNOTFOUND = HRESULT($80042004);
+ CONFIG_S_PROCESSINGCANCELED = HRESULT($00042005);
+ CONFIG_E_CSPEXCEPTION = HRESULT($80042007);
+ CONFIG_E_TRANSACTIONINGFAILURE = HRESULT($80042008);
+ CONFIG_E_BAD_XML = HRESULT($80042009);
+
+// Configmanager flags
+const
+ CFGFLAG_PROCESS = $0001;
+ CFGFLAG_METADATA = $0002;
+
+function DMProcessConfigXML(pszWXMLin:LPCWSTR; dwFlags:DWORD; ppszwXMLout:PLPWSTR):HRESULT; external UserDLLAyg name 'DMProcessConfigXML'; // index 7E5
+
+// - end of cfgmgrapi.h
+
+// - devmgmt.h
+
+function QueryPolicy(dwPolicyId:DWORD; pdwPolicyValue:PDWORD):HRESULT; external UserDLLAyg name 'QueryPolicy';
+
+// - end of devmgmt.h
+
+implementation
+
+end.
diff --git a/packages/winceunits/src/keybd.pp b/packages/winceunits/src/keybd.pp
new file mode 100644
index 0000000000..f37f3c0e8e
--- /dev/null
+++ b/packages/winceunits/src/keybd.pp
@@ -0,0 +1,315 @@
+{
+ 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: keybd.h
+//
+// Non Win32 defines and structs for WinCE keyboard.
+//
+
+//
+// Microsoft Windows Mobile 6.0 for PocketPC SDK.
+//
+
+unit keybd;
+
+interface
+
+uses windows, WinIOCtl;
+
+// EXTERNAL DRIVERS
+// KEY_STATE_FLAGS | Flags for keyboard events and shift state.
+{
+These flags perform a number of functions:
+
+The low order bits are used to keep track of a key state. This
+allows using 256 UINT8's for the key state array just like Windows does
+already.
+
+The upper bits keep track of shift state on a per key basis. Since
+we are not maintaining a complete key state array for each task, this
+gives us some extra info without a big memory penalty.
+
+The KeyStateDownFlag does double duty internal to the driver to
+identify key up or key down events.
+
+KeyShiftDeadFlag is set by the <f KeybdDriverVKeyToUnicode> function
+to signify that the character generated is a dead character.
+
+KeyShiftNoCharacterFlag is set by the <f KeybdDriverVKeyToUnicode>
+function to signify that there is no valid character to generate for the
+given virtual key event. This may be the case on a key up event or a key
+which only changes the shift state.
+
+The control, alt, shift and capital flags are set by the <f
+KeybdDriverVKeyToUnicode> function to encapsulate the shift state when the
+character was generated.
+
+KeybdDriverVKeyToUnicode
+KeybdEventCallback
+}
+
+type
+ KEY_STATE_FLAGS = UINT32;
+
+const
+ KeyStateToggledFlag = $0001; // Key is toggled.
+ KeyStateGetAsyncDownFlag = $0002; // Key went down since last GetAsyncKey call.
+ KeyStateReserved4 = $0004;
+ KeyStateReserved8 = $0008;
+ KeyStateReserved10 = $0010;
+ KeyStateReserved20 = $0020;
+ KeyStatePrevDownFlag = $0040; // Key was previously down.
+ KeyStateDownFlag = $0080; // Key is currently down.
+
+ KeyStateKeyEventFlag = $80000000; // Internal
+ KeyShiftAnyCtrlFlag = $40000000; // L or R control is down.
+ KeyShiftAnyShiftFlag = $20000000; // L or R shift is down.
+ KeyShiftAnyAltFlag = $10000000; // L or R alt is down.
+ KeyShiftCapitalFlag = $08000000; // VK_CAPITAL is toggled.
+ KeyShiftLeftCtrlFlag = $04000000; // L control is down.
+ KeyShiftLeftShiftFlag = $02000000; // L shift is down.
+ KeyShiftLeftAltFlag = $01000000; // L alt is down.
+ KeyShiftLeftWinFlag = $00800000; // L Win key is down.
+ KeyShiftRightCtrlFlag = $00400000; // R control is down.
+ KeyShiftRightShiftFlag = $00200000; // R shift is down.
+ KeyShiftRightAltFlag = $00100000; // R alt is down.
+ KeyShiftRightWinFlag = $00080000; // R Win key is down.
+ KeyShiftReserved40000 = $00040000; // Reserved.
+ KeyShiftDeadFlag = $00020000; // Corresponding char is dead char.
+ KeyShiftNoCharacterFlag = $00010000; // No corresponding char.
+
+ KeyShiftLanguageFlag1 = $00008000; // Use for language specific shifts.
+ KeyShiftKeybdEventFlag = $00004000; // Not for external use.
+
+ KeyShiftUseVKNullFlag = $00002000; // Not for external use.
+ KeyShiftNumLockFlag = $00001000; // NumLock toggled state.
+ KeyShiftScrollLockFlag = $00000800; // ScrollLock toggled state.
+ KeyShiftReserved400 = $00000400; // Reserved.
+ KeyShiftReserved200 = $00000200; // Reserved.
+ KeyShiftReserved100 = $00000100; // Reserved.
+
+// Japanese keyboard
+ KeyShiftKanaFlag = KeyShiftLanguageFlag1; // Kana lock is toggled.
+
+
+function KeyStateIsDown(Flags:KEY_STATE_FLAGS):BOOL;
+
+function KeyStateIsPrevDown(Flags:KEY_STATE_FLAGS):BOOL;
+
+function KeyStateIsToggled(Flags:KEY_STATE_FLAGS):BOOL;
+
+function KeyStateIsDownTransition(Flags:KEY_STATE_FLAGS):BOOL;
+
+const
+ COUNT_VKEYS = 256;
+
+{
+ EXTERNAL DRIVERS
+ KEY_STATE | Array of virtual key states.
+}
+type
+ KEY_STATE = array[0..COUNT_VKEYS-1] of UINT8;
+
+//
+// KeyboardDriverGetDeviceInfo query capability definitions
+//
+
+
+// EXTERNAL DRIVERS
+// ULONG | KBDI_VKEY_TO_UNICODE_INFO_ID |
+// Id for KeybdDriverGetInfo to get Unicode conversion info.
+//
+// xref
+// KeybdDriverGetInfo
+// KBDI_VKEY_TO_UNICODE_INFO
+// KeybdDriverVKeyToUnicode
+const
+ KBDI_VKEY_TO_UNICODE_INFO_ID = 0;
+
+
+// EXTERNAL DRIVERS KEYBD_DRIVER
+// KBDI_VKEY_TO_UNICODE_INFO
+// Info required to set up for Unicode conversion.
+//
+// xref
+// KeybdDriverGetInfo
+// KBDI_VKEY_TO_UNICODE_INFO_ID
+// KeybdDriverVKeyToUnicode
+// TO_UNICODE_STATE
+{
+cbToUnicodeState is the number of bytes necessary to store the
+driver specific state which is required to generate characters from a
+virtual key. For example, a French keyboard driver may need to remember
+that an accent key was previously pressed in order to decide on a specific
+Unicode character to generate for a virtual key. This value may be 0 if
+no other state besides <t KEY_STATE> is required to generate characters,
+e.g., English keyboard drivers.
+
+cMaxToUnicodeCharacters is the maximum number of characters that may
+be generated by a call to KeybdDriverVKeyToUnicode. For example, if a
+user presses the '^' key and then the 'b' key, a French keyboard driver
+would generate the two characters, '^' 'b', when the second key is
+pressed. Note that this is not the count of bytes required to store the
+characters, it is just the number of characters.
+}
+type
+ KBDI_VKEY_TO_UNICODE_INFO = record
+ cbToUnicodeState:UINT32; // @FIELD Count of bytes required
+ // for state info for Unicode
+ // character generation.
+ cMaxToUnicodeCharacters:UINT32; // @FIELD Maximum number of characters
+ // generated for a single virtual key.
+ end;
+
+// EXTERNAL DRIVERS
+// ULONG | KBDI_AUTOREPEAT_INFO_ID
+// Id for KeybdDriverGetInfo to get keyboard auto-repeat info.
+//
+// xref
+// KeybdDriverGetInfo
+// KBDI_AUTOREPEAT_INFO
+// KBDI_AUTOREPEAT_SELECTIONS_INFO_ID
+const
+ KBDI_AUTOREPEAT_INFO_ID = 1;
+
+
+// Info about the keyboard autorepeat capabilities and settings.
+{
+cInitialDelaysSelectable gives the number of initial delays which
+may be set. Query again using <c KBDI_AUTOREPEAT_SELECTIONS_INFO_ID> to
+get the actual values available.
+
+cRepeatRatesSelectable is similar to cInitialDelaysSelectable except
+that it gives the number of repeat rates available.
+}
+type
+ KBDI_AUTOREPEAT_INFO = record
+ CurrentInitialDelay:INT32; // @FIELD Current initial delay in milliseconds.
+ CurrentRepeatRate:INT32; // @FIELD Current repeat rate in keys per second.
+ cInitialDelaysSelectable:INT32; // @FIELD Number of initial delays selectable.
+ cRepeatRatesSelectable:INT32; // @FIELD Number of repeat rates supported.
+ end;
+
+const
+ KBD_AUTO_REPEAT_INITIAL_DELAY_DEFAULT = 500;
+ KBD_AUTO_REPEAT_INITIAL_DELAY_MIN = 250;
+ KBD_AUTO_REPEAT_INITIAL_DELAY_MAX = 1000;
+
+ KBD_AUTO_REPEAT_KEYS_PER_SEC_DEFAULT = 20;
+ KBD_AUTO_REPEAT_KEYS_PER_SEC_MIN = 2;
+ KBD_AUTO_REPEAT_KEYS_PER_SEC_MAX = 30;
+
+
+// Id for KeybdDriverGetInfo to get keyboard auto-repeat selections info.
+{
+When KeybdDriverGetInfo is called with this value, the lpOutput
+parameter should be a pointer to an array of INT32's to hold the selection
+info. The initial delays will be put at the beginning of the array
+followed by the repeat rate selections. The number of initial delay
+values is determined by calling <f KeybdDriverGetInfo> using <c
+KBDI_AUTOREPEAT_INFO_ID> and looking at the returned
+cInitialDelaysSelectable field. If this value is -1, there will be two
+(2) values, the min and max and the initial delay may be set to any value
+in this range. This value may be 0 if the initial delay is not settable.
+Similarly, if cRepeatRatesSelectable is 0, there will be no repeat rate
+information. If it is -1, there will be two (2) values, the min and max.
+
+Initial delay values are in milliseconds. Repeat rates are in keys per
+second.
+}
+const
+ KBDI_AUTOREPEAT_SELECTIONS_INFO_ID = 2;
+
+// INTERNATIONAL
+const
+ KBDI_KEYBOARD_STATUS_ID = 3;
+
+const
+ KBDI_KEYBOARD_PRESENT = $0001;
+ KBDI_KEYBOARD_ENABLED = $0002;
+ KBDI_KEYBOARD_ENTER_ESC = $0004;
+ KBDI_KEYBOARD_ALPHA_NUM = $0008;
+
+
+// Reserve for SHIME_MODE.
+// Pass in the SHIME_MODE as the input parameter.
+const
+ KBDI_SHIME_MODE_ID = 4;
+
+ KBDI_SHIME_MODE_NONE = $0000;
+ KBDI_SHIME_MODE_SPELL = $0001;
+ KBDI_SHIME_MODE_SPELL_CAPS = $0002;
+ KBDI_SHIME_MODE_SPELL_CAPS_LOCK = $0003;
+ KBDI_SHIME_MODE_AMBIGUOUS = $0004;
+ KBDI_SHIME_MODE_AMBIGUOUS_CAPS = $0005;
+ KBDI_SHIME_MODE_AMBIGUOUS_CAPS_LOCK = $0006;
+ KBDI_SHIME_MODE_NUMBERS = $0007;
+ KBDI_SHIME_MODE_CUSTOM = $0008;
+
+
+// External keyboard interface
+const
+ DEVCLASS_KEYBOARD_STRING = '{CBE6DDF2-F5D4-4E16-9F61-4CCC0B6695F3}';
+ DEVCLASS_KEYBOARD_GUID:System.TGUID = (D1: $CBE6DDF2; D2: $F5D4; D3: $4E16; D4: ($9F, $61, $4C, $CC, $0B, $66, $95, $F3));
+// DEVCLASS_KEYBOARD_GUID:System.TGUID = '{CBE6DDF2-F5D4-4E16-9F61-4CCC0B6695F3}';
+
+
+// Pass in the KEY_STATE_FLAGS as the input parameter.
+const
+ IOCTL_KBD_SET_MODIFIERS = (FILE_DEVICE_KEYBOARD shl 16) or
+ (1 shl 2) or
+ METHOD_BUFFERED or
+ (FILE_ANY_ACCESS shl 14);
+
+
+ IOCTL_HID_SET_MODIFIERS = IOCTL_KBD_SET_MODIFIERS;
+
+// Pass in the KBDI_AUTOREPEAT_INFO as the input parameter.
+const
+ IOCTL_KBD_SET_AUTOREPEAT = (FILE_DEVICE_KEYBOARD shl 16) or
+ (2 shl 2) or
+ METHOD_BUFFERED or
+ (FILE_ANY_ACCESS shl 14);
+
+ IOCTL_HID_SET_AUTOREPEAT = IOCTL_KBD_SET_AUTOREPEAT;
+
+// Pass in the Input Language's fLocaleFlags as the input parameter.
+const
+ IOCTL_KBD_SET_LOCALE_FLAGS = (FILE_DEVICE_KEYBOARD shl 16) or
+ (3 shl 2) or
+ METHOD_BUFFERED or
+ (FILE_ANY_ACCESS shl 14);
+
+implementation
+
+function KeyStateIsDown(Flags:KEY_STATE_FLAGS):BOOL; inline;
+begin
+ KeyStateIsDown:=(Flags and KeyStateDownFlag)<>0;
+end;
+
+function KeyStateIsPrevDown(Flags:KEY_STATE_FLAGS):BOOL; inline;
+begin
+ KeyStateIsPrevDown:=(Flags and KeyStatePrevDownFlag)<>0;
+end;
+
+function KeyStateIsToggled(Flags:KEY_STATE_FLAGS):BOOL; inline;
+begin
+ KeyStateIsToggled:=(Flags and KeyStateToggledFlag)<>0;
+end;
+
+function KeyStateIsDownTransition(Flags:KEY_STATE_FLAGS):BOOL; inline;
+begin
+ KeyStateIsDownTransition:=KeyStateIsDown(Flags) and (not KeyStateIsPrevDown(Flags));
+end;
+
+end. \ No newline at end of file
diff --git a/packages/winceunits/src/mmreg.pp b/packages/winceunits/src/mmreg.pp
new file mode 100644
index 0000000000..966bb6ae79
--- /dev/null
+++ b/packages/winceunits/src/mmreg.pp
@@ -0,0 +1,3135 @@
+{
+ 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 Name:
+//
+// mmreg.h
+//
+// Abstract:
+//
+// Multimedia Registration
+//
+
+//
+// Microsoft Windows Mobile 6.0 for PocketPC SDK.
+//
+
+unit mmreg;
+
+interface
+
+uses Windows;
+
+{
+ Automatically converted by H2Pas 1.0.0 from mmreg.h
+ The following command line parameters were used:
+ -d
+ -w
+ -D
+ -l
+ mmreg.h
+}
+
+{ Define the following to skip definitions }
+{ }
+{ NOMMIDS Multimedia IDs are not defined }
+{ NONEWWAVE No new waveform types are defined except WAVEFORMATEX }
+{ NONEWRIFF No new RIFF forms are defined }
+{ NOJPEGDIB No JPEG DIB definitions }
+{ NONEWIC No new Image Compressor types are defined }
+{ NOBITMAP No extended bitmap info header definition }
+
+{$PACKRECORDS 1} // {#include "pshpack1.h" /* Assume byte packing throughout */ }
+
+
+type
+ FOURCC = DWORD; //* a four character code */
+
+{$IFNDEF NOMMIDS}
+// manufacturer IDs
+const
+ MM_MICROSOFT = 1; // Microsoft Corporation
+
+ MM_CREATIVE = 2; // Creative Labs, Inc
+ { Media Vision, Inc. }
+ MM_MEDIAVISION = 3;
+ { Fujitsu Corp. }
+ MM_FUJITSU = 4;
+ { Artisoft, Inc. }
+ MM_ARTISOFT = 20;
+ { Turtle Beach, Inc. }
+ MM_TURTLE_BEACH = 21;
+ { IBM Corporation }
+ MM_IBM = 22;
+ { Vocaltec LTD. }
+ MM_VOCALTEC = 23;
+ { Roland }
+ MM_ROLAND = 24;
+ { DSP Solutions, Inc. }
+ MM_DSP_SOLUTIONS = 25;
+ { NEC }
+ MM_NEC = 26;
+ { ATI }
+ MM_ATI = 27;
+ { Wang Laboratories, Inc }
+ MM_WANGLABS = 28;
+ { Tandy Corporation }
+ MM_TANDY = 29;
+ { Voyetra }
+ MM_VOYETRA = 30;
+ { Antex Electronics Corporation }
+ MM_ANTEX = 31;
+ { ICL Personal Systems }
+ MM_ICL_PS = 32;
+ { Intel Corporation }
+ MM_INTEL = 33;
+ { Advanced Gravis }
+ MM_GRAVIS = 34;
+ { Video Associates Labs, Inc. }
+ MM_VAL = 35;
+ { InterActive Inc }
+ MM_INTERACTIVE = 36;
+ { Yamaha Corporation of America }
+ MM_YAMAHA = 37;
+ { Everex Systems, Inc }
+ MM_EVEREX = 38;
+ { Echo Speech Corporation }
+ MM_ECHO = 39;
+ { Sierra Semiconductor Corp }
+ MM_SIERRA = 40;
+ { Computer Aided Technologies }
+ MM_CAT = 41;
+ { APPS Software International }
+ MM_APPS = 42;
+ { DSP Group, Inc }
+ MM_DSP_GROUP = 43;
+ { microEngineering Labs }
+ MM_MELABS = 44;
+ { Computer Friends, Inc. }
+ MM_COMPUTER_FRIENDS = 45;
+ { ESS Technology }
+ MM_ESS = 46;
+ { Audio, Inc. }
+ MM_AUDIOFILE = 47;
+ { Motorola, Inc. }
+ MM_MOTOROLA = 48;
+ { Canopus, co., Ltd. }
+ MM_CANOPUS = 49;
+ { Seiko Epson Corporation }
+ MM_EPSON = 50;
+ { Truevision }
+ MM_TRUEVISION = 51;
+ { Aztech Labs, Inc. }
+ MM_AZTECH = 52;
+ { Videologic }
+ MM_VIDEOLOGIC = 53;
+ { SCALACS }
+ MM_SCALACS = 54;
+ { Korg Inc. }
+ MM_KORG = 55;
+ { Audio Processing Technology }
+ MM_APT = 56;
+ { Integrated Circuit Systems, Inc. }
+ MM_ICS = 57;
+ { Iterated Systems, Inc. }
+ MM_ITERATEDSYS = 58;
+ { Metheus }
+ MM_METHEUS = 59;
+ { Logitech, Inc. }
+ MM_LOGITECH = 60;
+ { Winnov, Inc. }
+ MM_WINNOV = 61;
+ { NCR Corporation }
+ MM_NCR = 62;
+ { EXAN }
+ MM_EXAN = 63;
+ { AST Research Inc. }
+ MM_AST = 64;
+ { Willow Pond Corporation }
+ MM_WILLOWPOND = 65;
+ { Sonic Foundry }
+ MM_SONICFOUNDRY = 66;
+ { Vitec Multimedia }
+ MM_VITEC = 67;
+ { MOSCOM Corporation }
+ MM_MOSCOM = 68;
+ { Silicon Soft, Inc. }
+ MM_SILICONSOFT = 69;
+ { Supermac }
+ MM_SUPERMAC = 73;
+ { Audio Processing Technology }
+ MM_AUDIOPT = 74;
+ { Speech Compression }
+ MM_SPEECHCOMP = 76;
+ { Ahead, Inc. }
+ MM_AHEAD = 77;
+ { Dolby Laboratories }
+ MM_DOLBY = 78;
+ { OKI }
+ MM_OKI = 79;
+ { AuraVision Corporation }
+ MM_AURAVISION = 80;
+ { Ing C. Olivetti & C., S.p.A. }
+ MM_OLIVETTI = 81;
+ { I/O Magic Corporation }
+ MM_IOMAGIC = 82;
+ { Matsushita Electric Industrial Co., LTD. }
+ MM_MATSUSHITA = 83;
+ { Control Resources Limited }
+ MM_CONTROLRES = 84;
+ { Xebec Multimedia Solutions Limited }
+ MM_XEBEC = 85;
+ { New Media Corporation }
+ MM_NEWMEDIA = 86;
+ { Natural MicroSystems }
+ MM_NMS = 87;
+ { Lyrrus Inc. }
+ MM_LYRRUS = 88;
+ { Compusic }
+ MM_COMPUSIC = 89;
+ { OPTi Computers Inc. }
+ MM_OPTI = 90;
+ { Adlib Accessories Inc. }
+ MM_ADLACC = 91;
+ { Compaq Computer Corp. }
+ MM_COMPAQ = 92;
+ { Dialogic Corporation }
+ MM_DIALOGIC = 93;
+ { InSoft, Inc. }
+ MM_INSOFT = 94;
+ { M.P. Technologies, Inc. }
+ MM_MPTUS = 95;
+ { Weitek }
+ MM_WEITEK = 96;
+ { Lernout & Hauspie }
+ MM_LERNOUT_AND_HAUSPIE = 97;
+ { Quanta Computer Inc. }
+ MM_QCIAR = 98;
+ { Apple Computer, Inc. }
+ MM_APPLE = 99;
+ { Digital Equipment Corporation }
+ MM_DIGITAL = 100;
+ { Mark of the Unicorn }
+ MM_MOTU = 101;
+ { Workbit Corporation }
+ MM_WORKBIT = 102;
+ { Ositech Communications Inc. }
+ MM_OSITECH = 103;
+ { miro Computer Products AG }
+ MM_MIRO = 104;
+ { Cirrus Logic }
+ MM_CIRRUSLOGIC = 105;
+ { ISOLUTION B.V. }
+ MM_ISOLUTION = 106;
+ { Horizons Technology, Inc }
+ MM_HORIZONS = 107;
+ { Computer Concepts Ltd }
+ MM_CONCEPTS = 108;
+ { Voice Technologies Group, Inc. }
+ MM_VTG = 109;
+ { Radius }
+ MM_RADIUS = 110;
+ { Rockwell International }
+ MM_ROCKWELL = 111;
+ { Co. XYZ for testing }
+ MM_XYz = 112;
+ { Opcode Systems }
+ MM_OPCODE = 113;
+ { Voxware Inc }
+ MM_VOXWARE = 114;
+ { Northern Telecom Limited }
+ MM_NORTHERN_TELECOM = 115;
+ { APICOM }
+ MM_APICOM = 116;
+ { Grande Software }
+ MM_GRANDE = 117;
+ { ADDX }
+ MM_ADDX = 118;
+ { Wildcat Canyon Software }
+ MM_WILDCAT = 119;
+ { Rhetorex Inc }
+ MM_RHETOREX = 120;
+ { Brooktree Corporation }
+ MM_BROOKTREE = 121;
+ { ENSONIQ Corporation }
+ MM_ENSONIQ = 125;
+ { ///FAST Multimedia AG }
+ MM_FAST = 126;
+ { NVidia Corporation }
+ MM_NVIDIA = 127;
+ { OKSORI Co., Ltd. }
+ MM_OKSORI = 128;
+ { DiAcoustics, Inc. }
+ MM_DIACOUSTICS = 129;
+ { Gulbransen, Inc. }
+ MM_GULBRANSEN = 130;
+ { Kay Elemetrics, Inc. }
+ MM_KAY_ELEMETRICS = 131;
+ { Crystal Semiconductor Corporation }
+ MM_CRYSTAL = 132;
+ { Splash Studios }
+ MM_SPLASH_STUDIOS = 133;
+ { Quarterdeck Corporation }
+ MM_QUARTERDECK = 134;
+ { TDK Corporation }
+ MM_TDK = 135;
+ { Digital Audio Labs, Inc. }
+ MM_DIGITAL_AUDIO_LABS = 136;
+ { Seer Systems, Inc. }
+ MM_SEERSYS = 137;
+ { PictureTel Corporation }
+ MM_PICTURETEL = 138;
+ { AT&T Microelectronics }
+ MM_ATT_MICROELECTRONICS = 139;
+ { Osprey Technologies, Inc. }
+ MM_OSPREY = 140;
+ { Mediatrix Peripherals }
+ MM_MEDIATRIX = 141;
+ { SounDesignS M.C.S. Ltd. }
+ MM_SOUNDESIGNS = 142;
+ { A.L. Digital Ltd. }
+ MM_ALDIGITAL = 143;
+ { Spectrum Signal Processing, Inc. }
+ MM_SPECTRUM_SIGNAL_PROCESSING = 144;
+ { Electronic Courseware Systems, Inc. }
+ MM_ECS = 145;
+ { AMD }
+ MM_AMD = 146;
+ { Core Dynamics }
+ MM_COREDYNAMICS = 147;
+ { CANAM Computers }
+ MM_CANAM = 148;
+ { Softsound, Ltd. }
+ MM_SOFTSOUND = 149;
+ { Norris Communications, Inc. }
+ MM_NORRIS = 150;
+ { Danka Data Devices }
+ MM_DDD = 151;
+ { EuPhonics }
+ MM_EUPHONICS = 152;
+ { Precept Software, Inc. }
+ MM_PRECEPT = 153;
+ { Crystal Net Corporation }
+ MM_CRYSTAL_NET = 154;
+ { Chromatic Research, Inc }
+ MM_CHROMATIC = 155;
+ { Voice Information Systems, Inc }
+ MM_VOICEINFO = 156;
+ { Vienna Systems }
+ MM_VIENNASYS = 157;
+ { Connectix Corporation }
+ MM_CONNECTIX = 158;
+ { Gadget Labs LLC }
+ MM_GADGETLABS = 159;
+ { Frontier Design Group LLC }
+ MM_FRONTIER = 160;
+ { Viona Development GmbH }
+ MM_VIONA = 161;
+ { Casio Computer Co., LTD }
+ MM_CASIO = 162;
+ { Diamond Multimedia }
+ MM_DIAMONDMM = 163;
+ { S3 }
+ MM_S3 = 164;
+ { Fraunhofer }
+ MM_FRAUNHOFER_IIS = 172;
+
+
+{ MM_MICROSOFT product IDs }
+{$IFNDEF MM_MIDI_MAPPER}
+ const
+ MM_MIDI_MAPPER = 1; // Midi Mapper
+ { Wave Mapper }
+ MM_WAVE_MAPPER = 2;
+ { Sound Blaster MIDI output port }
+ MM_SNDBLST_MIDIOUT = 3;
+ { Sound Blaster MIDI input port }
+ MM_SNDBLST_MIDIIN = 4;
+ { Sound Blaster internal synth }
+ MM_SNDBLST_SYNTH = 5;
+ { Sound Blaster waveform output }
+ MM_SNDBLST_WAVEOUT = 6;
+ { Sound Blaster waveform input }
+ MM_SNDBLST_WAVEIN = 7;
+ { Ad Lib Compatible synth }
+ MM_ADLIB = 9;
+ { MPU 401 compatible MIDI output port }
+ MM_MPU401_MIDIOUT = 10;
+ { MPU 401 compatible MIDI input port }
+ MM_MPU401_MIDIIN = 11;
+ { Joystick adapter }
+ MM_PC_JOYSTICK = 12;
+{$ENDIF MM_MIDI_MAPPER}
+
+ const
+ MM_PCSPEAKER_WAVEOUT = 13; { PC speaker waveform output }
+ { MS Audio Board waveform input }
+ MM_MSFT_WSS_WAVEIN = 14;
+ { MS Audio Board waveform output }
+ MM_MSFT_WSS_WAVEOUT = 15;
+ { MS Audio Board Stereo FM synth }
+ MM_MSFT_WSS_FMSYNTH_STEREO = 16;
+ { MS Audio Board Mixer Driver }
+ MM_MSFT_WSS_MIXER = 17;
+ { MS OEM Audio Board waveform input }
+ MM_MSFT_WSS_OEM_WAVEIN = 18;
+ { MS OEM Audio Board waveform output }
+ MM_MSFT_WSS_OEM_WAVEOUT = 19;
+ { MS OEM Audio Board Stereo FM Synth }
+ MM_MSFT_WSS_OEM_FMSYNTH_STEREO = 20;
+ { MS Audio Board Aux. Port }
+ MM_MSFT_WSS_AUX = 21;
+ { MS OEM Audio Aux Port }
+ MM_MSFT_WSS_OEM_AUX = 22;
+ { MS Vanilla driver waveform input }
+ MM_MSFT_GENERIC_WAVEIN = 23;
+ { MS Vanilla driver wavefrom output }
+ MM_MSFT_GENERIC_WAVEOUT = 24;
+ { MS Vanilla driver MIDI in }
+ MM_MSFT_GENERIC_MIDIIN = 25;
+ { MS Vanilla driver MIDI external out }
+ MM_MSFT_GENERIC_MIDIOUT = 26;
+ { MS Vanilla driver MIDI synthesizer }
+ MM_MSFT_GENERIC_MIDISYNTH = 27;
+ { MS Vanilla driver aux (line in) }
+ MM_MSFT_GENERIC_AUX_LINE = 28;
+ { MS Vanilla driver aux (mic) }
+ MM_MSFT_GENERIC_AUX_MIC = 29;
+ { MS Vanilla driver aux (CD) }
+ MM_MSFT_GENERIC_AUX_CD = 30;
+ { MS OEM Audio Board Mixer Driver }
+ MM_MSFT_WSS_OEM_MIXER = 31;
+ { MS Audio Compression Manager }
+ MM_MSFT_MSACM = 32;
+ { MS ADPCM Codec }
+ MM_MSFT_ACM_MSADPCM = 33;
+ { IMA ADPCM Codec }
+ MM_MSFT_ACM_IMAADPCM = 34;
+ { MS Filter }
+ MM_MSFT_ACM_MSFILTER = 35;
+ { GSM 610 codec }
+ MM_MSFT_ACM_GSM610 = 36;
+ { G.711 codec }
+ MM_MSFT_ACM_G711 = 37;
+ { PCM converter }
+ MM_MSFT_ACM_PCM = 38;
+
+
+ { Microsoft Windows Sound System drivers }
+ { Sound Blaster 16 waveform input }
+ MM_WSS_SB16_WAVEIN = 39;
+ { Sound Blaster 16 waveform output }
+ MM_WSS_SB16_WAVEOUT = 40;
+ { Sound Blaster 16 midi-in }
+ MM_WSS_SB16_MIDIIN = 41;
+ { Sound Blaster 16 midi out }
+ MM_WSS_SB16_MIDIOUT = 42;
+ { Sound Blaster 16 FM Synthesis }
+ MM_WSS_SB16_SYNTH = 43;
+ { Sound Blaster 16 aux (line in) }
+ MM_WSS_SB16_AUX_LINE = 44;
+ { Sound Blaster 16 aux (CD) }
+ MM_WSS_SB16_AUX_CD = 45;
+ { Sound Blaster 16 mixer device }
+ MM_WSS_SB16_MIXER = 46;
+ { Sound Blaster Pro waveform input }
+ MM_WSS_SBPRO_WAVEIN = 47;
+ { Sound Blaster Pro waveform output }
+ MM_WSS_SBPRO_WAVEOUT = 48;
+ { Sound Blaster Pro midi in }
+ MM_WSS_SBPRO_MIDIIN = 49;
+ { Sound Blaster Pro midi out }
+ MM_WSS_SBPRO_MIDIOUT = 50;
+ { Sound Blaster Pro FM synthesis }
+ MM_WSS_SBPRO_SYNTH = 51;
+ { Sound Blaster Pro aux (line in ) }
+ MM_WSS_SBPRO_AUX_LINE = 52;
+ { Sound Blaster Pro aux (CD) }
+ MM_WSS_SBPRO_AUX_CD = 53;
+ { Sound Blaster Pro mixer }
+ MM_WSS_SBPRO_MIXER = 54;
+ { WSS NT wave in }
+ MM_MSFT_WSS_NT_WAVEIN = 55;
+ { WSS NT wave out }
+ MM_MSFT_WSS_NT_WAVEOUT = 56;
+ { WSS NT FM synth }
+ MM_MSFT_WSS_NT_FMSYNTH_STEREO = 57;
+ { WSS NT mixer }
+ MM_MSFT_WSS_NT_MIXER = 58;
+ { WSS NT aux }
+ MM_MSFT_WSS_NT_AUX = 59;
+ { Sound Blaster 16 waveform input }
+ MM_MSFT_SB16_WAVEIN = 60;
+ { Sound Blaster 16 waveform output }
+ MM_MSFT_SB16_WAVEOUT = 61;
+ { Sound Blaster 16 midi-in }
+ MM_MSFT_SB16_MIDIIN = 62;
+ { Sound Blaster 16 midi out }
+ MM_MSFT_SB16_MIDIOUT = 63;
+ { Sound Blaster 16 FM Synthesis }
+ MM_MSFT_SB16_SYNTH = 64;
+ { Sound Blaster 16 aux (line in) }
+ MM_MSFT_SB16_AUX_LINE = 65;
+ { Sound Blaster 16 aux (CD) }
+ MM_MSFT_SB16_AUX_CD = 66;
+ { Sound Blaster 16 mixer device }
+ MM_MSFT_SB16_MIXER = 67;
+ { Sound Blaster Pro waveform input }
+ MM_MSFT_SBPRO_WAVEIN = 68;
+ { Sound Blaster Pro waveform output }
+ MM_MSFT_SBPRO_WAVEOUT = 69;
+ { Sound Blaster Pro midi in }
+ MM_MSFT_SBPRO_MIDIIN = 70;
+ { Sound Blaster Pro midi out }
+ MM_MSFT_SBPRO_MIDIOUT = 71;
+ { Sound Blaster Pro FM synthesis }
+ MM_MSFT_SBPRO_SYNTH = 72;
+ { Sound Blaster Pro aux (line in ) }
+ MM_MSFT_SBPRO_AUX_LINE = 73;
+ { Sound Blaster Pro aux (CD) }
+ MM_MSFT_SBPRO_AUX_CD = 74;
+ { Sound Blaster Pro mixer }
+ MM_MSFT_SBPRO_MIXER = 75;
+ { Yamaha OPL2/OPL3 compatible FM synthesis }
+ MM_MSFT_MSOPL_SYNTH = 76;
+ { Voice Modem Serial Line Wave Input }
+ MM_MSFT_VMDMS_LINE_WAVEIN = 80;
+ { Voice Modem Serial Line Wave Output }
+ MM_MSFT_VMDMS_LINE_WAVEOUT = 81;
+ { Voice Modem Serial Handset Wave Input }
+ MM_MSFT_VMDMS_HANDSET_WAVEIN = 82;
+ { Voice Modem Serial Handset Wave Output }
+ MM_MSFT_VMDMS_HANDSET_WAVEOUT = 83;
+ { Voice Modem Wrapper Line Wave Input }
+ MM_MSFT_VMDMW_LINE_WAVEIN = 84;
+ { Voice Modem Wrapper Line Wave Output }
+ MM_MSFT_VMDMW_LINE_WAVEOUT = 85;
+ { Voice Modem Wrapper Handset Wave Input }
+ MM_MSFT_VMDMW_HANDSET_WAVEIN = 86;
+ { Voice Modem Wrapper Handset Wave Output }
+ MM_MSFT_VMDMW_HANDSET_WAVEOUT = 87;
+ { Voice Modem Wrapper Mixer }
+ MM_MSFT_VMDMW_MIXER = 88;
+ { Voice Modem Game Compatible Wave Device }
+ MM_MSFT_VMDM_GAME_WAVEOUT = 89;
+ { Voice Modem Game Compatible Wave Device }
+ MM_MSFT_VMDM_GAME_WAVEIN = 90;
+ { }
+ MM_MSFT_ACM_MSNAUDIO = 91;
+ { }
+ MM_MSFT_ACM_MSG723 = 92;
+ { Generic id for WDM Audio drivers }
+ MM_MSFT_WDMAUDIO_WAVEOUT = 100;
+ { Generic id for WDM Audio drivers }
+ MM_MSFT_WDMAUDIO_WAVEIN = 101;
+ { Generic id for WDM Audio drivers }
+ MM_MSFT_WDMAUDIO_MIDIOUT = 102;
+ { Generic id for WDM Audio drivers }
+ MM_MSFT_WDMAUDIO_MIDIIN = 103;
+ { Generic id for WDM Audio drivers }
+ MM_MSFT_WDMAUDIO_MIXER = 104;
+
+ { MM_CREATIVE product IDs }
+ MM_CREATIVE_SB15_WAVEIN = 1; { SB (r) 1.5 waveform input }
+ MM_CREATIVE_SB20_WAVEIN = 2;
+ MM_CREATIVE_SBPRO_WAVEIN = 3;
+ MM_CREATIVE_SBP16_WAVEIN = 4;
+ MM_CREATIVE_PHNBLST_WAVEIN = 5;
+ MM_CREATIVE_SB15_WAVEOUT = 101;
+ MM_CREATIVE_SB20_WAVEOUT = 102;
+ MM_CREATIVE_SBPRO_WAVEOUT = 103;
+ MM_CREATIVE_SBP16_WAVEOUT = 104;
+ MM_CREATIVE_PHNBLST_WAVEOUT = 105;
+ { SB (r) }
+ MM_CREATIVE_MIDIOUT = 201;
+ { SB (r) }
+ MM_CREATIVE_MIDIIN = 202;
+ { SB (r) }
+ MM_CREATIVE_FMSYNTH_MONO = 301;
+ { SB Pro (r) stereo synthesizer }
+ MM_CREATIVE_FMSYNTH_STEREO = 302;
+ MM_CREATIVE_MIDI_AWE32 = 303;
+ { SB Pro (r) aux (CD) }
+ MM_CREATIVE_AUX_CD = 401;
+ { SB Pro (r) aux (Line in ) }
+ MM_CREATIVE_AUX_LINE = 402;
+ { SB Pro (r) aux (mic) }
+ MM_CREATIVE_AUX_MIC = 403;
+ MM_CREATIVE_AUX_MASTER = 404;
+ MM_CREATIVE_AUX_PCSPK = 405;
+ MM_CREATIVE_AUX_WAVE = 406;
+ MM_CREATIVE_AUX_MIDI = 407;
+ MM_CREATIVE_SBPRO_MIXER = 408;
+ MM_CREATIVE_SB16_MIXER = 409;
+
+ { MM_MEDIAVISION product IDs }
+ { Pro Audio Spectrum }
+ MM_MEDIAVISION_PROAUDIO = $10;
+ MM_PROAUD_MIDIOUT = MM_MEDIAVISION_PROAUDIO+1;
+ MM_PROAUD_MIDIIN = MM_MEDIAVISION_PROAUDIO+2;
+ MM_PROAUD_SYNTH = MM_MEDIAVISION_PROAUDIO+3;
+ MM_PROAUD_WAVEOUT = MM_MEDIAVISION_PROAUDIO+4;
+ MM_PROAUD_WAVEIN = MM_MEDIAVISION_PROAUDIO+5;
+ MM_PROAUD_MIXER = MM_MEDIAVISION_PROAUDIO+6;
+ MM_PROAUD_AUX = MM_MEDIAVISION_PROAUDIO+7;
+
+ { Thunder Board }
+ MM_MEDIAVISION_THUNDER = $20;
+ MM_THUNDER_SYNTH = MM_MEDIAVISION_THUNDER+3;
+ MM_THUNDER_WAVEOUT = MM_MEDIAVISION_THUNDER+4;
+ MM_THUNDER_WAVEIN = MM_MEDIAVISION_THUNDER+5;
+ MM_THUNDER_AUX = MM_MEDIAVISION_THUNDER+7;
+
+ { Audio Port }
+ MM_MEDIAVISION_TPORT = $40;
+ MM_TPORT_WAVEOUT = MM_MEDIAVISION_TPORT+1;
+ MM_TPORT_WAVEIN = MM_MEDIAVISION_TPORT+2;
+ MM_TPORT_SYNTH = MM_MEDIAVISION_TPORT+3;
+
+ { Pro Audio Spectrum Plus }
+ MM_MEDIAVISION_PROAUDIO_PLUS = $50;
+ MM_PROAUD_PLUS_MIDIOUT = MM_MEDIAVISION_PROAUDIO_PLUS+1;
+ MM_PROAUD_PLUS_MIDIIN = MM_MEDIAVISION_PROAUDIO_PLUS+2;
+ MM_PROAUD_PLUS_SYNTH = MM_MEDIAVISION_PROAUDIO_PLUS+3;
+ MM_PROAUD_PLUS_WAVEOUT = MM_MEDIAVISION_PROAUDIO_PLUS+4;
+ MM_PROAUD_PLUS_WAVEIN = MM_MEDIAVISION_PROAUDIO_PLUS+5;
+ MM_PROAUD_PLUS_MIXER = MM_MEDIAVISION_PROAUDIO_PLUS+6;
+ MM_PROAUD_PLUS_AUX = MM_MEDIAVISION_PROAUDIO_PLUS+7;
+
+ { Pro Audio Spectrum 16 }
+ MM_MEDIAVISION_PROAUDIO_16 = $60;
+ MM_PROAUD_16_MIDIOUT = MM_MEDIAVISION_PROAUDIO_16+1;
+ MM_PROAUD_16_MIDIIN = MM_MEDIAVISION_PROAUDIO_16+2;
+ MM_PROAUD_16_SYNTH = MM_MEDIAVISION_PROAUDIO_16+3;
+ MM_PROAUD_16_WAVEOUT = MM_MEDIAVISION_PROAUDIO_16+4;
+ MM_PROAUD_16_WAVEIN = MM_MEDIAVISION_PROAUDIO_16+5;
+ MM_PROAUD_16_MIXER = MM_MEDIAVISION_PROAUDIO_16+6;
+ MM_PROAUD_16_AUX = MM_MEDIAVISION_PROAUDIO_16+7;
+
+ { Pro Audio Studio 16 }
+ MM_MEDIAVISION_PROSTUDIO_16 = $60;
+ MM_STUDIO_16_MIDIOUT = MM_MEDIAVISION_PROSTUDIO_16+1;
+ MM_STUDIO_16_MIDIIN = MM_MEDIAVISION_PROSTUDIO_16+2;
+ MM_STUDIO_16_SYNTH = MM_MEDIAVISION_PROSTUDIO_16+3;
+ MM_STUDIO_16_WAVEOUT = MM_MEDIAVISION_PROSTUDIO_16+4;
+ MM_STUDIO_16_WAVEIN = MM_MEDIAVISION_PROSTUDIO_16+5;
+ MM_STUDIO_16_MIXER = MM_MEDIAVISION_PROSTUDIO_16+6;
+ MM_STUDIO_16_AUX = MM_MEDIAVISION_PROSTUDIO_16+7;
+
+ { CDPC }
+ MM_MEDIAVISION_CDPC = $70;
+ MM_CDPC_MIDIOUT = MM_MEDIAVISION_CDPC+1;
+ MM_CDPC_MIDIIN = MM_MEDIAVISION_CDPC+2;
+ MM_CDPC_SYNTH = MM_MEDIAVISION_CDPC+3;
+ MM_CDPC_WAVEOUT = MM_MEDIAVISION_CDPC+4;
+ MM_CDPC_WAVEIN = MM_MEDIAVISION_CDPC+5;
+ MM_CDPC_MIXER = MM_MEDIAVISION_CDPC+6;
+ MM_CDPC_AUX = MM_MEDIAVISION_CDPC+7;
+
+ { Opus MV 1208 Chipsent }
+ MM_MEDIAVISION_OPUS1208 = $80;
+ MM_OPUS401_MIDIOUT = MM_MEDIAVISION_OPUS1208+1;
+ MM_OPUS401_MIDIIN = MM_MEDIAVISION_OPUS1208+2;
+ MM_OPUS1208_SYNTH = MM_MEDIAVISION_OPUS1208+3;
+ MM_OPUS1208_WAVEOUT = MM_MEDIAVISION_OPUS1208+4;
+ MM_OPUS1208_WAVEIN = MM_MEDIAVISION_OPUS1208+5;
+ MM_OPUS1208_MIXER = MM_MEDIAVISION_OPUS1208+6;
+ MM_OPUS1208_AUX = MM_MEDIAVISION_OPUS1208+7;
+
+ { Opus MV 1216 chipset }
+ MM_MEDIAVISION_OPUS1216 = $90;
+ MM_OPUS1216_MIDIOUT = MM_MEDIAVISION_OPUS1216+1;
+ MM_OPUS1216_MIDIIN = MM_MEDIAVISION_OPUS1216+2;
+ MM_OPUS1216_SYNTH = MM_MEDIAVISION_OPUS1216+3;
+ MM_OPUS1216_WAVEOUT = MM_MEDIAVISION_OPUS1216+4;
+ MM_OPUS1216_WAVEIN = MM_MEDIAVISION_OPUS1216+5;
+ MM_OPUS1216_MIXER = MM_MEDIAVISION_OPUS1216+6;
+ MM_OPUS1216_AUX = MM_MEDIAVISION_OPUS1216+7;
+
+ { MM_ARTISOFT product IDs }
+ { Artisoft sounding Board waveform input }
+ MM_ARTISOFT_SBWAVEIN = 1;
+ { Artisoft sounding Board waveform output }
+ MM_ARTISOFT_SBWAVEOUT = 2;
+
+ { MM_IBM product IDs }
+ { IBM M-Motion Auxiliary Device }
+ MM_MMOTION_WAVEAUX = 1;
+ { IBM M-Motion Waveform output }
+ MM_MMOTION_WAVEOUT = 2;
+ { IBM M-Motion Waveform Input }
+ MM_MMOTION_WAVEIN = 3;
+ { IBM waveform input }
+ MM_IBM_PCMCIA_WAVEIN = 11;
+ { IBM Waveform output }
+ MM_IBM_PCMCIA_WAVEOUT = 12;
+ { IBM Midi Synthesis }
+ MM_IBM_PCMCIA_SYNTH = 13;
+ { IBM external MIDI in }
+ MM_IBM_PCMCIA_MIDIIN = 14;
+ { IBM external MIDI out }
+ MM_IBM_PCMCIA_MIDIOUT = 15;
+ { IBM auxiliary control }
+ MM_IBM_PCMCIA_AUX = 16;
+ MM_IBM_THINKPAD200 = 17;
+ MM_IBM_MWAVE_WAVEIN = 18;
+ MM_IBM_MWAVE_WAVEOUT = 19;
+ MM_IBM_MWAVE_MIXER = 20;
+ MM_IBM_MWAVE_MIDIIN = 21;
+ MM_IBM_MWAVE_MIDIOUT = 22;
+ MM_IBM_MWAVE_AUX = 23;
+ MM_IBM_WC_MIDIOUT = 30;
+ MM_IBM_WC_WAVEOUT = 31;
+ MM_IBM_WC_MIXEROUT = 33;
+
+ { MM_VOCALTEC product IDs }
+ MM_VOCALTEC_WAVEOUT = 1;
+ MM_VOCALTEC_WAVEIN = 2;
+
+ { MM_ROLAND product IDs }
+ { MM_ROLAND_RAP10 }
+ MM_ROLAND_RAP10_MIDIOUT = 10;
+ { MM_ROLAND_RAP10 }
+ MM_ROLAND_RAP10_MIDIIN = 11;
+ { MM_ROLAND_RAP10 }
+ MM_ROLAND_RAP10_SYNTH = 12;
+ { MM_ROLAND_RAP10 }
+ MM_ROLAND_RAP10_WAVEOUT = 13;
+ { MM_ROLAND_RAP10 }
+ MM_ROLAND_RAP10_WAVEIN = 14;
+ MM_ROLAND_MPU401_MIDIOUT = 15;
+ MM_ROLAND_MPU401_MIDIIN = 16;
+ MM_ROLAND_SMPU_MIDIOUTA = 17;
+ MM_ROLAND_SMPU_MIDIOUTB = 18;
+ MM_ROLAND_SMPU_MIDIINA = 19;
+ MM_ROLAND_SMPU_MIDIINB = 20;
+ MM_ROLAND_SC7_MIDIOUT = 21;
+ MM_ROLAND_SC7_MIDIIN = 22;
+ MM_ROLAND_SERIAL_MIDIOUT = 23;
+ MM_ROLAND_SERIAL_MIDIIN = 24;
+ MM_ROLAND_SCP_MIDIOUT = 38;
+ MM_ROLAND_SCP_MIDIIN = 39;
+ MM_ROLAND_SCP_WAVEOUT = 40;
+ MM_ROLAND_SCP_WAVEIN = 41;
+ MM_ROLAND_SCP_MIXER = 42;
+ MM_ROLAND_SCP_AUX = 48;
+
+ { MM_DSP_SOLUTIONS product IDs }
+ MM_DSP_SOLUTIONS_WAVEOUT = 1;
+ MM_DSP_SOLUTIONS_WAVEIN = 2;
+ MM_DSP_SOLUTIONS_SYNTH = 3;
+ MM_DSP_SOLUTIONS_AUX = 4;
+
+ { MM_WANGLABS product IDs }
+ { Input audio wave on CPU board models: Exec 4010, 4030, 3450; PC 251/25c, pc 461/25s , pc 461/33c }
+ MM_WANGLABS_WAVEIN1 = 1;
+ MM_WANGLABS_WAVEOUT1 = 2;
+
+ { MM_TANDY product IDs }
+ MM_TANDY_VISWAVEIN = 1;
+ MM_TANDY_VISWAVEOUT = 2;
+ MM_TANDY_VISBIOSSYNTH = 3;
+ MM_TANDY_SENS_MMAWAVEIN = 4;
+ MM_TANDY_SENS_MMAWAVEOUT = 5;
+ MM_TANDY_SENS_MMAMIDIIN = 6;
+ MM_TANDY_SENS_MMAMIDIOUT = 7;
+ MM_TANDY_SENS_VISWAVEOUT = 8;
+ MM_TANDY_PSSJWAVEIN = 9;
+ MM_TANDY_PSSJWAVEOUT = 10;
+
+ { product IDs }
+ { HID2 WaveAudio Driver }
+ MM_INTELOPD_WAVEIN = 1;
+ { HID2 }
+ MM_INTELOPD_WAVEOUT = 101;
+ { HID2 for mixing }
+ MM_INTELOPD_AUX = 401;
+ MM_INTEL_NSPMODEMLINE = 501;
+
+ { MM_INTERACTIVE product IDs }
+ MM_INTERACTIVE_WAVEIN = $45;
+ MM_INTERACTIVE_WAVEOUT = $45;
+
+ { MM_YAMAHA product IDs }
+ MM_YAMAHA_GSS_SYNTH = $01;
+ MM_YAMAHA_GSS_WAVEOUT = $02;
+ MM_YAMAHA_GSS_WAVEIN = $03;
+ MM_YAMAHA_GSS_MIDIOUT = $04;
+ MM_YAMAHA_GSS_MIDIIN = $05;
+ MM_YAMAHA_GSS_AUX = $06;
+ MM_YAMAHA_SERIAL_MIDIOUT = $07;
+ MM_YAMAHA_SERIAL_MIDIIN = $08;
+ MM_YAMAHA_OPL3SA_WAVEOUT = $10;
+ MM_YAMAHA_OPL3SA_WAVEIN = $11;
+ MM_YAMAHA_OPL3SA_FMSYNTH = $12;
+ MM_YAMAHA_OPL3SA_YSYNTH = $13;
+ MM_YAMAHA_OPL3SA_MIDIOUT = $14;
+ MM_YAMAHA_OPL3SA_MIDIIN = $15;
+ MM_YAMAHA_OPL3SA_MIXER = $17;
+ MM_YAMAHA_OPL3SA_JOYSTICK = $18;
+
+ { MM_EVEREX product IDs }
+ MM_EVEREX_CARRIER = $01;
+
+ { MM_ECHO product IDs }
+ MM_ECHO_SYNTH = $01;
+ MM_ECHO_WAVEOUT = $02;
+ MM_ECHO_WAVEIN = $03;
+ MM_ECHO_MIDIOUT = $04;
+ MM_ECHO_MIDIIN = $05;
+ MM_ECHO_AUX = $06;
+
+ { MM_SIERRA product IDs }
+ MM_SIERRA_ARIA_MIDIOUT = $14;
+ MM_SIERRA_ARIA_MIDIIN = $15;
+ MM_SIERRA_ARIA_SYNTH = $16;
+ MM_SIERRA_ARIA_WAVEOUT = $17;
+ MM_SIERRA_ARIA_WAVEIN = $18;
+ MM_SIERRA_ARIA_AUX = $19;
+ MM_SIERRA_ARIA_AUX2 = $20;
+ MM_SIERRA_QUARTET_WAVEIN = $50;
+ MM_SIERRA_QUARTET_WAVEOUT = $51;
+ MM_SIERRA_QUARTET_MIDIIN = $52;
+ MM_SIERRA_QUARTET_MIDIOUT = $53;
+ MM_SIERRA_QUARTET_SYNTH = $54;
+ MM_SIERRA_QUARTET_AUX_CD = $55;
+ MM_SIERRA_QUARTET_AUX_LINE = $56;
+ MM_SIERRA_QUARTET_AUX_MODEM = $57;
+ MM_SIERRA_QUARTET_MIXER = $58;
+
+ { MM_CAT product IDs }
+ MM_CAT_WAVEOUT = 1;
+
+ { MM_DSP_GROUP product IDs }
+ MM_DSP_GROUP_TRUESPEECH = $01;
+
+ { MM_MELABS product IDs }
+ MM_MELABS_MIDI2GO = $01;
+
+ { MM_ESS product IDs }
+ MM_ESS_AMWAVEOUT = $01;
+ MM_ESS_AMWAVEIN = $02;
+ MM_ESS_AMAUX = $03;
+ MM_ESS_AMSYNTH = $04;
+ MM_ESS_AMMIDIOUT = $05;
+ MM_ESS_AMMIDIIN = $06;
+ MM_ESS_MIXER = $07;
+ MM_ESS_AUX_CD = $08;
+ MM_ESS_MPU401_MIDIOUT = $09;
+ MM_ESS_MPU401_MIDIIN = $0A;
+ MM_ESS_ES488_WAVEOUT = $10;
+ MM_ESS_ES488_WAVEIN = $11;
+ MM_ESS_ES488_MIXER = $12;
+ MM_ESS_ES688_WAVEOUT = $13;
+ MM_ESS_ES688_WAVEIN = $14;
+ MM_ESS_ES688_MIXER = $15;
+ MM_ESS_ES1488_WAVEOUT = $16;
+ MM_ESS_ES1488_WAVEIN = $17;
+ MM_ESS_ES1488_MIXER = $18;
+ MM_ESS_ES1688_WAVEOUT = $19;
+ MM_ESS_ES1688_WAVEIN = $1A;
+ MM_ESS_ES1688_MIXER = $1B;
+ MM_ESS_ES1788_WAVEOUT = $1C;
+ MM_ESS_ES1788_WAVEIN = $1D;
+ MM_ESS_ES1788_MIXER = $1E;
+ MM_ESS_ES1888_WAVEOUT = $1F;
+ MM_ESS_ES1888_WAVEIN = $20;
+ MM_ESS_ES1888_MIXER = $21;
+ MM_ESS_ES1868_WAVEOUT = $22;
+ MM_ESS_ES1868_WAVEIN = $23;
+ MM_ESS_ES1868_MIXER = $24;
+ MM_ESS_ES1878_WAVEOUT = $25;
+ MM_ESS_ES1878_WAVEIN = $26;
+ MM_ESS_ES1878_MIXER = $27;
+
+ { product IDs }
+ MM_EPS_FMSND = 1;
+
+ { MM_TRUEVISION product IDs }
+ MM_TRUEVISION_WAVEIN1 = 1;
+ MM_TRUEVISION_WAVEOUT1 = 2;
+
+ { MM_AZTECH product IDs }
+ MM_AZTECH_MIDIOUT = 3;
+ MM_AZTECH_MIDIIN = 4;
+ MM_AZTECH_WAVEIN = 17;
+ MM_AZTECH_WAVEOUT = 18;
+ MM_AZTECH_FMSYNTH = 20;
+ MM_AZTECH_MIXER = 21;
+ MM_AZTECH_PRO16_WAVEIN = 33;
+ MM_AZTECH_PRO16_WAVEOUT = 34;
+ MM_AZTECH_PRO16_FMSYNTH = 38;
+ MM_AZTECH_DSP16_WAVEIN = 65;
+ MM_AZTECH_DSP16_WAVEOUT = 66;
+ MM_AZTECH_DSP16_FMSYNTH = 68;
+ MM_AZTECH_DSP16_WAVESYNTH = 70;
+ MM_AZTECH_NOVA16_WAVEIN = 71;
+ MM_AZTECH_NOVA16_WAVEOUT = 72;
+ MM_AZTECH_NOVA16_MIXER = 73;
+ MM_AZTECH_WASH16_WAVEIN = 74;
+ MM_AZTECH_WASH16_WAVEOUT = 75;
+ MM_AZTECH_WASH16_MIXER = 76;
+ MM_AZTECH_AUX_CD = 401;
+ MM_AZTECH_AUX_LINE = 402;
+ MM_AZTECH_AUX_MIC = 403;
+ MM_AZTECH_AUX = 404;
+
+ { MM_VIDEOLOGIC product IDs }
+ MM_VIDEOLOGIC_MSWAVEIN = 1;
+ MM_VIDEOLOGIC_MSWAVEOUT = 2;
+
+ { MM_KORG product IDs }
+ MM_KORG_PCIF_MIDIOUT = 1;
+ MM_KORG_PCIF_MIDIIN = 2;
+
+ { MM_APT product IDs }
+ MM_APT_ACE100CD = 1;
+
+ { MM_ICS product IDs }
+ { MS WSS compatible card and driver }
+ MM_ICS_WAVEDECK_WAVEOUT = 1;
+ MM_ICS_WAVEDECK_WAVEIN = 2;
+ MM_ICS_WAVEDECK_MIXER = 3;
+ MM_ICS_WAVEDECK_AUX = 4;
+ MM_ICS_WAVEDECK_SYNTH = 5;
+ MM_ICS_WAVEDEC_SB_WAVEOUT = 6;
+ MM_ICS_WAVEDEC_SB_WAVEIN = 7;
+ MM_ICS_WAVEDEC_SB_FM_MIDIOUT = 8;
+ MM_ICS_WAVEDEC_SB_MPU401_MIDIOUT = 9;
+ MM_ICS_WAVEDEC_SB_MPU401_MIDIIN = 10;
+ MM_ICS_WAVEDEC_SB_MIXER = 11;
+ MM_ICS_WAVEDEC_SB_AUX = 12;
+ MM_ICS_2115_LITE_MIDIOUT = 13;
+ MM_ICS_2120_LITE_MIDIOUT = 14;
+
+ { MM_ITERATEDSYS product IDs }
+ MM_ITERATEDSYS_FUFCODEC = 1;
+
+ { MM_METHEUS product IDs }
+ MM_METHEUS_ZIPPER = 1;
+
+ { MM_WINNOV product IDs }
+ MM_WINNOV_CAVIAR_WAVEIN = 1;
+ MM_WINNOV_CAVIAR_WAVEOUT = 2;
+ MM_WINNOV_CAVIAR_VIDC = 3;
+ { Fourcc is CHAM }
+ MM_WINNOV_CAVIAR_CHAMPAGNE = 4;
+ { Fourcc is YUV8 }
+ MM_WINNOV_CAVIAR_YUV8 = 5;
+
+ { MM_NCR product IDs }
+ MM_NCR_BA_WAVEIN = 1;
+ MM_NCR_BA_WAVEOUT = 2;
+ MM_NCR_BA_SYNTH = 3;
+ MM_NCR_BA_AUX = 4;
+ MM_NCR_BA_MIXER = 5;
+
+ { MM_VITEC product IDs }
+ MM_VITEC_VMAKER = 1;
+ MM_VITEC_VMPRO = 2;
+
+ { MM_MOSCOM product IDs }
+ { Four Port Voice Processing / Voice Recognition Board }
+ MM_MOSCOM_VPC2400_IN = 1;
+ { VPC2400 }
+ MM_MOSCOM_VPC2400_OUT = 2;
+
+ { MM_SILICONSOFT product IDs }
+ { Waveform in , high sample rate }
+ MM_SILICONSOFT_SC1_WAVEIN = 1;
+ { Waveform out , high sample rate }
+ MM_SILICONSOFT_SC1_WAVEOUT = 2;
+ { Waveform in 2 channels, high sample rate }
+ MM_SILICONSOFT_SC2_WAVEIN = 3;
+ { Waveform out 2 channels, high sample rate }
+ MM_SILICONSOFT_SC2_WAVEOUT = 4;
+ { Waveform out, self powered, efficient }
+ MM_SILICONSOFT_SOUNDJR2_WAVEOUT = 5;
+ { Waveform in, self powered, efficient }
+ MM_SILICONSOFT_SOUNDJR2PR_WAVEIN = 6;
+ { Waveform out 2 channels, self powered, efficient }
+ MM_SILICONSOFT_SOUNDJR2PR_WAVEOUT = 7;
+ { Waveform in 2 channels, self powered, efficient }
+ MM_SILICONSOFT_SOUNDJR3_WAVEOUT = 8;
+
+ { MM_OLIVETTI product IDs }
+ MM_OLIVETTI_WAVEIN = 1;
+ MM_OLIVETTI_WAVEOUT = 2;
+ MM_OLIVETTI_MIXER = 3;
+ MM_OLIVETTI_AUX = 4;
+ MM_OLIVETTI_MIDIIN = 5;
+ MM_OLIVETTI_MIDIOUT = 6;
+ MM_OLIVETTI_SYNTH = 7;
+ MM_OLIVETTI_JOYSTICK = 8;
+ MM_OLIVETTI_ACM_GSM = 9;
+ MM_OLIVETTI_ACM_ADPCM = 10;
+ MM_OLIVETTI_ACM_CELP = 11;
+ MM_OLIVETTI_ACM_SBC = 12;
+ MM_OLIVETTI_ACM_OPR = 13;
+
+ { MM_IOMAGIC product IDs }
+ { The I/O Magic Tempo is a PCMCIA Type 2 audio card featuring wave audio
+ record and playback, FM synthesizer, and MIDI output. The I/O Magic
+ Tempo WaveOut device supports mono and stereo PCM playback at rates
+ of 7350, 11025, 22050, and 44100 samples }
+ MM_IOMAGIC_TEMPO_WAVEOUT = 1;
+ MM_IOMAGIC_TEMPO_WAVEIN = 2;
+ MM_IOMAGIC_TEMPO_SYNTH = 3;
+ MM_IOMAGIC_TEMPO_MIDIOUT = 4;
+ MM_IOMAGIC_TEMPO_MXDOUT = 5;
+ MM_IOMAGIC_TEMPO_AUXOUT = 6;
+
+ { MM_MATSUSHITA product IDs }
+ MM_MATSUSHITA_WAVEIN = 1;
+ MM_MATSUSHITA_WAVEOUT = 2;
+ MM_MATSUSHITA_FMSYNTH_STEREO = 3;
+ MM_MATSUSHITA_MIXER = 4;
+ MM_MATSUSHITA_AUX = 5;
+
+ { MM_NEWMEDIA product IDs }
+ { WSS Compatible sound card. }
+ MM_NEWMEDIA_WAVJAMMER = 1;
+
+ { MM_LYRRUS product IDs }
+ { Bridge is a MIDI driver that allows the the Lyrrus G-VOX hardware to
+ communicate with Windows base transcription and sequencer applications.
+ The driver also provides a mechanism for the user to configure the system
+ to their personal playing style. }
+ MM_LYRRUS_BRIDGE_GUITAR = 1;
+
+ { MM_OPTI product IDs }
+ MM_OPTI_M16_FMSYNTH_STEREO = $0001;
+ MM_OPTI_M16_MIDIIN = $0002;
+ MM_OPTI_M16_MIDIOUT = $0003;
+ MM_OPTI_M16_WAVEIN = $0004;
+ MM_OPTI_M16_WAVEOUT = $0005;
+ MM_OPTI_M16_MIXER = $0006;
+ MM_OPTI_M16_AUX = $0007;
+ MM_OPTI_P16_FMSYNTH_STEREO = $0010;
+ MM_OPTI_P16_MIDIIN = $0011;
+ MM_OPTI_P16_MIDIOUT = $0012;
+ MM_OPTI_P16_WAVEIN = $0013;
+ MM_OPTI_P16_WAVEOUT = $0014;
+ MM_OPTI_P16_MIXER = $0015;
+ MM_OPTI_P16_AUX = $0016;
+ MM_OPTI_M32_WAVEIN = $0020;
+ MM_OPTI_M32_WAVEOUT = $0021;
+ MM_OPTI_M32_MIDIIN = $0022;
+ MM_OPTI_M32_MIDIOUT = $0023;
+ MM_OPTI_M32_SYNTH_STEREO = $0024;
+ MM_OPTI_M32_MIXER = $0025;
+ MM_OPTI_M32_AUX = $0026;
+
+ { Product IDs for MM_ADDX - ADDX }
+ { MM_ADDX_PCTV_DIGITALMIX }
+ MM_ADDX_PCTV_DIGITALMIX = 1;
+ { MM_ADDX_PCTV_WAVEIN }
+ MM_ADDX_PCTV_WAVEIN = 2;
+ { MM_ADDX_PCTV_WAVEOUT }
+ MM_ADDX_PCTV_WAVEOUT = 3;
+ { MM_ADDX_PCTV_MIXER }
+ MM_ADDX_PCTV_MIXER = 4;
+ { MM_ADDX_PCTV_AUX_CD }
+ MM_ADDX_PCTV_AUX_CD = 5;
+ { MM_ADDX_PCTV_AUX_LINE }
+ MM_ADDX_PCTV_AUX_LINE = 6;
+
+ { Product IDs for MM_AHEAD - Ahead, Inc. }
+ MM_AHEAD_MULTISOUND = 1;
+ MM_AHEAD_SOUNDBLASTER = 2;
+ MM_AHEAD_PROAUDIO = 3;
+ MM_AHEAD_GENERIC = 4;
+
+ { Product IDs for MM_AMD - AMD }
+ MM_AMD_INTERWAVE_WAVEIN = 1;
+ MM_AMD_INTERWAVE_WAVEOUT = 2;
+ MM_AMD_INTERWAVE_SYNTH = 3;
+ MM_AMD_INTERWAVE_MIXER1 = 4;
+ MM_AMD_INTERWAVE_MIXER2 = 5;
+ MM_AMD_INTERWAVE_JOYSTICK = 6;
+ MM_AMD_INTERWAVE_EX_CD = 7;
+ MM_AMD_INTERWAVE_MIDIIN = 8;
+ MM_AMD_INTERWAVE_MIDIOUT = 9;
+ MM_AMD_INTERWAVE_AUX1 = 10;
+ MM_AMD_INTERWAVE_AUX2 = 11;
+ MM_AMD_INTERWAVE_AUX_MIC = 12;
+ MM_AMD_INTERWAVE_AUX_CD = 13;
+ MM_AMD_INTERWAVE_MONO_IN = 14;
+ MM_AMD_INTERWAVE_MONO_OUT = 15;
+ MM_AMD_INTERWAVE_EX_TELEPHONY = 16;
+ MM_AMD_INTERWAVE_WAVEOUT_BASE = 17;
+ MM_AMD_INTERWAVE_WAVEOUT_TREBLE = 18;
+ MM_AMD_INTERWAVE_STEREO_ENHANCED = 19;
+
+ { Product IDs for MM_AST - AST Research Inc. }
+ MM_AST_MODEMWAVE_WAVEIN = 13;
+ MM_AST_MODEMWAVE_WAVEOUT = 14;
+
+ { Product IDs for MM_BROOKTREE - Brooktree Corporation }
+ { Brooktree PCM Wave Audio In }
+ MM_BTV_WAVEIN = 1;
+ { Brooktree PCM Wave Audio Out }
+ MM_BTV_WAVEOUT = 2;
+ { Brooktree MIDI In }
+ MM_BTV_MIDIIN = 3;
+ { Brooktree MIDI out }
+ MM_BTV_MIDIOUT = 4;
+ { Brooktree MIDI FM synth }
+ MM_BTV_MIDISYNTH = 5;
+ { Brooktree Line Input }
+ MM_BTV_AUX_LINE = 6;
+ { Brooktree Microphone Input }
+ MM_BTV_AUX_MIC = 7;
+ { Brooktree CD Input }
+ MM_BTV_AUX_CD = 8;
+ { Brooktree PCM Wave in with subcode information }
+ MM_BTV_DIGITALIN = 9;
+ { Brooktree PCM Wave out with subcode information }
+ MM_BTV_DIGITALOUT = 10;
+ { Brooktree WaveStream }
+ MM_BTV_MIDIWAVESTREAM = 11;
+ { Brooktree WSS Mixer driver }
+ MM_BTV_MIXER = 12;
+
+ { Product IDs for MM_CANAM - CANAM Computers }
+ MM_CANAM_CBXWAVEOUT = 1;
+ MM_CANAM_CBXWAVEIN = 2;
+
+ { Product IDs for MM_CASIO - Casio Computer Co., LTD }
+ { wp150 }
+ MM_CASIO_WP150_MIDIOUT = 1;
+ MM_CASIO_WP150_MIDIIN = 2;
+
+ { Product IDs for MM_COMPAQ - Compaq Computer Corp. }
+ MM_COMPAQ_BB_WAVEIN = 1;
+ MM_COMPAQ_BB_WAVEOUT = 2;
+ MM_COMPAQ_BB_WAVEAUX = 3;
+
+ { Product IDs for MM_COREDYNAMICS - Core Dynamics }
+ { DynaMax Hi-Rez }
+ MM_COREDYNAMICS_DYNAMIXHR = 1;
+ { DynaSonix }
+ MM_COREDYNAMICS_DYNASONIX_SYNTH = 2;
+ MM_COREDYNAMICS_DYNASONIX_MIDI_IN = 3;
+ MM_COREDYNAMICS_DYNASONIX_MIDI_OUT = 4;
+ MM_COREDYNAMICS_DYNASONIX_WAVE_IN = 5;
+ MM_COREDYNAMICS_DYNASONIX_WAVE_OUT = 6;
+ MM_COREDYNAMICS_DYNASONIX_AUDIO_IN = 7;
+ MM_COREDYNAMICS_DYNASONIX_AUDIO_OUT = 8;
+ { DynaGrfx }
+ MM_COREDYNAMICS_DYNAGRAFX_VGA = 9;
+ MM_COREDYNAMICS_DYNAGRAFX_WAVE_IN = 10;
+ MM_COREDYNAMICS_DYNAGRAFX_WAVE_OUT = 11;
+
+ { Product IDs for MM_CRYSTAL - Crystal Semiconductor Corporation }
+ MM_CRYSTAL_CS4232_WAVEIN = 1;
+ MM_CRYSTAL_CS4232_WAVEOUT = 2;
+ MM_CRYSTAL_CS4232_WAVEMIXER = 3;
+ MM_CRYSTAL_CS4232_WAVEAUX_AUX1 = 4;
+ MM_CRYSTAL_CS4232_WAVEAUX_AUX2 = 5;
+ MM_CRYSTAL_CS4232_WAVEAUX_LINE = 6;
+ MM_CRYSTAL_CS4232_WAVEAUX_MONO = 7;
+ MM_CRYSTAL_CS4232_WAVEAUX_MASTER = 8;
+ MM_CRYSTAL_CS4232_MIDIIN = 9;
+ MM_CRYSTAL_CS4232_MIDIOUT = 10;
+ MM_CRYSTAL_CS4232_INPUTGAIN_AUX1 = 13;
+ MM_CRYSTAL_CS4232_INPUTGAIN_LOOP = 14;
+
+ { Product IDs for MM_DDD - Danka Data Devices }
+ MM_DDD_MIDILINK_MIDIIN = 1;
+ MM_DDD_MIDILINK_MIDIOUT = 2;
+
+ { Product IDs for MM_DIACOUSTICS - DiAcoustics, Inc. }
+ { Drum Action }
+ MM_DIACOUSTICS_DRUM_ACTION = 1;
+
+ { Product IDs for MM_DIAMONDMM - Diamond Multimedia }
+ { Freedom Audio }
+ MM_DIMD_PLATFORM = 0;
+ MM_DIMD_DIRSOUND = 1;
+ MM_DIMD_VIRTMPU = 2;
+ MM_DIMD_VIRTSB = 3;
+ MM_DIMD_VIRTJOY = 4;
+ MM_DIMD_WAVEIN = 5;
+ MM_DIMD_WAVEOUT = 6;
+ MM_DIMD_MIDIIN = 7;
+ MM_DIMD_MIDIOUT = 8;
+ MM_DIMD_AUX_LINE = 9;
+ MM_DIMD_MIXER = 10;
+
+ { Product IDs for MM_DIGITAL_AUDIO_LABS - Digital Audio Labs, Inc. }
+ MM_DIGITAL_AUDIO_LABS_V8 = $10;
+ MM_DIGITAL_AUDIO_LABS_CPRO = $11;
+
+ { Product IDs for MM_DIGITAL - Digital Equipment Corporation }
+ { Digital Audio Video Compression Board }
+ MM_DIGITAL_AV320_WAVEIN = 1;
+ { Digital Audio Video Compression Board }
+ MM_DIGITAL_AV320_WAVEOUT = 2;
+
+ { Product IDs for MM_ECS - Electronic Courseware Systems, Inc. }
+ MM_ECS_AADF_MIDI_IN = 10;
+ MM_ECS_AADF_MIDI_OUT = 11;
+ MM_ECS_AADF_WAVE2MIDI_IN = 12;
+
+ { Product IDs for MM_ENSONIQ - ENSONIQ Corporation }
+ { ENSONIQ Soundscape }
+ MM_ENSONIQ_SOUNDSCAPE = $10;
+ MM_SOUNDSCAPE_WAVEOUT = MM_ENSONIQ_SOUNDSCAPE+1;
+ MM_SOUNDSCAPE_WAVEOUT_AUX = MM_ENSONIQ_SOUNDSCAPE+2;
+ MM_SOUNDSCAPE_WAVEIN = MM_ENSONIQ_SOUNDSCAPE+3;
+ MM_SOUNDSCAPE_MIDIOUT = MM_ENSONIQ_SOUNDSCAPE+4;
+ MM_SOUNDSCAPE_MIDIIN = MM_ENSONIQ_SOUNDSCAPE+5;
+ MM_SOUNDSCAPE_SYNTH = MM_ENSONIQ_SOUNDSCAPE+6;
+ MM_SOUNDSCAPE_MIXER = MM_ENSONIQ_SOUNDSCAPE+7;
+ MM_SOUNDSCAPE_AUX = MM_ENSONIQ_SOUNDSCAPE+8;
+
+ { Product IDs for MM_FRONTIER - Frontier Design Group LLC }
+ { WaveCenter }
+ MM_FRONTIER_WAVECENTER_MIDIIN = 1;
+ MM_FRONTIER_WAVECENTER_MIDIOUT = 2;
+ MM_FRONTIER_WAVECENTER_WAVEIN = 3;
+ MM_FRONTIER_WAVECENTER_WAVEOUT = 4;
+
+ { Product IDs for MM_GADGETLABS - Gadget Labs LLC }
+ MM_GADGETLABS_WAVE44_WAVEIN = 1;
+ MM_GADGETLABS_WAVE44_WAVEOUT = 2;
+ MM_GADGETLABS_WAVE42_WAVEIN = 3;
+ MM_GADGETLABS_WAVE42_WAVEOUT = 4;
+ MM_GADGETLABS_WAVE4_MIDIIN = 5;
+ MM_GADGETLABS_WAVE4_MIDIOUT = 6;
+
+ { Product IDs for MM_KAY_ELEMETRICS - Kay Elemetrics, Inc. }
+ MM_KAY_ELEMETRICS_CSL = $4300;
+ MM_KAY_ELEMETRICS_CSL_DAT = $4308;
+ MM_KAY_ELEMETRICS_CSL_4CHANNEL = $4309;
+
+ { Product IDs for MM_LERNOUT_AND_HAUSPIE - Lernout & Hauspie }
+ MM_LERNOUT_ANDHAUSPIE_LHCODECACM = 1;
+
+ { Product IDs for MM_MPTUS - M.P. Technologies, Inc. }
+ { Sound Pallette }
+ MM_MPTUS_SPWAVEOUT = 1;
+
+ { Product IDs for MM_MOTU - Mark of the Unicorn }
+ MM_MOTU_MTP_MIDIOUT_ALL = 100;
+ MM_MOTU_MTP_MIDIIN_1 = 101;
+ MM_MOTU_MTP_MIDIOUT_1 = 101;
+ MM_MOTU_MTP_MIDIIN_2 = 102;
+ MM_MOTU_MTP_MIDIOUT_2 = 102;
+ MM_MOTU_MTP_MIDIIN_3 = 103;
+ MM_MOTU_MTP_MIDIOUT_3 = 103;
+ MM_MOTU_MTP_MIDIIN_4 = 104;
+ MM_MOTU_MTP_MIDIOUT_4 = 104;
+ MM_MOTU_MTP_MIDIIN_5 = 105;
+ MM_MOTU_MTP_MIDIOUT_5 = 105;
+ MM_MOTU_MTP_MIDIIN_6 = 106;
+ MM_MOTU_MTP_MIDIOUT_6 = 106;
+ MM_MOTU_MTP_MIDIIN_7 = 107;
+ MM_MOTU_MTP_MIDIOUT_7 = 107;
+ MM_MOTU_MTP_MIDIIN_8 = 108;
+ MM_MOTU_MTP_MIDIOUT_8 = 108;
+ MM_MOTU_MTPII_MIDIOUT_ALL = 200;
+ MM_MOTU_MTPII_MIDIIN_SYNC = 200;
+ MM_MOTU_MTPII_MIDIIN_1 = 201;
+ MM_MOTU_MTPII_MIDIOUT_1 = 201;
+ MM_MOTU_MTPII_MIDIIN_2 = 202;
+ MM_MOTU_MTPII_MIDIOUT_2 = 202;
+ MM_MOTU_MTPII_MIDIIN_3 = 203;
+ MM_MOTU_MTPII_MIDIOUT_3 = 203;
+ MM_MOTU_MTPII_MIDIIN_4 = 204;
+ MM_MOTU_MTPII_MIDIOUT_4 = 204;
+ MM_MOTU_MTPII_MIDIIN_5 = 205;
+ MM_MOTU_MTPII_MIDIOUT_5 = 205;
+ MM_MOTU_MTPII_MIDIIN_6 = 206;
+ MM_MOTU_MTPII_MIDIOUT_6 = 206;
+ MM_MOTU_MTPII_MIDIIN_7 = 207;
+ MM_MOTU_MTPII_MIDIOUT_7 = 207;
+ MM_MOTU_MTPII_MIDIIN_8 = 208;
+ MM_MOTU_MTPII_MIDIOUT_8 = 208;
+ MM_MOTU_MTPII_NET_MIDIIN_1 = 209;
+ MM_MOTU_MTPII_NET_MIDIOUT_1 = 209;
+ MM_MOTU_MTPII_NET_MIDIIN_2 = 210;
+ MM_MOTU_MTPII_NET_MIDIOUT_2 = 210;
+ MM_MOTU_MTPII_NET_MIDIIN_3 = 211;
+ MM_MOTU_MTPII_NET_MIDIOUT_3 = 211;
+ MM_MOTU_MTPII_NET_MIDIIN_4 = 212;
+ MM_MOTU_MTPII_NET_MIDIOUT_4 = 212;
+ MM_MOTU_MTPII_NET_MIDIIN_5 = 213;
+ MM_MOTU_MTPII_NET_MIDIOUT_5 = 213;
+ MM_MOTU_MTPII_NET_MIDIIN_6 = 214;
+ MM_MOTU_MTPII_NET_MIDIOUT_6 = 214;
+ MM_MOTU_MTPII_NET_MIDIIN_7 = 215;
+ MM_MOTU_MTPII_NET_MIDIOUT_7 = 215;
+ MM_MOTU_MTPII_NET_MIDIIN_8 = 216;
+ MM_MOTU_MTPII_NET_MIDIOUT_8 = 216;
+ MM_MOTU_MXP_MIDIIN_MIDIOUT_ALL = 300;
+ MM_MOTU_MXP_MIDIIN_SYNC = 300;
+ MM_MOTU_MXP_MIDIIN_MIDIIN_1 = 301;
+ MM_MOTU_MXP_MIDIIN_MIDIOUT_1 = 301;
+ MM_MOTU_MXP_MIDIIN_MIDIIN_2 = 302;
+ MM_MOTU_MXP_MIDIIN_MIDIOUT_2 = 302;
+ MM_MOTU_MXP_MIDIIN_MIDIIN_3 = 303;
+ MM_MOTU_MXP_MIDIIN_MIDIOUT_3 = 303;
+ MM_MOTU_MXP_MIDIIN_MIDIIN_4 = 304;
+ MM_MOTU_MXP_MIDIIN_MIDIOUT_4 = 304;
+ MM_MOTU_MXP_MIDIIN_MIDIIN_5 = 305;
+ MM_MOTU_MXP_MIDIIN_MIDIOUT_5 = 305;
+ MM_MOTU_MXP_MIDIIN_MIDIIN_6 = 306;
+ MM_MOTU_MXP_MIDIIN_MIDIOUT_6 = 306;
+ MM_MOTU_MXPMPU_MIDIOUT_ALL = 400;
+ MM_MOTU_MXPMPU_MIDIIN_SYNC = 400;
+ MM_MOTU_MXPMPU_MIDIIN_1 = 401;
+ MM_MOTU_MXPMPU_MIDIOUT_1 = 401;
+ MM_MOTU_MXPMPU_MIDIIN_2 = 402;
+ MM_MOTU_MXPMPU_MIDIOUT_2 = 402;
+ MM_MOTU_MXPMPU_MIDIIN_3 = 403;
+ MM_MOTU_MXPMPU_MIDIOUT_3 = 403;
+ MM_MOTU_MXPMPU_MIDIIN_4 = 404;
+ MM_MOTU_MXPMPU_MIDIOUT_4 = 404;
+ MM_MOTU_MXPMPU_MIDIIN_5 = 405;
+ MM_MOTU_MXPMPU_MIDIOUT_5 = 405;
+ MM_MOTU_MXPMPU_MIDIIN_6 = 406;
+ MM_MOTU_MXPMPU_MIDIOUT_6 = 406;
+ MM_MOTU_MXN_MIDIOUT_ALL = 500;
+ MM_MOTU_MXN_MIDIIN_SYNC = 500;
+ MM_MOTU_MXN_MIDIIN_1 = 501;
+ MM_MOTU_MXN_MIDIOUT_1 = 501;
+ MM_MOTU_MXN_MIDIIN_2 = 502;
+ MM_MOTU_MXN_MIDIOUT_2 = 502;
+ MM_MOTU_MXN_MIDIIN_3 = 503;
+ MM_MOTU_MXN_MIDIOUT_3 = 503;
+ MM_MOTU_MXN_MIDIIN_4 = 504;
+ MM_MOTU_MXN_MIDIOUT_4 = 504;
+ MM_MOTU_FLYER_MIDI_IN_SYNC = 600;
+ MM_MOTU_FLYER_MIDI_IN_A = 601;
+ MM_MOTU_FLYER_MIDI_OUT_A = 601;
+ MM_MOTU_FLYER_MIDI_IN_B = 602;
+ MM_MOTU_FLYER_MIDI_OUT_B = 602;
+ MM_MOTU_PKX_MIDI_IN_SYNC = 700;
+ MM_MOTU_PKX_MIDI_IN_A = 701;
+ MM_MOTU_PKX_MIDI_OUT_A = 701;
+ MM_MOTU_PKX_MIDI_IN_B = 702;
+ MM_MOTU_PKX_MIDI_OUT_B = 702;
+ MM_MOTU_DTX_MIDI_IN_SYNC = 800;
+ MM_MOTU_DTX_MIDI_IN_A = 801;
+ MM_MOTU_DTX_MIDI_OUT_A = 801;
+ MM_MOTU_DTX_MIDI_IN_B = 802;
+ MM_MOTU_DTX_MIDI_OUT_B = 802;
+ MM_MOTU_MTPAV_MIDIOUT_ALL = 900;
+ MM_MOTU_MTPAV_MIDIIN_SYNC = 900;
+ MM_MOTU_MTPAV_MIDIIN_1 = 901;
+ MM_MOTU_MTPAV_MIDIOUT_1 = 901;
+ MM_MOTU_MTPAV_MIDIIN_2 = 902;
+ MM_MOTU_MTPAV_MIDIOUT_2 = 902;
+ MM_MOTU_MTPAV_MIDIIN_3 = 903;
+ MM_MOTU_MTPAV_MIDIOUT_3 = 903;
+ MM_MOTU_MTPAV_MIDIIN_4 = 904;
+ MM_MOTU_MTPAV_MIDIOUT_4 = 904;
+ MM_MOTU_MTPAV_MIDIIN_5 = 905;
+ MM_MOTU_MTPAV_MIDIOUT_5 = 905;
+ MM_MOTU_MTPAV_MIDIIN_6 = 906;
+ MM_MOTU_MTPAV_MIDIOUT_6 = 906;
+ MM_MOTU_MTPAV_MIDIIN_7 = 907;
+ MM_MOTU_MTPAV_MIDIOUT_7 = 907;
+ MM_MOTU_MTPAV_MIDIIN_8 = 908;
+ MM_MOTU_MTPAV_MIDIOUT_8 = 908;
+ MM_MOTU_MTPAV_NET_MIDIIN_1 = 909;
+ MM_MOTU_MTPAV_NET_MIDIOUT_1 = 909;
+ MM_MOTU_MTPAV_NET_MIDIIN_2 = 910;
+ MM_MOTU_MTPAV_NET_MIDIOUT_2 = 910;
+ MM_MOTU_MTPAV_NET_MIDIIN_3 = 911;
+ MM_MOTU_MTPAV_NET_MIDIOUT_3 = 911;
+ MM_MOTU_MTPAV_NET_MIDIIN_4 = 912;
+ MM_MOTU_MTPAV_NET_MIDIOUT_4 = 912;
+ MM_MOTU_MTPAV_NET_MIDIIN_5 = 913;
+ MM_MOTU_MTPAV_NET_MIDIOUT_5 = 913;
+ MM_MOTU_MTPAV_NET_MIDIIN_6 = 914;
+ MM_MOTU_MTPAV_NET_MIDIOUT_6 = 914;
+ MM_MOTU_MTPAV_NET_MIDIIN_7 = 915;
+ MM_MOTU_MTPAV_NET_MIDIOUT_7 = 915;
+ MM_MOTU_MTPAV_NET_MIDIIN_8 = 916;
+ MM_MOTU_MTPAV_NET_MIDIOUT_8 = 916;
+ MM_MOTU_MTPAV_MIDIIN_ADAT = 917;
+ MM_MOTU_MTPAV_MIDIOUT_ADAT = 917;
+
+ { Product IDs for MM_MIRO - miro Computer Products AG }
+ { miroMOVIE pro }
+ MM_MIRO_MOVIEPRO = 1;
+ { miroVIDEO D1 }
+ MM_MIRO_VIDEOD1 = 2;
+ { miroVIDEO DC1 tv }
+ MM_MIRO_VIDEODC1TV = 3;
+ { miroVIDEO 10/20 TD }
+ MM_MIRO_VIDEOTD = 4;
+ MM_MIRO_DC30_WAVEOUT = 5;
+ MM_MIRO_DC30_WAVEIN = 6;
+ MM_MIRO_DC30_MIX = 7;
+
+ { Product IDs for MM_NEC - NEC }
+ MM_NEC_73_86_SYNTH = 5;
+ MM_NEC_73_86_WAVEOUT = 6;
+ MM_NEC_73_86_WAVEIN = 7;
+ MM_NEC_26_SYNTH = 9;
+ MM_NEC_MPU401_MIDIOUT = 10;
+ MM_NEC_MPU401_MIDIIN = 11;
+ MM_NEC_JOYSTICK = 12;
+
+ { Product IDs for MM_NORRIS - Norris Communications, Inc. }
+ MM_NORRIS_VOICELINK = 1;
+
+ { Product IDs for MM_NORTHERN_TELECOM - Northern Telecom Limited }
+ { MPX Audio Card Wave Input Device }
+ MM_NORTEL_MPXAC_WAVEIN = 1;
+
+ { MPX Audio Card Wave Output Device }
+ MM_NORTEL_MPXAC_WAVEOUT = 2;
+
+ { Product IDs for MM_NVIDIA - NVidia Corporation }
+ MM_NVIDIA_WAVEOUT = 1;
+ MM_NVIDIA_WAVEIN = 2;
+ MM_NVIDIA_MIDIOUT = 3;
+ MM_NVIDIA_MIDIIN = 4;
+ MM_NVIDIA_GAMEPORT = 5;
+ MM_NVIDIA_MIXER = 6;
+ MM_NVIDIA_AUX = 7;
+
+ { Product IDs for MM_OKSORI - OKSORI Co., Ltd. }
+ { Oksori Base }
+ MM_OKSORI_BASE = 0;
+ MM_OKSORI_OSR8_WAVEOUT = MM_OKSORI_BASE+1; { Oksori 8bit Wave out }
+ MM_OKSORI_OSR8_WAVEIN = MM_OKSORI_BASE+2; { Oksori 8bit Wave in }
+ MM_OKSORI_OSR16_WAVEOUT = MM_OKSORI_BASE+3; { Oksori 16 bit Wave out }
+ MM_OKSORI_OSR16_WAVEIN = MM_OKSORI_BASE+4; { Oksori 16 bit Wave in }
+ MM_OKSORI_FM_OPL4 = MM_OKSORI_BASE+5; { Oksori FM Synth Yamaha OPL4 }
+ MM_OKSORI_MIX_MASTER = MM_OKSORI_BASE+6; { Oksori DSP Mixer - Master Volume }
+ MM_OKSORI_MIX_WAVE = MM_OKSORI_BASE+7; { Oksori DSP Mixer - Wave Volume }
+ MM_OKSORI_MIX_FM = MM_OKSORI_BASE+8; { Oksori DSP Mixer - FM Volume }
+ MM_OKSORI_MIX_LINE = MM_OKSORI_BASE+9; { Oksori DSP Mixer - Line Volume }
+ MM_OKSORI_MIX_CD = MM_OKSORI_BASE+10; { Oksori DSP Mixer - CD Volume }
+ MM_OKSORI_MIX_MIC = MM_OKSORI_BASE+11; { Oksori DSP Mixer - MIC Volume }
+ MM_OKSORI_MIX_ECHO = MM_OKSORI_BASE+12; { Oksori DSP Mixer - Echo Volume }
+ MM_OKSORI_MIX_AUX1 = MM_OKSORI_BASE+13; { Oksori AD1848 - AUX1 Volume }
+ MM_OKSORI_MIX_LINE1 = MM_OKSORI_BASE+14; { Oksori AD1848 - LINE1 Volume }
+ MM_OKSORI_EXT_MIC1 = MM_OKSORI_BASE+15; { Oksori External - One Mic Connect }
+ MM_OKSORI_EXT_MIC2 = MM_OKSORI_BASE+16; { Oksori External - Two Mic Connect }
+ MM_OKSORI_MIDIOUT = MM_OKSORI_BASE+17; { Oksori MIDI Out Device }
+ MM_OKSORI_MIDIIN = MM_OKSORI_BASE+18; { Oksori MIDI In Device }
+ MM_OKSORI_MPEG_CDVISION = MM_OKSORI_BASE+19; { Oksori CD-Vision MPEG Decoder }
+
+ { Product IDs for MM_OSITECH - Ositech Communications Inc. }
+ { Trumpcard }
+ MM_OSITECH_TRUMPCARD = 1;
+
+ { Product IDs for MM_OSPREY - Osprey Technologies, Inc. }
+ MM_OSPREY_1000WAVEIN = 1;
+ MM_OSPREY_1000WAVEOUT = 2;
+
+ { Product IDs for MM_QUARTERDECK - Quarterdeck Corporation }
+ { Quarterdeck L&H Codec Wave In }
+ MM_QUARTERDECK_LHWAVEIN = 0;
+ { Quarterdeck L&H Codec Wave Out }
+ MM_QUARTERDECK_LHWAVEOUT = 1;
+
+ { Product IDs for MM_RHETOREX - Rhetorex Inc }
+ MM_RHETOREX_WAVEIN = 1;
+ MM_RHETOREX_WAVEOUT = 2;
+
+ { Product IDs for MM_ROCKWELL - Rockwell International }
+ MM_VOICEMIXER = 1;
+ ROCKWELL_WA1_WAVEIN = 100;
+ ROCKWELL_WA1_WAVEOUT = 101;
+ ROCKWELL_WA1_SYNTH = 102;
+ ROCKWELL_WA1_MIXER = 103;
+ ROCKWELL_WA1_MPU401_IN = 104;
+ ROCKWELL_WA1_MPU401_OUT = 105;
+ ROCKWELL_WA2_WAVEIN = 200;
+ ROCKWELL_WA2_WAVEOUT = 201;
+ ROCKWELL_WA2_SYNTH = 202;
+ ROCKWELL_WA2_MIXER = 203;
+ ROCKWELL_WA2_MPU401_IN = 204;
+ ROCKWELL_WA2_MPU401_OUT = 205;
+
+ { Product IDs for MM_S3 - S3 }
+ MM_S3_WAVEOUT = $1;
+ MM_S3_WAVEIN = $2;
+ MM_S3_MIDIOUT = $3;
+ MM_S3_MIDIIN = $4;
+ MM_S3_FMSYNTH = $5;
+ MM_S3_MIXER = $6;
+ MM_S3_AUX = $7;
+
+ { Product IDs for MM_SEERSYS - Seer Systems, Inc. }
+ MM_SEERSYS_SEERSYNTH = 1;
+ MM_SEERSYS_SEERWAVE = 2;
+ MM_SEERSYS_SEERMIX = 3;
+
+ { Product IDs for MM_SOFTSOUND - Softsound, Ltd. }
+ MM_SOFTSOUND_CODEC = 1;
+
+ { Product IDs for MM_SOUNDESIGNS - SounDesignS M.C.S. Ltd. }
+ MM_SOUNDESIGNS_WAVEIN = 1;
+ MM_SOUNDESIGNS_WAVEOUT = 2;
+
+ { Product IDs for MM_SPECTRUM_SIGNAL_PROCESSING - Spectrum Signal Processing, Inc. }
+ { Sound Festa Wave In Device }
+ MM_SSP_SNDFESWAVEIN = 1;
+ { Sound Festa Wave Out Device }
+ MM_SSP_SNDFESWAVEOUT = 2;
+ { Sound Festa MIDI In Device }
+ MM_SSP_SNDFESMIDIIN = 3;
+ { Sound Festa MIDI Out Device }
+ MM_SSP_SNDFESMIDIOUT = 4;
+ { Sound Festa MIDI Synth Device }
+ MM_SSP_SNDFESSYNTH = 5;
+ { Sound Festa Mixer Device }
+ MM_SSP_SNDFESMIX = 6;
+ { Sound Festa Auxilliary Device }
+ MM_SSP_SNDFESAUX = 7;
+
+ { Product IDs for MM_TDK - TDK Corporation }
+ MM_TDK_MW_MIDI_SYNTH = 1;
+ MM_TDK_MW_MIDI_IN = 2;
+ MM_TDK_MW_MIDI_OUT = 3;
+ MM_TDK_MW_WAVE_IN = 4;
+ MM_TDK_MW_WAVE_OUT = 5;
+ MM_TDK_MW_AUX = 6;
+ MM_TDK_MW_MIXER = 10;
+ MM_TDK_MW_AUX_MASTER = 100;
+ MM_TDK_MW_AUX_BASS = 101;
+ MM_TDK_MW_AUX_TREBLE = 102;
+ MM_TDK_MW_AUX_MIDI_VOL = 103;
+ MM_TDK_MW_AUX_WAVE_VOL = 104;
+ MM_TDK_MW_AUX_WAVE_RVB = 105;
+ MM_TDK_MW_AUX_WAVE_CHR = 106;
+ MM_TDK_MW_AUX_VOL = 107;
+ MM_TDK_MW_AUX_RVB = 108;
+ MM_TDK_MW_AUX_CHR = 109;
+
+ { Product IDs for MM_TURTLE_BEACH - Turtle Beach, Inc. }
+ MM_TBS_TROPEZ_WAVEIN = 37;
+ MM_TBS_TROPEZ_WAVEOUT = 38;
+ MM_TBS_TROPEZ_AUX1 = 39;
+ MM_TBS_TROPEZ_AUX2 = 40;
+ MM_TBS_TROPEZ_LINE = 41;
+
+ { Product IDs for MM_VIENNASYS - Vienna Systems }
+ MM_VIENNASYS_TSP_WAVE_DRIVER = 1;
+
+ { Product IDs for MM_VIONA - Viona Development GmbH }
+ { Q-Motion PCI II/Bravado 2000 }
+ MM_VIONA_QVINPCI_MIXER = 1;
+ MM_VIONA_QVINPCI_WAVEIN = 2;
+ MM_VIONAQVINPCI_WAVEOUT = 3;
+ { Buster }
+ MM_VIONA_BUSTER_MIXER = 4;
+ { Cinemaster }
+ MM_VIONA_CINEMASTER_MIXER = 5;
+ { Concerto }
+ MM_VIONA_CONCERTO_MIXER = 6;
+
+ { Product IDs for MM_WILDCAT - Wildcat Canyon Software }
+ { Autoscore }
+ MM_WILDCAT_AUTOSCOREMIDIIN = 1;
+
+ { Product IDs for MM_WILLOWPOND - Willow Pond Corporation }
+ MM_WILLOWPOND_FMSYNTH_STEREO = 20;
+ MM_WILLOWPOND_SNDPORT_WAVEIN = 100;
+ MM_WILLOWPOND_SNDPORT_WAVEOUT = 101;
+ MM_WILLOWPOND_SNDPORT_MIXER = 102;
+ MM_WILLOWPOND_SNDPORT_AUX = 103;
+ MM_WILLOWPOND_PH_WAVEIN = 104;
+ MM_WILLOWPOND_PH_WAVEOUT = 105;
+ MM_WILLOWPOND_PH_MIXER = 106;
+ MM_WILLOWPOND_PH_AUX = 107;
+
+ { Product IDs for MM_WORKBIT - Workbit Corporation }
+ { Harmony Mixer }
+ MM_WORKBIT_MIXER = 1;
+ { Harmony Mixer }
+ MM_WORKBIT_WAVEOUT = 2;
+ { Harmony Mixer }
+ MM_WORKBIT_WAVEIN = 3;
+ { Harmony Mixer }
+ MM_WORKBIT_MIDIIN = 4;
+ { Harmony Mixer }
+ MM_WORKBIT_MIDIOUT = 5;
+ { Harmony Mixer }
+ MM_WORKBIT_FMSYNTH = 6;
+ { Harmony Mixer }
+ MM_WORKBIT_AUX = 7;
+ MM_WORKBIT_JOYSTICK = 8;
+ { Product IDs for MM_FRAUNHOFER_IIS - Fraunhofer }
+ MM_FHGIIS_MPEGLAYER3 = 10;
+{$ENDIF NOMMIDS}
+
+
+{*////////////////////////////////////////////////////////////////////////// */
+
+/* INFO LIST CHUNKS (from the Multimedia Programmer's Reference
+ plus new ones)
+*}
+
+const
+ RIFFINFO_IARL = FOURCC(byte(AnsiChar('I')) or
+ (byte(AnsiChar('A')) shl 8) or
+ (byte(AnsiChar('R')) shl 16) or
+ (byte(AnsiChar('L')) shl 24)
+ ); //*Archival location */
+
+ RIFFINFO_IART = FOURCC(byte(AnsiChar('I')) or
+ (byte(AnsiChar('A')) shl 8) or
+ (byte(AnsiChar('R')) shl 16) or
+ (byte(AnsiChar('T')) shl 24)
+ ); //*Artist */
+
+ RIFFINFO_ICMS = FOURCC(byte(AnsiChar('I')) or
+ (byte(AnsiChar('C')) shl 8) or
+ (byte(AnsiChar('M')) shl 16) or
+ (byte(AnsiChar('S'))shl 24)
+ ); //*Commissioned */
+
+ RIFFINFO_ICMT = FOURCC(byte(AnsiChar('I')) or
+ (byte(AnsiChar('C')) shl 8) or
+ (byte(AnsiChar('M')) shl 16) or
+ (byte(AnsiChar('T')) shl 24)
+ ); //*Comments */
+
+ RIFFINFO_ICOP = FOURCC(byte(AnsiChar('I')) or
+ (byte(AnsiChar('C')) shl 8) or
+ (byte(AnsiChar('O')) shl 16) or
+ (byte(AnsiChar('P')) shl 24)
+ ); //*Copyright */
+
+ RIFFINFO_ICRD = FOURCC(byte(AnsiChar('I')) or
+ (byte(AnsiChar('C')) shl 8) or
+ (byte(AnsiChar('R')) shl 16) or
+ (byte(AnsiChar('D')) shl 24)
+ ); //*Creation date of subject */
+
+ RIFFINFO_ICRP = FOURCC(byte(AnsiChar('I')) or
+ (byte(AnsiChar('C')) shl 8) or
+ (byte(AnsiChar('R')) shl 16) or
+ (byte(AnsiChar('P')) shl 24)
+ ); //*Cropped */
+
+ RIFFINFO_IDIM = FOURCC(byte(AnsiChar('I')) or
+ (byte(AnsiChar('D')) shl 8) or
+ (byte(AnsiChar('I')) shl 16) or
+ (byte(AnsiChar('M')) shl 24)
+ ); //*Dimensions */
+
+ RIFFINFO_IDPI = FOURCC(byte(AnsiChar('I')) or
+ (byte(AnsiChar('D')) shl 8) or
+ (byte(AnsiChar('P')) shl 16) or
+ (byte(AnsiChar('I')) shl 24)
+ ); //*Dots per inch */
+
+ RIFFINFO_IENG = FOURCC(byte(AnsiChar('I')) or
+ (byte(AnsiChar('E')) shl 8) or
+ (byte(AnsiChar('N')) shl 16) or
+ (byte(AnsiChar('G')) shl 24)
+ ); //*Engineer */
+
+ RIFFINFO_IGNR = FOURCC(byte(AnsiChar('I')) or
+ (byte(AnsiChar('G')) shl 8) or
+ (byte(AnsiChar('N')) shl 16) or
+ (byte(AnsiChar('R')) shl 24)
+ ); //*Genre */
+
+ RIFFINFO_IKEY = FOURCC(byte(AnsiChar('I')) or
+ (byte(AnsiChar('K')) shl 8) or
+ (byte(AnsiChar('E')) shl 16) or
+ (byte(AnsiChar('Y')) shl 24)
+ ); //*Keywords */
+
+ RIFFINFO_ILGT = FOURCC(byte(AnsiChar('I')) or
+ (byte(AnsiChar('L')) shl 8) or
+ (byte(AnsiChar('G')) shl 16) or
+ (byte(AnsiChar('T')) shl 24)
+ ); //*Lightness settings */
+
+ RIFFINFO_IMED = FOURCC(byte(AnsiChar('I')) or
+ (byte(AnsiChar('M')) shl 8) or
+ (byte(AnsiChar('E')) shl 16) or
+ (byte(AnsiChar('D')) shl 24)
+ ); //*Medium */
+
+ RIFFINFO_INAM = FOURCC(byte(AnsiChar('I')) or
+ (byte(AnsiChar('N')) shl 8) or
+ (byte(AnsiChar('A')) shl 16) or
+ (byte(AnsiChar('M')) shl 24)
+ ); //*Name of subject */
+
+ RIFFINFO_IPLT = FOURCC(byte(AnsiChar('I')) or
+ (byte(AnsiChar('P')) shl 8) or
+ (byte(AnsiChar('L')) shl 16) or
+ (byte(AnsiChar('T')) shl 24)
+ ); //*Palette Settings. No. of colors requested. */
+
+ RIFFINFO_IPRD = FOURCC(byte(AnsiChar('I')) or
+ (byte(AnsiChar('P')) shl 8) or
+ (byte(AnsiChar('R')) shl 16) or
+ (byte(AnsiChar('D')) shl 24)
+ ); //*Product */
+
+ RIFFINFO_ISBJ = FOURCC(byte(AnsiChar('I')) or
+ (byte(AnsiChar('S')) shl 8) or
+ (byte(AnsiChar('B')) shl 16) or
+ (byte(AnsiChar('J')) shl 24)
+ ); //*Subject description */
+
+ RIFFINFO_ISFT = FOURCC(byte(AnsiChar('I')) or
+ (byte(AnsiChar('S')) shl 8) or
+ (byte(AnsiChar('F')) shl 16) or
+ (byte(AnsiChar('T')) shl 24)
+ ); //*Software. Name of package used to create file. */
+
+ RIFFINFO_ISHP = FOURCC(byte(AnsiChar('I')) or
+ (byte(AnsiChar('S')) shl 8) or
+ (byte(AnsiChar('H')) shl 16) or
+ (byte(AnsiChar('P')) shl 24)
+ ); //*Sharpness. */
+
+ RIFFINFO_ISRC = FOURCC(byte(AnsiChar('I')) or
+ (byte(AnsiChar('S')) shl 8) or
+ (byte(AnsiChar('R')) shl 16) or
+ (byte(AnsiChar('C')) shl 24)
+ ); //*Source. */
+
+ RIFFINFO_ISRF = FOURCC(byte(AnsiChar('I')) or
+ (byte(AnsiChar('S')) shl 8) or
+ (byte(AnsiChar('R')) shl 16) or
+ (byte(AnsiChar('F')) shl 24)
+ ); //*Source Form. ie slide, paper */
+
+ RIFFINFO_ITCH = FOURCC(byte(AnsiChar('I')) or
+ (byte(AnsiChar('T')) shl 8) or
+ (byte(AnsiChar('C')) shl 16) or
+ (byte(AnsiChar('H')) shl 24)
+ ); //*Technician who digitized the subject. */
+
+//* New INFO Chunks as of August 30, 1993: */
+ RIFFINFO_ISMP = FOURCC(byte(AnsiChar('I')) or
+ (byte(AnsiChar('S')) shl 8) or
+ (byte(AnsiChar('M')) shl 16) or
+ (byte(AnsiChar('P')) shl 24)
+ ); //*SMPTE time code */
+{* ISMP: SMPTE time code of digitization start point expressed as a NULL terminated
+ text string "HH:MM:SS:FF". If performing MCI capture in AVICAP, this
+ chunk will be automatically set based on the MCI start time.
+*}
+
+ RIFFINFO_IDIT = FOURCC(byte(AnsiChar('I')) or
+ (byte(AnsiChar('D')) shl 8) or
+ (byte(AnsiChar('I')) shl 16) or
+ (byte(AnsiChar('T')) shl 24)
+ ); //*Digitization Time */
+{* IDIT: "Digitization Time" Specifies the time and date that the digitization commenced.
+ The digitization time is contained in an ASCII string which
+ contains exactly 26 characters and is in the format
+ "Wed Jan 02 02:03:55 1990\n\0".
+ The ctime(), asctime(), functions can be used to create strings
+ in this format. This chunk is automatically added to the capture
+ file based on the current system time at the moment capture is initiated.
+*}
+
+{*Template line for new additions
+ RIFFINFO_I = FOURCC(byte(AnsiChar('I')) or
+ (byte(AnsiChar('')) shl 8) or
+ (byte(AnsiChar('')) shl 16) or
+ (byte(AnsiChar('')) shl 24)
+ ); // Comment
+}
+//*/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
+
+{$IFNDEF NONEWWAVE}
+{ WAVE form wFormatTag IDs }
+const
+ WAVE_FORMAT_UNKNOWN = $0000;{ Microsoft Corporation }
+ { Microsoft Corporation }
+ WAVE_FORMAT_ADPCM = $0002;
+ { Microsoft Corporation }
+ WAVE_FORMAT_IEEE_FLOAT = $0003;
+ { IEEE754: range (+1, -1] }
+ { 32-bit/64-bit format as defined by }
+ { MSVC++ float/double type }
+ { IBM Corporation }
+ WAVE_FORMAT_IBM_CVSD = $0005;
+ { Microsoft Corporation }
+ WAVE_FORMAT_ALAW = $0006;
+ { Microsoft Corporation }
+ WAVE_FORMAT_MULAW = $0007;
+ { Microsoft Corporation }
+ WAVE_FORMAT_WMAVOICE9 = $000a;
+ { OKI }
+ WAVE_FORMAT_OKI_ADPCM = $0010;
+ { Intel Corporation }
+ WAVE_FORMAT_DVI_ADPCM = $0011;
+ { Intel Corporation }
+ WAVE_FORMAT_IMA_ADPCM = WAVE_FORMAT_DVI_ADPCM;
+ { Videologic }
+ WAVE_FORMAT_MEDIASPACE_ADPCM = $0012;
+ { Sierra Semiconductor Corp }
+ WAVE_FORMAT_SIERRA_ADPCM = $0013;
+ { Antex Electronics Corporation }
+ WAVE_FORMAT_G723_ADPCM = $0014;
+ { DSP Solutions, Inc. }
+ WAVE_FORMAT_DIGISTD = $0015;
+ { DSP Solutions, Inc. }
+ WAVE_FORMAT_DIGIFIX = $0016;
+ { Dialogic Corporation }
+ WAVE_FORMAT_DIALOGIC_OKI_ADPCM = $0017;
+ { Media Vision, Inc. }
+ WAVE_FORMAT_MEDIAVISION_ADPCM = $0018;
+ { Yamaha Corporation of America }
+ WAVE_FORMAT_YAMAHA_ADPCM = $0020;
+ { Speech Compression }
+ WAVE_FORMAT_SONARC = $0021;
+ { DSP Group, Inc }
+ WAVE_FORMAT_DSPGROUP_TRUESPEECH = $0022;
+ { Echo Speech Corporation }
+ WAVE_FORMAT_ECHOSC1 = $0023;
+ { }
+ WAVE_FORMAT_AUDIOFILE_AF36 = $0024;
+ { Audio Processing Technology }
+ WAVE_FORMAT_APTX = $0025;
+ { }
+ WAVE_FORMAT_AUDIOFILE_AF10 = $0026;
+ { Dolby Laboratories }
+ WAVE_FORMAT_DOLBY_AC2 = $0030;
+ { Microsoft Corporation }
+ WAVE_FORMAT_GSM610 = $0031;
+ { Microsoft Corporation }
+ WAVE_FORMAT_MSNAUDIO = $0032;
+ { Antex Electronics Corporation }
+ WAVE_FORMAT_ANTEX_ADPCME = $0033;
+ { Control Resources Limited }
+ WAVE_FORMAT_CONTROL_RES_VQLPC = $0034;
+ { DSP Solutions, Inc. }
+ WAVE_FORMAT_DIGIREAL = $0035;
+ { DSP Solutions, Inc. }
+ WAVE_FORMAT_DIGIADPCM = $0036;
+ { Control Resources Limited }
+ WAVE_FORMAT_CONTROL_RES_CR10 = $0037;
+ { Natural MicroSystems }
+ WAVE_FORMAT_NMS_VBXADPCM = $0038;
+ { Crystal Semiconductor IMA ADPCM }
+ WAVE_FORMAT_CS_IMAADPCM = $0039;
+ { Echo Speech Corporation }
+ WAVE_FORMAT_ECHOSC3 = $003A;
+ { Rockwell International }
+ WAVE_FORMAT_ROCKWELL_ADPCM = $003B;
+ { Rockwell International }
+ WAVE_FORMAT_ROCKWELL_DIGITALK = $003C;
+ { Xebec Multimedia Solutions Limited }
+ WAVE_FORMAT_XEBEC = $003D;
+ { Antex Electronics Corporation }
+ WAVE_FORMAT_G721_ADPCM = $0040;
+ { Antex Electronics Corporation }
+ WAVE_FORMAT_G728_CELP = $0041;
+ { Microsoft Corporation }
+ WAVE_FORMAT_MPEG = $0050;
+ { ISO/MPEG Layer3 Format Tag }
+ WAVE_FORMAT_MPEGLAYER3 = $0055;
+ { Cirrus Logic }
+ WAVE_FORMAT_CIRRUS = $0060;
+ { ESS Technology }
+ WAVE_FORMAT_ESPCM = $0061;
+ { Voxware Inc }
+ WAVE_FORMAT_VOXWARE = $0062;
+ { Canopus, co., Ltd. }
+ WAVEFORMAT_CANOPUS_ATRAC = $0063;
+ { APICOM }
+ WAVE_FORMAT_G726_ADPCM = $0064;
+ { APICOM }
+ WAVE_FORMAT_G722_ADPCM = $0065;
+ { Microsoft Corporation }
+ WAVE_FORMAT_DSAT = $0066;
+ { Microsoft Corporation }
+ WAVE_FORMAT_DSAT_DISPLAY = $0067;
+ { Softsound, Ltd. }
+ WAVE_FORMAT_SOFTSOUND = $0080;
+ { Rhetorex Inc }
+ WAVE_FORMAT_RHETOREX_ADPCM = $0100;
+ { Microsoft Corporation }
+ WAVE_FORMAT_MSAUDIO1 = $0160;
+ { Microsoft Corporation }
+ WAVE_FORMAT_WMAUDIO2 = $0161;
+ { Microsoft Corporation }
+ WAVE_FORMAT_WMAUDIO3 = $0162;
+ { Microsoft Corporation }
+ WAVE_FORMAT_WMAUDIO_LOSSLESS = $0163;
+ { Creative Labs, Inc }
+ WAVE_FORMAT_CREATIVE_ADPCM = $0200;
+ { Creative Labs, Inc }
+ WAVE_FORMAT_CREATIVE_FASTSPEECH8 = $0202;
+ { Creative Labs, Inc }
+ WAVE_FORMAT_CREATIVE_FASTSPEECH10 = $0203;
+ { Quarterdeck Corporation }
+ WAVE_FORMAT_QUARTERDECK = $0220;
+ { Fujitsu Corp. }
+ WAVE_FORMAT_FM_TOWNS_SND = $0300;
+ { Brooktree Corporation }
+ WAVE_FORMAT_BTV_DIGITAL = $0400;
+ { Ing C. Olivetti & C., S.p.A. }
+ WAVE_FORMAT_OLIGSM = $1000;
+ { Ing C. Olivetti & C., S.p.A. }
+ WAVE_FORMAT_OLIADPCM = $1001;
+ { Ing C. Olivetti & C., S.p.A. }
+ WAVE_FORMAT_OLICELP = $1002;
+ { Ing C. Olivetti & C., S.p.A. }
+ WAVE_FORMAT_OLISBC = $1003;
+ { Ing C. Olivetti & C., S.p.A. }
+ WAVE_FORMAT_OLIOPR = $1004;
+ { Lernout & Hauspie }
+ WAVE_FORMAT_LH_CODEC = $1100;
+ { Norris Communications, Inc. }
+ WAVE_FORMAT_NORRIS = $1400;
+
+const
+ WAVE_FORMAT_EXTENSIBLE = $FFFE; { Microsoft }
+
+ { }
+ { the WAVE_FORMAT_DEVELOPMENT format tag can be used during the }
+ { development phase of a new wave format. Before shipping, you MUST }
+ { acquire an official format tag from Microsoft. }
+ { }
+
+const
+ WAVE_FORMAT_DEVELOPMENT = $FFFF;
+
+{$ENDIF NONEWWAVE}
+
+type
+{ general waveform format structure (information common to all formats) }
+ waveformat_tag = record
+ wFormatTag:word; { format type }
+ nChannels:word; { number of channels (i.e. mono, stereo...) }
+ nSamplesPerSec:DWORD; { sample rate }
+ nAvgBytesPerSec:DWORD; { for buffer estimation }
+ nBlockAlign:word; { block size of data }
+ end;
+ WAVEFORMAT = waveformat_tag;
+ PWAVEFORMAT = ^WAVEFORMAT;
+ NPWAVEFORMAT = ^WAVEFORMAT;
+ LPWAVEFORMAT = ^WAVEFORMAT;
+ LPCWAVEFORMAT = ^WAVEFORMAT;
+
+ { flags for wFormatTag field of WAVEFORMAT }
+const
+ WAVE_FORMAT_PCM = 1;
+
+{ specific waveform format structure for PCM data }
+type
+ pcmwaveformat_tag = record
+ wf:WAVEFORMAT;
+ wBitsPerSample:word; // corresponds to MCI_WAVE_SET_.... structure
+ end;
+ PCMWAVEFORMAT = pcmwaveformat_tag;
+ PPCMWAVEFORMAT = ^PCMWAVEFORMAT;
+ NPPCMWAVEFORMAT = ^PCMWAVEFORMAT;
+ LPPCMWAVEFORMAT = ^PCMWAVEFORMAT;
+
+{ general extended waveform format structure
+ Use this for all NON PCM formats (information common to all formats)
+}
+
+{*
+ * extended waveform format structure used for all non-PCM formats. this
+ * structure is common to all non-PCM formats.
+ *}
+type
+ tWAVEFORMATEX = record
+ wFormatTag:word; //* format type */
+ nChannels:word; //* number of channels (i.e. mono, stereo...) */
+ nSamplesPerSec:DWORD; //* sample rate */
+ nAvgBytesPerSec:DWORD; //* for buffer estimation */
+ nBlockAlign:word; //* block size of data */
+ wBitsPerSample:word; //* Number of bits per sample of mono data */
+ cbSize:word; //* The count in bytes of the size of
+ // extra information (after cbSize) */
+ end;
+ WAVEFORMATEX = tWAVEFORMATEX;
+ PWAVEFORMATEX = ^WAVEFORMATEX;
+ NPWAVEFORMATEX = ^WAVEFORMATEX;
+ LPWAVEFORMATEX = ^tWAVEFORMATEX;
+ LPCWAVEFORMATEX = ^WAVEFORMATEX;
+
+type
+ WAVEFORMATEXTENSIBLE = record
+ Format:WAVEFORMATEX;
+ Samples:record
+ case longint of
+ 0: (wValidBitsPerSample:word);
+ 1: (wSamplesPerBlock:word);
+ 2: (wReserved:word);
+ end;
+ dwChannelMask:DWORD;
+ SubFormat:TGUID;
+ end;
+ PWAVEFORMATEXTENSIBLE = ^WAVEFORMATEXTENSIBLE;
+
+{ Extended PCM waveform format structure based on WAVEFORMATEXTENSIBLE. }
+{ Use this for multiple channel and hi-resolution PCM data }
+type
+ WAVEFORMATPCMEX = WAVEFORMATEXTENSIBLE; { Format.cbSize = 22 }
+ PWAVEFORMATPCMEX = ^WAVEFORMATPCMEX;
+ NPWAVEFORMATPCMEX = ^WAVEFORMATPCMEX;
+ LPWAVEFORMATPCMEX = ^WAVEFORMATPCMEX;
+
+ { Extended format structure using IEEE Float data and based }
+ { on WAVEFORMATEXTENSIBLE. Use this for multiple channel }
+ { and hi-resolution PCM data in IEEE floating point format. }
+
+ WAVEFORMATIEEEFLOATEX = WAVEFORMATEXTENSIBLE; { Format.cbSize = 22 }
+ PWAVEFORMATIEEEFLOATEX = ^WAVEFORMATIEEEFLOATEX;
+ NPWAVEFORMATIEEEFLOATEX = ^WAVEFORMATIEEEFLOATEX;
+ LPWAVEFORMATIEEEFLOATEX = ^WAVEFORMATIEEEFLOATEX;
+
+{ Speaker Positions for dwChannelMask in WAVEFORMATEXTENSIBLE: }
+const
+ SPEAKER_FRONT_LEFT = $1;
+ SPEAKER_FRONT_RIGHT = $2;
+ SPEAKER_FRONT_CENTER = $4;
+ SPEAKER_LOW_FREQUENCY = $8;
+ SPEAKER_BACK_LEFT = $10;
+ SPEAKER_BACK_RIGHT = $20;
+ SPEAKER_FRONT_LEFT_OF_CENTER = $40;
+ SPEAKER_FRONT_RIGHT_OF_CENTER = $80;
+ SPEAKER_BACK_CENTER = $100;
+ SPEAKER_SIDE_LEFT = $200;
+ SPEAKER_SIDE_RIGHT = $400;
+ SPEAKER_TOP_CENTER = $800;
+ SPEAKER_TOP_FRONT_LEFT = $1000;
+ SPEAKER_TOP_FRONT_CENTER = $2000;
+ SPEAKER_TOP_FRONT_RIGHT = $4000;
+ SPEAKER_TOP_BACK_LEFT = $8000;
+ SPEAKER_TOP_BACK_CENTER = $10000;
+ SPEAKER_TOP_BACK_RIGHT = $20000;
+ { Bit mask locations reserved for future use }
+ SPEAKER_RESERVED = $7FFC0000;
+ { Used to specify that any possible permutation of speaker configurations }
+ SPEAKER_ALL = $80000000;
+
+{$IFNDEF NONEWWAVE}
+{ Define data for MS ADPCM }
+
+type
+ adpcmcoef_tag = record
+ iCoef1:SmallInt;
+ iCoef2:SmallInt;
+ end;
+ ADPCMCOEFSET = adpcmcoef_tag;
+ PADPCMCOEFSET = ^ADPCMCOEFSET;
+ NPADPCMCOEFSET = ^ADPCMCOEFSET;
+ LPADPCMCOEFSET = ^ADPCMCOEFSET;
+
+type
+ adpcmwaveformat_tag = record
+ wfx:WAVEFORMATEX;
+ wSamplesPerBlock:word;
+ wNumCoef:word;
+ aCoef:array[0..0] of ADPCMCOEFSET;
+ end;
+ ADPCMWAVEFORMAT = adpcmwaveformat_tag;
+ PADPCMWAVEFORMAT = ^ADPCMWAVEFORMAT;
+ NPADPCMWAVEFORMAT = ^ADPCMWAVEFORMAT;
+ LPADPCMWAVEFORMAT = ^ADPCMWAVEFORMAT;
+
+{ Intel's DVI ADPCM structure definitions }
+{ }
+{ for WAVE_FORMAT_DVI_ADPCM (0x0011) }
+
+type
+ dvi_adpcmwaveformat_tag = record
+ wfx:WAVEFORMATEX;
+ wSamplesPerBlock:word;
+ end;
+ DVIADPCMWAVEFORMAT = dvi_adpcmwaveformat_tag;
+ PDVIADPCMWAVEFORMAT = ^DVIADPCMWAVEFORMAT;
+ NPDVIADPCMWAVEFORMAT = ^DVIADPCMWAVEFORMAT;
+ LPDVIADPCMWAVEFORMAT = ^DVIADPCMWAVEFORMAT;
+
+ { }
+ { IMA endorsed ADPCM structure definitions--note that this is exactly }
+ { the same format as Intel's DVI ADPCM. }
+ { }
+ { for WAVE_FORMAT_IMA_ADPCM (0x0011) }
+ { }
+ { }
+
+ ima_adpcmwaveformat_tag = record
+ wfx:WAVEFORMATEX;
+ wSamplesPerBlock:word;
+ end;
+ IMAADPCMWAVEFORMAT = ima_adpcmwaveformat_tag;
+ PIMAADPCMWAVEFORMAT = ^IMAADPCMWAVEFORMAT;
+ NPIMAADPCMWAVEFORMAT = ^IMAADPCMWAVEFORMAT;
+ LPIMAADPCMWAVEFORMAT = ^IMAADPCMWAVEFORMAT;
+
+ {
+ //VideoLogic's Media Space ADPCM Structure definitions
+ // for WAVE_FORMAT_MEDIASPACE_ADPCM (0x0012)
+ //
+ //
+ }
+
+ mediaspace_adpcmwaveformat_tag = record
+ wfx:WAVEFORMATEX;
+ wRevision:word;
+ end;
+ MEDIASPACEADPCMWAVEFORMAT = mediaspace_adpcmwaveformat_tag;
+ PMEDIASPACEADPCMWAVEFORMAT = ^MEDIASPACEADPCMWAVEFORMAT;
+ NPMEDIASPACEADPCMWAVEFORMAT = ^MEDIASPACEADPCMWAVEFORMAT;
+ LPMEDIASPACEADPCMWAVEFORMAT = ^MEDIASPACEADPCMWAVEFORMAT;
+
+ { Sierra Semiconductor }
+ { }
+ { for WAVE_FORMAT_SIERRA_ADPCM (0x0013) }
+
+ sierra_adpcmwaveformat_tag = record
+ wfx:WAVEFORMATEX;
+ wRevision:word;
+ end;
+ SIERRAADPCMWAVEFORMAT = sierra_adpcmwaveformat_tag;
+ PSIERRAADPCMWAVEFORMAT = ^SIERRAADPCMWAVEFORMAT;
+ NPSIERRAADPCMWAVEFORMAT = ^SIERRAADPCMWAVEFORMAT;
+ LPSIERRAADPCMWAVEFORMAT = ^SIERRAADPCMWAVEFORMAT;
+
+ { Antex Electronics structure definitions }
+ { }
+ { for WAVE_FORMAT_G723_ADPCM (0x0014) }
+
+ g723_adpcmwaveformat_tag = record
+ wfx:WAVEFORMATEX;
+ cbExtraSize:word;
+ nAuxBlockSize:word;
+ end;
+ G723_ADPCMWAVEFORMAT = g723_adpcmwaveformat_tag;
+ PG723_ADPCMWAVEFORMAT = ^G723_ADPCMWAVEFORMAT;
+ NPG723_ADPCMWAVEFORMAT = ^G723_ADPCMWAVEFORMAT;
+ LPG723_ADPCMWAVEFORMAT = ^G723_ADPCMWAVEFORMAT;
+
+ { }
+ { DSP Solutions (formerly DIGISPEECH) structure definitions }
+ { }
+ { for WAVE_FORMAT_DIGISTD (0x0015) }
+
+ digistdwaveformat_tag = record
+ wfx : WAVEFORMATEX;
+ end;
+ DIGISTDWAVEFORMAT = digistdwaveformat_tag;
+ PDIGISTDWAVEFORMAT = ^DIGISTDWAVEFORMAT;
+ NPDIGISTDWAVEFORMAT = ^DIGISTDWAVEFORMAT;
+ LPDIGISTDWAVEFORMAT = ^DIGISTDWAVEFORMAT;
+
+ { }
+ { DSP Solutions (formerly DIGISPEECH) structure definitions }
+ { }
+ { for WAVE_FORMAT_DIGIFIX (0x0016) }
+ { }
+ { }
+
+ digifixwaveformat_tag = record
+ wfx : WAVEFORMATEX;
+ end;
+ DIGIFIXWAVEFORMAT = digifixwaveformat_tag;
+ PDIGIFIXWAVEFORMAT = ^DIGIFIXWAVEFORMAT;
+ NPDIGIFIXWAVEFORMAT = ^DIGIFIXWAVEFORMAT;
+ LPDIGIFIXWAVEFORMAT = ^DIGIFIXWAVEFORMAT;
+
+ { }
+ { Dialogic Corporation }
+ { WAVEFORMAT_DIALOGIC_OKI_ADPCM (0x0017) }
+ { }
+
+ creative_fastspeechformat_tag = record
+ ewf:WAVEFORMATEX;
+ end;
+ DIALOGICOKIADPCMWAVEFORMAT = creative_fastspeechformat_tag;
+ PDIALOGICOKIADPCMWAVEFORMAT = ^DIALOGICOKIADPCMWAVEFORMAT;
+ NPDIALOGICOKIADPCMWAVEFORMAT = ^DIALOGICOKIADPCMWAVEFORMAT;
+ LPDIALOGICOKIADPCMWAVEFORMAT = ^DIALOGICOKIADPCMWAVEFORMAT;
+
+ { }
+ { Yamaha Compression's ADPCM structure definitions }
+ { }
+ { for WAVE_FORMAT_YAMAHA_ADPCM (0x0020) }
+ { }
+ { }
+
+ yamaha_adpmcwaveformat_tag = record
+ wfx : WAVEFORMATEX;
+ end;
+ YAMAHA_ADPCMWAVEFORMAT = yamaha_adpmcwaveformat_tag;
+ PYAMAHA_ADPCMWAVEFORMAT = ^YAMAHA_ADPCMWAVEFORMAT;
+ (* near ignored *)
+ NPYAMAHA_ADPCMWAVEFORMAT = ^YAMAHA_ADPCMWAVEFORMAT;
+ (* far ignored *)
+ LPYAMAHA_ADPCMWAVEFORMAT = ^YAMAHA_ADPCMWAVEFORMAT;
+
+ { }
+ { Speech Compression's Sonarc structure definitions }
+ { }
+ { for WAVE_FORMAT_SONARC (0x0021) }
+ { }
+ { }
+ sonarcwaveformat_tag = record
+ wfx : WAVEFORMATEX;
+ wCompType : word;
+ end;
+ SONARCWAVEFORMAT = sonarcwaveformat_tag;
+ PSONARCWAVEFORMAT = ^SONARCWAVEFORMAT;
+ NPSONARCWAVEFORMAT = ^SONARCWAVEFORMAT;
+ LPSONARCWAVEFORMAT = SONARCWAVEFORMAT;
+
+
+ { }
+ { DSP Groups's TRUESPEECH structure definitions }
+ { }
+ { for WAVE_FORMAT_DSPGROUP_TRUESPEECH (0x0022) }
+ { }
+ { }
+
+ truespeechwaveformat_tag = record
+ wfx : WAVEFORMATEX;
+ wRevision :word;
+ nSamplesPerBlock:word;
+ abReserved :array[0..27] of byte;
+ end;
+ TRUESPEECHWAVEFORMAT = truespeechwaveformat_tag;
+ PTRUESPEECHWAVEFORMAT = ^TRUESPEECHWAVEFORMAT;
+ NPTRUESPEECHWAVEFORMAT = ^TRUESPEECHWAVEFORMAT;
+ LPTRUESPEECHWAVEFORMAT = ^TRUESPEECHWAVEFORMAT;
+
+ { }
+ { Echo Speech Corp structure definitions }
+ { }
+ { for WAVE_FORMAT_ECHOSC1 (0x0023) }
+
+ echosc1waveformat_tag = record
+ wfx:WAVEFORMATEX;
+ end;
+ ECHOSC1WAVEFORMAT = echosc1waveformat_tag;
+ PECHOSC1WAVEFORMAT = ^ECHOSC1WAVEFORMAT;
+ NPECHOSC1WAVEFORMAT = ^ECHOSC1WAVEFORMAT;
+ LPECHOSC1WAVEFORMAT = ^ECHOSC1WAVEFORMAT;
+
+ { }
+ { Audiofile Inc.structure definitions }
+ { }
+ { for WAVE_FORMAT_AUDIOFILE_AF36 (0x0024) }
+ { }
+ { }
+
+ audiofile_af36waveformat_tag = record
+ wfx : WAVEFORMATEX;
+ end;
+ AUDIOFILE_AF36WAVEFORMAT = audiofile_af36waveformat_tag;
+ PAUDIOFILE_AF36WAVEFORMAT = ^AUDIOFILE_AF36WAVEFORMAT;
+ NPAUDIOFILE_AF36WAVEFORMAT = ^AUDIOFILE_AF36WAVEFORMAT;
+ LPAUDIOFILE_AF36WAVEFORMAT = ^AUDIOFILE_AF36WAVEFORMAT;
+
+ { }
+ { Audio Processing Technology structure definitions }
+ { }
+ { for WAVE_FORMAT_APTX (0x0025) }
+ { }
+ { }
+ aptxwaveformat_tag = record
+ wfx : WAVEFORMATEX;
+ end;
+ APTXWAVEFORMAT = aptxwaveformat_tag;
+ PAPTXWAVEFORMAT = ^APTXWAVEFORMAT;
+ NPAPTXWAVEFORMAT = ^APTXWAVEFORMAT;
+ LPAPTXWAVEFORMAT = ^APTXWAVEFORMAT;
+
+ { }
+ { Audiofile Inc.structure definitions }
+ { }
+ { for WAVE_FORMAT_AUDIOFILE_AF10 (0x0026) }
+ { }
+ { }
+ audiofile_af10waveformat_tag = record
+ wfx : WAVEFORMATEX;
+ end;
+ AUDIOFILE_AF10WAVEFORMAT = audiofile_af10waveformat_tag;
+ PAUDIOFILE_AF10WAVEFORMAT = ^AUDIOFILE_AF10WAVEFORMAT;
+ NPAUDIOFILE_AF10WAVEFORMAT = ^AUDIOFILE_AF10WAVEFORMAT;
+ LPAUDIOFILE_AF10WAVEFORMAT = ^AUDIOFILE_AF10WAVEFORMAT;
+
+
+ { }
+ { Dolby's AC-2 wave format structure definition
+ WAVE_FORMAT_DOLBY_AC2 (0x0030) }
+ { }
+ dolbyac2waveformat_tag = record
+ wfx:WAVEFORMATEX;
+ nAuxBitsCode:word;
+ end;
+ DOLBYAC2WAVEFORMAT = dolbyac2waveformat_tag;
+
+ {Microsoft's }
+ { WAVE_FORMAT_GSM 610 0x0031 }
+ { }
+ gsm610waveformat_tag = record
+ wfx : WAVEFORMATEX;
+ wSamplesPerBlock : word;
+ end;
+ GSM610WAVEFORMAT = gsm610waveformat_tag;
+ PGSM610WAVEFORMAT = ^GSM610WAVEFORMAT;
+ NPGSM610WAVEFORMAT = ^GSM610WAVEFORMAT;
+ LPGSM610WAVEFORMAT = ^GSM610WAVEFORMAT;
+
+
+ { }
+ { Antex Electronics Corp }
+ { }
+ { for WAVE_FORMAT_ADPCME (0x0033) }
+ { }
+ { }
+ adpcmewaveformat_tag = record
+ wfx : WAVEFORMATEX;
+ wSamplesPerBlock:word;
+ end;
+ ADPCMEWAVEFORMAT = adpcmewaveformat_tag;
+ PADPCMEWAVEFORMAT = ^ADPCMEWAVEFORMAT;
+ NPADPCMEWAVEFORMAT = ^ADPCMEWAVEFORMAT;
+ LPADPCMEWAVEFORMAT = ^ADPCMEWAVEFORMAT;
+
+
+ { Control Resources Limited }
+ { WAVE_FORMAT_CONTROL_RES_VQLPC 0x0034 }
+ { }
+
+ contres_vqlpcwaveformat_tag = record
+ wfx : WAVEFORMATEX;
+ wSamplesPerBlock :word;
+ end;
+ CONTRESVQLPCWAVEFORMAT = contres_vqlpcwaveformat_tag;
+
+ PCONTRESVQLPCWAVEFORMAT = ^CONTRESVQLPCWAVEFORMAT;
+ (* near ignored *)
+
+ NPCONTRESVQLPCWAVEFORMAT = ^CONTRESVQLPCWAVEFORMAT;
+ (* far ignored *)
+
+ LPCONTRESVQLPCWAVEFORMAT = ^CONTRESVQLPCWAVEFORMAT;
+
+ { for WAVE_FORMAT_DIGIREAL (0x0035) }
+ { }
+ { }
+
+ digirealwaveformat_tag = record
+ wfx : WAVEFORMATEX;
+ wSamplesPerBlock : word;
+ end;
+ DIGIREALWAVEFORMAT = digirealwaveformat_tag;
+
+ PDIGIREALWAVEFORMAT = ^DIGIREALWAVEFORMAT;
+ NPDIGIREALWAVEFORMAT = ^DIGIREALWAVEFORMAT;
+ LPDIGIREALWAVEFORMAT = ^DIGIREALWAVEFORMAT;
+
+ { DSP Solutions }
+ { }
+ { for WAVE_FORMAT_DIGIADPCM (0x0036) }
+ digiadpcmmwaveformat_tag = record
+ wfx : WAVEFORMATEX;
+ wSamplesPerBlock:word;
+ end;
+ DIGIADPCMWAVEFORMAT = digiadpcmmwaveformat_tag;
+
+ PDIGIADPCMWAVEFORMAT = ^DIGIADPCMWAVEFORMAT;
+ (* near ignored *)
+
+ NPDIGIADPCMWAVEFORMAT = ^DIGIADPCMWAVEFORMAT;
+ (* far ignored *)
+
+ LPDIGIADPCMWAVEFORMAT = ^DIGIADPCMWAVEFORMAT;
+
+
+ { Control Resources Limited }
+ { WAVE_FORMAT_CONTROL_RES_CR10 0x0037 }
+ contres_cr10waveformat_tag = record
+ wfx : WAVEFORMATEX;
+ wSamplesPerBlock :word;
+ end;
+ CONTRESCR10WAVEFORMAT = contres_cr10waveformat_tag;
+ PCONTRESCR10WAVEFORMAT = ^CONTRESCR10WAVEFORMAT;
+ NPCONTRESCR10WAVEFORMAT = ^CONTRESCR10WAVEFORMAT;
+ LPCONTRESCR10WAVEFORMAT = ^CONTRESCR10WAVEFORMAT;
+
+ { }
+ { Natural Microsystems }
+ { }
+ { for WAVE_FORMAT_NMS_VBXADPCM (0x0038) }
+ nms_vbxadpcmmwaveformat_tag = record
+ wfx : WAVEFORMATEX;
+ wSamplesPerBlock :word;
+ end;
+ NMS_VBXADPCMWAVEFORMAT = nms_vbxadpcmmwaveformat_tag;
+
+ PNMS_VBXADPCMWAVEFORMAT = ^NMS_VBXADPCMWAVEFORMAT;
+ (* near ignored *)
+
+ NPNMS_VBXADPCMWAVEFORMAT = ^NMS_VBXADPCMWAVEFORMAT;
+ (* far ignored *)
+
+ LPNMS_VBXADPCMWAVEFORMAT = ^NMS_VBXADPCMWAVEFORMAT;
+
+
+ { }
+ { Antex Electronics structure definitions }
+ { }
+ { for WAVE_FORMAT_G721_ADPCM (0x0040) }
+ { }
+ { }
+
+ g721_adpcmwaveformat_tag = record
+ wfx : WAVEFORMATEX;
+ nAuxBlockSize :word;
+ end;
+ G721_ADPCMWAVEFORMAT = g721_adpcmwaveformat_tag;
+
+ PG721_ADPCMWAVEFORMAT = ^G721_ADPCMWAVEFORMAT;
+ (* near ignored *)
+
+ NPG721_ADPCMWAVEFORMAT = ^G721_ADPCMWAVEFORMAT;
+ (* far ignored *)
+
+ LPG721_ADPCMWAVEFORMAT = ^G721_ADPCMWAVEFORMAT;
+
+ { Microsoft MPEG audio WAV definition }
+ { }
+ { MPEG-1 audio wave format (audio layer only). (0x0050) }
+ mpeg1waveformat_tag = record
+ wfx:WAVEFORMATEX;
+ fwHeadLayer:word;
+ dwHeadBitrate:DWORD;
+ fwHeadMode:word;
+ fwHeadModeExt:word;
+ wHeadEmphasis:word;
+ fwHeadFlags:word;
+ dwPTSLow:DWORD;
+ dwPTSHigh:DWORD;
+ end;
+ MPEG1WAVEFORMAT = mpeg1waveformat_tag;
+ PMPEG1WAVEFORMAT = ^MPEG1WAVEFORMAT;
+ NPMPEG1WAVEFORMAT = ^MPEG1WAVEFORMAT;
+ LPMPEG1WAVEFORMAT = ^MPEG1WAVEFORMAT;
+
+const
+ ACM_MPEG_LAYER1 = $0001;
+ ACM_MPEG_LAYER2 = $0002;
+ ACM_MPEG_LAYER3 = $0004;
+ ACM_MPEG_STEREO = $0001;
+ ACM_MPEG_JOINTSTEREO = $0002;
+ ACM_MPEG_DUALCHANNEL = $0004;
+ ACM_MPEG_SINGLECHANNEL = $0008;
+ ACM_MPEG_PRIVATEBIT = $0001;
+ ACM_MPEG_COPYRIGHT = $0002;
+ ACM_MPEG_ORIGINALHOME = $0004;
+ ACM_MPEG_PROTECTIONBIT = $0008;
+ ACM_MPEG_ID_MPEG1 = $0010;
+
+ { MPEG Layer3 WAVEFORMATEX structure }
+ { for WAVE_FORMAT_MPEGLAYER3 (0x0055) }
+ MPEGLAYER3_WFX_EXTRA_BYTES = 12;
+ { WAVE_FORMAT_MPEGLAYER3 format sructure }
+
+type
+ mpeglayer3waveformat_tag = record
+ wfx:WAVEFORMATEX;
+ wID:word;
+ fdwFlags:DWORD;
+ nBlockSize:WORD;
+ nFramesPerBlock:word;
+ nCodecDelay:word;
+ end;
+ MPEGLAYER3WAVEFORMAT = mpeglayer3waveformat_tag;
+ PMPEGLAYER3WAVEFORMAT = ^MPEGLAYER3WAVEFORMAT;
+ NPMPEGLAYER3WAVEFORMAT = ^MPEGLAYER3WAVEFORMAT;
+ LPMPEGLAYER3WAVEFORMAT = ^MPEGLAYER3WAVEFORMAT;
+
+ {==========================================================================; }
+
+const
+ MPEGLAYER3_ID_UNKNOWN = 0;
+ MPEGLAYER3_ID_MPEG = 1;
+ MPEGLAYER3_ID_CONSTANTFRAMESIZE = 2;
+
+ MPEGLAYER3_FLAG_PADDING_ISO = $00000000;
+ MPEGLAYER3_FLAG_PADDING_ON = $00000001;
+ MPEGLAYER3_FLAG_PADDING_OFF = $00000002;
+
+ { Creative's ADPCM structure definitions }
+ { }
+ { for WAVE_FORMAT_CREATIVE_ADPCM (0x0200) }
+
+type
+ creative_adpcmwaveformat_tag = record
+ wfx:WAVEFORMATEX;
+ wRevision:word;
+ end;
+ CREATIVEADPCMWAVEFORMAT = creative_adpcmwaveformat_tag;
+ PCREATIVEADPCMWAVEFORMAT = ^CREATIVEADPCMWAVEFORMAT;
+ NPCREATIVEADPCMWAVEFORMAT = ^CREATIVEADPCMWAVEFORMAT;
+ LPCREATIVEADPCMWAVEFORMAT = ^CREATIVEADPCMWAVEFORMAT;
+
+ { }
+ { Creative FASTSPEECH }
+ { WAVEFORMAT_CREATIVE_FASTSPEECH8 (0x0202) }
+ { }
+
+ creative_fastspeech8format_tag = record
+ wfx : WAVEFORMATEX;
+ wRevision : word;
+ end;
+ CREATIVEFASTSPEECH8WAVEFORMAT = creative_fastspeech8format_tag;
+
+ PCREATIVEFASTSPEECH8WAVEFORMAT = ^CREATIVEFASTSPEECH8WAVEFORMAT;
+ (* near ignored *)
+
+ NPCREATIVEFASTSPEECH8WAVEFORMAT = ^CREATIVEFASTSPEECH8WAVEFORMAT;
+ (* far ignored *)
+
+ LPCREATIVEFASTSPEECH8WAVEFORMAT = ^CREATIVEFASTSPEECH8WAVEFORMAT;
+
+ { }
+ { Creative FASTSPEECH }
+ { WAVEFORMAT_CREATIVE_FASTSPEECH10 (0x0203) }
+ { }
+ creative_fastspeech10format_tag = record
+ wfx : WAVEFORMATEX;
+ wRevision : word;
+ end;
+ CREATIVEFASTSPEECH10WAVEFORMAT = creative_fastspeech10format_tag;
+
+ PCREATIVEFASTSPEECH10WAVEFORMAT = ^CREATIVEFASTSPEECH10WAVEFORMAT;
+ (* near ignored *)
+
+ NPCREATIVEFASTSPEECH10WAVEFORMAT = ^CREATIVEFASTSPEECH10WAVEFORMAT;
+ (* far ignored *)
+
+ LPCREATIVEFASTSPEECH10WAVEFORMAT = ^CREATIVEFASTSPEECH10WAVEFORMAT;
+
+ { }
+ { Fujitsu FM Towns 'SND' structure }
+ { }
+ { for WAVE_FORMAT_FMMTOWNS_SND (0x0300) }
+ { }
+ { }
+
+ fmtowns_snd_waveformat_tag = record
+ wfx : WAVEFORMATEX;
+ wRevision : word;
+ end;
+ FMTOWNS_SND_WAVEFORMAT = fmtowns_snd_waveformat_tag;
+
+ PFMTOWNS_SND_WAVEFORMAT = ^FMTOWNS_SND_WAVEFORMAT;
+ (* near ignored *)
+
+ NPFMTOWNS_SND_WAVEFORMAT = ^FMTOWNS_SND_WAVEFORMAT;
+ (* far ignored *)
+
+ LPFMTOWNS_SND_WAVEFORMAT = ^FMTOWNS_SND_WAVEFORMAT;
+
+ { Olivetti structure }
+ { }
+ { for WAVE_FORMAT_OLIGSM (0x1000) }
+
+ oligsmwaveformat_tag = record
+ wfx : WAVEFORMATEX;
+ end;
+ OLIGSMWAVEFORMAT = oligsmwaveformat_tag;
+
+ POLIGSMWAVEFORMAT = ^OLIGSMWAVEFORMAT;
+ (* near ignored *)
+
+ NPOLIGSMWAVEFORMAT = ^OLIGSMWAVEFORMAT;
+ (* far ignored *)
+
+ LPOLIGSMWAVEFORMAT = ^OLIGSMWAVEFORMAT;
+
+ { }
+ { Olivetti structure }
+ { }
+ { for WAVE_FORMAT_OLIADPCM (0x1001) }
+ { }
+ { }
+ oliadpcmwaveformat_tag = record
+ wfx : WAVEFORMATEX;
+ end;
+ OLIADPCMWAVEFORMAT = oliadpcmwaveformat_tag;
+
+ POLIADPCMWAVEFORMAT = ^OLIADPCMWAVEFORMAT;
+ (* near ignored *)
+
+ NPOLIADPCMWAVEFORMAT = ^OLIADPCMWAVEFORMAT;
+ (* far ignored *)
+
+ LPOLIADPCMWAVEFORMAT = ^OLIADPCMWAVEFORMAT;
+
+ { }
+ { Olivetti structure }
+ { }
+ { for WAVE_FORMAT_OLICELP (0x1002) }
+ olicelpwaveformat_tag = record
+ wfx : WAVEFORMATEX;
+ end;
+ OLICELPWAVEFORMAT = olicelpwaveformat_tag;
+ POLICELPWAVEFORMAT = ^OLICELPWAVEFORMAT;
+ NPOLICELPWAVEFORMAT = ^OLICELPWAVEFORMAT;
+ LPOLICELPWAVEFORMAT = ^OLICELPWAVEFORMAT;
+
+ { }
+ { Olivetti structure }
+ { }
+ { for WAVE_FORMAT_OLISBC (0x1003) }
+ { }
+ { }
+
+ olisbcwaveformat_tag = record
+ wfx : WAVEFORMATEX;
+ end;
+ OLISBCWAVEFORMAT = olisbcwaveformat_tag;
+
+ POLISBCWAVEFORMAT = ^OLISBCWAVEFORMAT;
+ (* near ignored *)
+
+ NPOLISBCWAVEFORMAT = ^OLISBCWAVEFORMAT;
+ (* far ignored *)
+
+ LPOLISBCWAVEFORMAT = ^OLISBCWAVEFORMAT;
+
+ { }
+ { Olivetti structure }
+ { }
+ { for WAVE_FORMAT_OLIOPR (0x1004) }
+ { }
+ { }
+ olioprwaveformat_tag = record
+ wfx : WAVEFORMATEX;
+ end;
+ OLIOPRWAVEFORMAT = olioprwaveformat_tag;
+
+ POLIOPRWAVEFORMAT = ^OLIOPRWAVEFORMAT;
+ (* near ignored *)
+
+ NPOLIOPRWAVEFORMAT = ^OLIOPRWAVEFORMAT;
+ (* far ignored *)
+
+ LPOLIOPRWAVEFORMAT = ^OLIOPRWAVEFORMAT;
+
+ { }
+ { Crystal Semiconductor IMA ADPCM format }
+ { }
+ { for WAVE_FORMAT_CS_IMAADPCM (0x0039) }
+ { }
+ { }
+
+ csimaadpcmwaveformat_tag = record
+ wfx : WAVEFORMATEX;
+ end;
+ CSIMAADPCMWAVEFORMAT = csimaadpcmwaveformat_tag;
+
+ PCSIMAADPCMWAVEFORMAT = ^CSIMAADPCMWAVEFORMAT;
+ (* near ignored *)
+
+ NPCSIMAADPCMWAVEFORMAT = ^CSIMAADPCMWAVEFORMAT;
+ (* far ignored *)
+
+ LPCSIMAADPCMWAVEFORMAT = ^CSIMAADPCMWAVEFORMAT;
+
+{==========================================================================; }
+{ }
+{ ACM Wave Filters }
+{ }
+{ }
+{==========================================================================; }
+const
+ WAVE_FILTER_UNKNOWN = $0000;
+ WAVE_FILTER_DEVELOPMENT = $FFFF;
+
+type
+ wavefilter_tag = record
+ cbStruct:DWORD; //* Size of the filter in bytes */
+ dwFilterTag:DWORD; //* filter type */
+ fdwFilter:DWORD; //* Flags for the filter (Universal Dfns) */
+ dwReserved:array[0..4] of DWORD; //* Reserved for system use */
+ end;
+ WAVEFILTER = wavefilter_tag;
+ PWAVEFILTER = ^WAVEFILTER;
+ NPWAVEFILTER = ^WAVEFILTER;
+ LPWAVEFILTER = ^WAVEFILTER;
+
+const
+ WAVE_FILTER_VOLUME = $0001;
+
+type
+ wavefilter_volume_tag = record
+ wfltr:WAVEFILTER;
+ dwVolume:DWORD;
+ end;
+ VOLUMEWAVEFILTER = wavefilter_volume_tag;
+ PVOLUMEWAVEFILTER = ^VOLUMEWAVEFILTER;
+ NPVOLUMEWAVEFILTER = ^VOLUMEWAVEFILTER;
+ LPVOLUMEWAVEFILTER = ^VOLUMEWAVEFILTER;
+
+const
+ WAVE_FILTER_ECHO = $0002;
+
+type
+ wavefilter_echo_tag = record
+ wfltr:WAVEFILTER;
+ dwVolume:DWORD;
+ dwDelay:DWORD;
+ end;
+ ECHOWAVEFILTER = wavefilter_echo_tag;
+ PECHOWAVEFILTER = ^ECHOWAVEFILTER;
+ NPECHOWAVEFILTER = ^ECHOWAVEFILTER;
+ LPECHOWAVEFILTER = ^ECHOWAVEFILTER;
+
+//////////////////////////////////////////////////////////////////////////
+//
+// New RIFF WAVE Chunks
+//
+const
+ RIFFWAVE_inst = FOURCC(byte(AnsiChar('i')) or
+ (byte(AnsiChar('n')) shl 8) or
+ (byte(AnsiChar('s')) shl 16) or
+ (byte(AnsiChar('t')) shl 24)
+ );
+
+type
+ tag_s_RIFFWAVE_inst = record
+ bUnshiftedNote:byte;
+ chFineTune:ShortInt;
+ chGain:ShortInt;
+ bLowNote:byte;
+ bHighNote:byte;
+ bLowVelocity:byte;
+ bHighVelocity:byte;
+ end;
+ s_RIFFWAVE_inst = tag_s_RIFFWAVE_INST;
+
+{$ENDIF} // NONEWWAVE
+
+//////////////////////////////////////////////////////////////////////////
+//
+// New RIFF Forms
+//
+
+{$IFNDEF NONEWRIFF}
+
+// RIFF AVI
+//
+// AVI file format is specified in a seperate file (AVIFMT.H),
+// which is available in the VfW and Win 32 SDK
+//
+
+// RIFF CPPO
+const
+ RIFFCPPO = FOURCC(byte(AnsiChar('C')) or
+ (byte(AnsiChar('P')) shl 8) or
+ (byte(AnsiChar('P')) shl 16) or
+ (byte(AnsiChar('O')) shl 24)
+ );
+
+ RIFFCPPO_objr = FOURCC(byte(AnsiChar('o')) or
+ (byte(AnsiChar('b')) shl 8) or
+ (byte(AnsiChar('j')) shl 16) or
+ (byte(AnsiChar('r')) shl 24)
+ );
+
+ RIFFCPPO_obji = FOURCC(byte(AnsiChar('o')) or
+ (byte(AnsiChar('b')) shl 8) or
+ (byte(AnsiChar('j')) shl 16) or
+ (byte(AnsiChar('i')) shl 24)
+ );
+
+ RIFFCPPO_clsr = FOURCC(byte(AnsiChar('c')) or
+ (byte(AnsiChar('l')) shl 8) or
+ (byte(AnsiChar('s')) shl 16) or
+ (byte(AnsiChar('r')) shl 24)
+ );
+
+ RIFFCPPO_clsi = FOURCC(byte(AnsiChar('c')) or
+ (byte(AnsiChar('l')) shl 8) or
+ (byte(AnsiChar('s')) shl 16) or
+ (byte(AnsiChar('i')) shl 24)
+ );
+
+ RIFFCPPO_mbr = FOURCC(byte(AnsiChar('m')) or
+ (byte(AnsiChar('b')) shl 8) or
+ (byte(AnsiChar('r')) shl 16) or
+ (byte(AnsiChar(' ')) shl 24)
+ );
+
+ RIFFCPPO_char = FOURCC(byte(AnsiChar('c')) or
+ (byte(AnsiChar('h')) shl 8) or
+ (byte(AnsiChar('a')) shl 16) or
+ (byte(AnsiChar('r')) shl 24)
+ );
+
+ RIFFCPPO_byte = FOURCC(byte(AnsiChar('b')) or
+ (byte(AnsiChar('y')) shl 8) or
+ (byte(AnsiChar('t')) shl 16) or
+ (byte(AnsiChar('e')) shl 24)
+ );
+ RIFFCPPO_int = FOURCC(byte(AnsiChar('i')) or
+ (byte(AnsiChar('n')) shl 8) or
+ (byte(AnsiChar('t')) shl 16) or
+ (byte(AnsiChar(' ')) shl 24)
+ );
+
+ RIFFCPPO_word = FOURCC(byte(AnsiChar('w')) or
+ (byte(AnsiChar('o')) shl 8) or
+ (byte(AnsiChar('r')) shl 16) or
+ (byte(AnsiChar('d')) shl 24)
+ );
+ RIFFCPPO_long = FOURCC(byte(AnsiChar('l')) or
+ (byte(AnsiChar('o')) shl 8) or
+ (byte(AnsiChar('n')) shl 16) or
+ (byte(AnsiChar('g')) shl 24)
+ );
+ RIFFCPPO_dwrd = FOURCC(byte(AnsiChar('d')) or
+ (byte(AnsiChar('w')) shl 8) or
+ (byte(AnsiChar('r')) shl 16) or
+ (byte(AnsiChar('d')) shl 24)
+ );
+ RIFFCPPO_flt = FOURCC(byte(AnsiChar('f')) or
+ (byte(AnsiChar('l')) shl 8) or
+ (byte(AnsiChar('t')) shl 16) or
+ (byte(AnsiChar(' ')) shl 24)
+ );
+ RIFFCPPO_dbl = FOURCC(byte(AnsiChar('d')) or
+ (byte(AnsiChar('b')) shl 8) or
+ (byte(AnsiChar('l')) shl 16) or
+ (byte(AnsiChar(' ')) shl 24)
+ );
+ RIFFCPPO_str = FOURCC(byte(AnsiChar('s')) or
+ (byte(AnsiChar('t')) shl 8) or
+ (byte(AnsiChar('r')) shl 16) or
+ (byte(AnsiChar(' ')) shl 24)
+ );
+
+{$ENDIF} // NONEWRIFF
+
+
+//////////////////////////////////////////////////////////////////////////
+//
+// DIB Compression Defines
+//
+
+const
+ BI_BITFIELDS = 3;
+
+const
+ QUERYDIBSUPPORT = 3073;
+ QDI_SETDIBITS = $0001;
+ QDI_GETDIBITS = $0002;
+ QDI_DIBTOSCREEN = $0004;
+ QDI_STRETCHDIB = $0008;
+
+{ @CESYSGEN IF GWES_PGDI || GWES_MGBASE }
+
+{$IFNDEF NOBITMAP}
+type
+ tagEXBMINFOHEADER = record
+ bmi:BITMAPINFOHEADER;
+ // extended BITMAPINFOHEADER fields
+ biExtDataOffset:DWORD;
+ // Other elements will go here
+
+ // ...
+ // Format-specific information
+ // biExtDataOffset points here
+ end;
+ EXBMINFOHEADER = tagEXBMINFOHEADER;
+{$ENDIF} // NOBITMAP
+
+{ @CESYSGEN ENDIF }
+
+// New DIB Compression Defines
+const
+ BICOMP_IBMULTIMOTION = FOURCC(byte(AnsiChar('U')) or
+ (byte(AnsiChar('L')) shl 8) or
+ (byte(AnsiChar('T')) shl 16) or
+ (byte(AnsiChar('I')) shl 24)
+ );
+
+ BICOMP_IBMPHOTOMOTION = FOURCC(byte(AnsiChar('P')) or
+ (byte(AnsiChar('H')) shl 8) or
+ (byte(AnsiChar('M')) shl 16) or
+ (byte(AnsiChar('O')) shl 24)
+ );
+
+ BICOMP_CREATIVEYUV = FOURCC(byte(AnsiChar('c')) or
+ (byte(AnsiChar('y')) shl 8) or
+ (byte(AnsiChar('u')) shl 16) or
+ (byte(AnsiChar('v')) shl 24)
+ );
+
+
+{$IFNDEF NOJPEGDIB}
+// New DIB Compression Defines
+const
+ JPEG_DIB = FOURCC(byte(AnsiChar('J')) or
+ (byte(AnsiChar('P')) shl 8) or
+ (byte(AnsiChar('E')) shl 16) or
+ (byte(AnsiChar('G')) shl 24)
+ ); // Still image JPEG DIB biCompression
+
+ MJPG_DIB = FOURCC(byte(AnsiChar('M')) or
+ (byte(AnsiChar('J')) shl 8) or
+ (byte(AnsiChar('P')) shl 16) or
+ (byte(AnsiChar('G')) shl 24)
+ ); // Motion JPEG DIB biCompression
+
+{ JPEGProcess Definitions }
+const
+ JPEG_PROCESS_BASELINE = 0; { Baseline DCT }
+ { AVI File format extensions }
+ AVIIF_CONTROLFRAME = $00000200; { This is a control frame }
+
+ { JIF Marker byte pairs in JPEG Interchange Format sequence }
+ { SOF Huff - Baseline DCT }
+ JIFMK_SOF0 = $FFC0;
+ { SOF Huff - Extended sequential DCT }
+ JIFMK_SOF1 = $FFC1;
+ { SOF Huff - Progressive DCT }
+ JIFMK_SOF2 = $FFC2;
+ { SOF Huff - Spatial (sequential) lossless }
+ JIFMK_SOF3 = $FFC3;
+ { SOF Huff - Differential sequential DCT }
+ JIFMK_SOF5 = $FFC5;
+ { SOF Huff - Differential progressive DCT }
+ JIFMK_SOF6 = $FFC6;
+ { SOF Huff - Differential spatial }
+ JIFMK_SOF7 = $FFC7;
+ { SOF Arith - Reserved for JPEG extensions }
+ JIFMK_JPG = $FFC8;
+ { SOF Arith - Extended sequential DCT }
+ JIFMK_SOF9 = $FFC9;
+ { SOF Arith - Progressive DCT }
+ JIFMK_SOF10 = $FFCA;
+ { SOF Arith - Spatial (sequential) lossless }
+ JIFMK_SOF11 = $FFCB;
+ { SOF Arith - Differential sequential DCT }
+ JIFMK_SOF13 = $FFCD;
+ { SOF Arith - Differential progressive DCT }
+ JIFMK_SOF14 = $FFCE;
+ { SOF Arith - Differential spatial }
+ JIFMK_SOF15 = $FFCF;
+ { Define Huffman Table(s) }
+ JIFMK_DHT = $FFC4;
+ { Define Arithmetic coding conditioning(s) }
+ JIFMK_DAC = $FFCC;
+ { Restart with modulo 8 count 0 }
+ JIFMK_RST0 = $FFD0;
+ { Restart with modulo 8 count 1 }
+ JIFMK_RST1 = $FFD1;
+ { Restart with modulo 8 count 2 }
+ JIFMK_RST2 = $FFD2;
+ { Restart with modulo 8 count 3 }
+ JIFMK_RST3 = $FFD3;
+ { Restart with modulo 8 count 4 }
+ JIFMK_RST4 = $FFD4;
+ { Restart with modulo 8 count 5 }
+ JIFMK_RST5 = $FFD5;
+ { Restart with modulo 8 count 6 }
+ JIFMK_RST6 = $FFD6;
+ { Restart with modulo 8 count 7 }
+ JIFMK_RST7 = $FFD7;
+ { Start of Image }
+ JIFMK_SOI = $FFD8;
+ { End of Image }
+ JIFMK_EOI = $FFD9;
+ { Start of Scan }
+ JIFMK_SOS = $FFDA;
+ { Define quantization Table(s) }
+ JIFMK_DQT = $FFDB;
+ { Define Number of Lines }
+ JIFMK_DNL = $FFDC;
+ { Define Restart Interval }
+ JIFMK_DRI = $FFDD;
+ { Define Hierarchical progression }
+ JIFMK_DHP = $FFDE;
+ { Expand Reference Component(s) }
+ JIFMK_EXP = $FFDF;
+ { Application Field 0 }
+ JIFMK_APP0 = $FFE0;
+ { Application Field 1 }
+ JIFMK_APP1 = $FFE1;
+ { Application Field 2 }
+ JIFMK_APP2 = $FFE2;
+ { Application Field 3 }
+ JIFMK_APP3 = $FFE3;
+ { Application Field 4 }
+ JIFMK_APP4 = $FFE4;
+ { Application Field 5 }
+ JIFMK_APP5 = $FFE5;
+ { Application Field 6 }
+ JIFMK_APP6 = $FFE6;
+ { Application Field 7 }
+ JIFMK_APP7 = $FFE7;
+ { Reserved for JPEG extensions }
+ JIFMK_JPG0 = $FFF0;
+ { Reserved for JPEG extensions }
+ JIFMK_JPG1 = $FFF1;
+ { Reserved for JPEG extensions }
+ JIFMK_JPG2 = $FFF2;
+ { Reserved for JPEG extensions }
+ JIFMK_JPG3 = $FFF3;
+ { Reserved for JPEG extensions }
+ JIFMK_JPG4 = $FFF4;
+ { Reserved for JPEG extensions }
+ JIFMK_JPG5 = $FFF5;
+ { Reserved for JPEG extensions }
+ JIFMK_JPG6 = $FFF6;
+ { Reserved for JPEG extensions }
+ JIFMK_JPG7 = $FFF7;
+ { Reserved for JPEG extensions }
+ JIFMK_JPG8 = $FFF8;
+ { Reserved for JPEG extensions }
+ JIFMK_JPG9 = $FFF9;
+ { Reserved for JPEG extensions }
+ JIFMK_JPG10 = $FFFA;
+ { Reserved for JPEG extensions }
+ JIFMK_JPG11 = $FFFB;
+ { Reserved for JPEG extensions }
+ JIFMK_JPG12 = $FFFC;
+ { Reserved for JPEG extensions }
+ JIFMK_JPG13 = $FFFD;
+ { Comment }
+ JIFMK_COM = $FFFE;
+ { for temp private use arith code }
+ JIFMK_TEM = $FF01;
+ { Reserved }
+ JIFMK_RES = $FF02;
+ { Zero stuffed byte - entropy data }
+ JIFMK_00 = $FF00;
+ { Fill byte }
+ JIFMK_FF = $FFFF;
+
+ { JPEGColorSpaceID Definitions }
+ { Y only component of YCbCr }
+ JPEG_Y = 1;
+ { YCbCr as define by CCIR 601 }
+ JPEG_YCbCr = 2;
+ { 3 component RGB }
+ JPEG_RGB = 3;
+ { Structure definitions }
+ { compression-specific fields }
+ { these fields are defined for 'JPEG' and 'MJPG' }
+ { Process specific fields }
+
+type
+ tagJPEGINFOHEADER = record
+ // compression-specific fields
+ // these fields are defined for 'JPEG' and 'MJPG'
+ JPEGSize:DWORD;
+ JPEGProcess:DWORD;
+
+ // Process specific fields
+ JPEGColorSpaceID:DWORD;
+ JPEGBitsPerSample:DWORD;
+ JPEGHSubSampling:DWORD;
+ JPEGVSubSampling:DWORD;
+ end;
+ JPEGINFOHEADER = tagJPEGINFOHEADER;
+
+{$IFDEF MJPGDHTSEG_STORAGE}
+// Default DHT Segment
+const
+ // JPEG DHT Segment for YCrCb omitted from MJPG data
+ MJPGDHTSeg:array[0..$01A4-1] of byte =
+ ($FF,$C4,$01,$A2,$00,$00,$01,$05,$01,$01,$01,$01,$01,$01,
+ $00,$00,$00,$00,$00,$00,$00,$00,$01,$02,$03,$04,$05,$06,
+ $07,$08,$09,$0A,$0B,$01,$00,$03,$01,$01,$01,$01,$01,$01,
+ $01,$01,$01,$00,$00,$00,$00,$00,$00,$01,$02,$03,$04,$05,
+ $06,$07,$08,$09,$0A,$0B,$10,$00,$02,$01,$03,$03,$02,$04,
+ $03,$05,$05,$04,$04,$00,$00,$01,$7D,$01,$02,$03,$00,$04,
+ $11,$05,$12,$21,$31,$41,$06,$13,$51,$61,$07,$22,$71,$14,
+ $32,$81,$91,$A1,$08,$23,$42,$B1,$C1,$15,$52,$D1,$F0,$24,
+ $33,$62,$72,$82,$09,$0A,$16,$17,$18,$19,$1A,$25,$26,$27,
+ $28,$29,$2A,$34,$35,$36,$37,$38,$39,$3A,$43,$44,$45,$46,
+ $47,$48,$49,$4A,$53,$54,$55,$56,$57,$58,$59,$5A,$63,$64,
+ $65,$66,$67,$68,$69,$6A,$73,$74,$75,$76,$77,$78,$79,$7A,
+ $83,$84,$85,$86,$87,$88,$89,$8A,$92,$93,$94,$95,$96,$97,
+ $98,$99,$9A,$A2,$A3,$A4,$A5,$A6,$A7,$A8,$A9,$AA,$B2,$B3,
+ $B4,$B5,$B6,$B7,$B8,$B9,$BA,$C2,$C3,$C4,$C5,$C6,$C7,$C8,
+ $C9,$CA,$D2,$D3,$D4,$D5,$D6,$D7,$D8,$D9,$DA,$E1,$E2,$E3,
+ $E4,$E5,$E6,$E7,$E8,$E9,$EA,$F1,$F2,$F3,$F4,$F5,$F6,$F7,
+ $F8,$F9,$FA,$11,$00,$02,$01,$02,$04,$04,$03,$04,$07,$05,
+ $04,$04,$00,$01,$02,$77,$00,$01,$02,$03,$11,$04,$05,$21,
+ $31,$06,$12,$41,$51,$07,$61,$71,$13,$22,$32,$81,$08,$14,
+ $42,$91,$A1,$B1,$C1,$09,$23,$33,$52,$F0,$15,$62,$72,$D1,
+ $0A,$16,$24,$34,$E1,$25,$F1,$17,$18,$19,$1A,$26,$27,$28,
+ $29,$2A,$35,$36,$37,$38,$39,$3A,$43,$44,$45,$46,$47,$48,
+ $49,$4A,$53,$54,$55,$56,$57,$58,$59,$5A,$63,$64,$65,$66,
+ $67,$68,$69,$6A,$73,$74,$75,$76,$77,$78,$79,$7A,$82,$83,
+ $84,$85,$86,$87,$88,$89,$8A,$92,$93,$94,$95,$96,$97,$98,
+ $99,$9A,$A2,$A3,$A4,$A5,$A6,$A7,$A8,$A9,$AA,$B2,$B3,$B4,
+ $B5,$B6,$B7,$B8,$B9,$BA,$C2,$C3,$C4,$C5,$C6,$C7,$C8,$C9,
+ $CA,$D2,$D3,$D4,$D5,$D6,$D7,$D8,$D9,$DA,$E2,$E3,$E4,$E5,
+ $E6,$E7,$E8,$E9,$EA,$F2,$F3,$F4,$F5,$F6,$F7,$F8,$F9,$FA
+ );
+
+// End DHT default
+{$ENDIF} // MJPGDHTSEG_STORAGE
+
+{$ENDIF} // NOJPEGDIB
+
+
+//////////////////////////////////////////////////////////////////////////
+//
+// Defined IC types
+
+{$IFNDEF NONEWIC}
+const
+ ICTYPE_VIDEO = FOURCC(byte(AnsiChar('v')) or
+ (byte(AnsiChar('i')) shl 8) or
+ (byte(AnsiChar('d')) shl 16) or
+ (byte(AnsiChar('c')) shl 24)
+ );
+
+ ICTYPE_AUDIO = FOURCC(byte(AnsiChar('a')) or
+ (byte(AnsiChar('u')) shl 8) or
+ (byte(AnsiChar('d')) shl 16) or
+ (byte(AnsiChar('c')) shl 24)
+ );
+{$ENDIF} // NONEWIC
+
+
+// Misc. FOURCC registration
+
+{* Sierra Semiconductor: RDSP- Confidential RIFF file format
+// for the storage and downloading of DSP
+// code for Audio and communications devices.
+*}
+const
+ FOURCC_RDSP = FOURCC(byte(AnsiChar('R')) or
+ (byte(AnsiChar('D')) shl 8) or
+ (byte(AnsiChar('S')) shl 16) or
+ (byte(AnsiChar('P')) shl 24)
+ );
+
+{$PACKRECORDS DEFAULT} // {#include "poppack.h" /* Revert to default packing */ }
+
+implementation
+
+end.
diff --git a/packages/winceunits/src/mmsystem.pp b/packages/winceunits/src/mmsystem.pp
new file mode 100644
index 0000000000..ec49ff2135
--- /dev/null
+++ b/packages/winceunits/src/mmsystem.pp
@@ -0,0 +1,1881 @@
+{
+ 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 Name:mmsystem.h -- Include file for Multimedia API's
+//
+// * If defined, the following flags inhibit inclusion
+// * of the indicated items:
+// *
+// * MMNOSOUND Sound support
+// * MMNOWAVE Waveform support
+// * MMNOMCI MCI API
+// * MMNOMMIO file I/O
+// *
+// *
+
+//
+// Microsoft Windows Mobile 6.0 for PocketPC SDK.
+//
+
+unit mmsystem;
+
+{$CALLING cdecl}
+
+interface
+
+uses Windows, mmreg;
+
+{$PACKRECORDS 1} // #include "pshpack1.h" // Assume byte packing throughout
+
+{$DEFINE MMNOMIDI} // No midi audio support.
+
+{$IFDEF WIN32}
+{$DEFINE _WIN32}
+{$ENDIF WIN32}
+
+{****************************************************************************
+
+ General constants and data types
+
+****************************************************************************}
+//* general constants */
+const
+ MAXPNAMELEN = 32; // max product name length (including NULL)
+ MAXERRORLENGTH = 128; // max error text length (including final NULL)
+
+{*
+ * Microsoft Manufacturer and Product ID's
+ *
+ Used with wMid and wPid fields in WAVEOUTCAPS, WAVEINCAPS,
+ MIDIOUTCAPS, MIDIINCAPS, AUXCAPS, JOYCAPS structures.
+ *}
+{*
+ * (these have been moved to
+ * MMREG.H for Windows 4.00 and above).
+ *}
+//* manufacturer IDs *
+const
+ MM_MICROSOFT = 1; // Microsoft Corporation
+
+
+//* general data types */
+type
+ MMVERSION = UINT; // major (high byte), minor (low byte)
+
+ MMRESULT = UINT; // error return code, 0 means no error
+ // call as if(err=xxxx(...)) Error(err); else
+
+ LPUINT = ^UINT;
+
+
+//* MMTIME data structure */
+type
+ mmtime_tag = record
+ wType:UINT; //* indicates the contents of the union */
+ case UINT of
+ 0: (ms:DWORD); //* milliseconds */
+ 1: (sample:DWORD); //* samples */
+ 2: (cb:DWORD); //* byte count */
+ 3: (ticks:DWORD); //* ticks in MIDI stream */
+ 4: (smpte:record
+ hour:byte; //* hours */
+ min:byte; //* minutes */
+ sec:byte; //* seconds */
+ frame:byte; //* frames */
+ fps:byte; //* frames per second */
+ dummy:byte; //* pad */
+{$IFDEF _WIN32}
+ pad:array[0..1] of byte;
+{$ENDIF _WIN32}
+ end);
+ 5: (midi:record
+ songptrpos:DWORD; //* song pointer position */
+ end);
+ end;
+ MMTIME = mmtime_tag;
+ PMMTIME = ^mmtime_tag;
+ NPMMTIME = ^mmtime_tag;
+ LPMMTIME = ^mmtime_tag;
+
+//* types for wType field in MMTIME struct */
+const
+ TIME_MS = $0001; //* time in milliseconds */
+ TIME_SAMPLES = $0002; //* number of wave samples */
+ TIME_BYTES = $0004; //* current byte offset */
+ TIME_SMPTE = $0008; //* SMPTE time */
+ TIME_MIDI = $0010; //* MIDI time */
+ TIME_TICKS = $0020; //* Ticks within MIDI stream */
+
+{ Was declared as
+ MAKEFOURCC(ch0, ch1, ch2, ch3) \
+ ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \
+ ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
+
+ mmioFOURCC(ch0, ch1, ch2, ch3) MAKEFOURCC(ch0, ch1, ch2, ch3)
+}
+function MAKEFOURCC(ch0:AnsiChar; ch1:AnsiChar; ch2:AnsiChar; ch3:AnsiChar):FOURCC;
+function mmioFOURCC(ch0:AnsiChar; ch1:AnsiChar; ch2:AnsiChar; ch3:AnsiChar):FOURCC;
+
+
+{****************************************************************************
+
+ Multimedia Extensions Window Messages
+
+****************************************************************************}
+const
+ MM_MCINOTIFY = $3B9; //* MCI */
+
+ MM_WOM_OPEN = $3BB; //* waveform output */
+ MM_WOM_CLOSE = $3BC;
+ MM_WOM_DONE = $3BD;
+ MM_WOM_ATTENUATED = $3D8; //* gain class support - stream attenuated */
+
+ MM_WIM_OPEN = $3BE; //* waveform input */
+ MM_WIM_CLOSE = $3BF;
+ MM_WIM_DATA = $3C0;
+
+ MM_MIM_OPEN = $3C1; //* MIDI input */
+ MM_MIM_CLOSE = $3C2;
+ MM_MIM_DATA = $3C3;
+ MM_MIM_LONGDATA = $3C4;
+ MM_MIM_ERROR = $3C5;
+ MM_MIM_LONGERROR = $3C6;
+
+ MM_MOM_OPEN = $3C7; //* MIDI output */
+ MM_MOM_CLOSE = $3C8;
+ MM_MOM_DONE = $3C9;
+
+//* these are also in msvideo.h */
+ MM_DRVM_OPEN = $3D0; //* installable drivers */
+ MM_DRVM_CLOSE = $3D1;
+ MM_DRVM_DATA = $3D2;
+ MM_DRVM_ERROR = $3D3;
+
+ MM_MCISYSTEM_STRING = $3CA; //* internal */
+
+//* these are used by msacm.h */
+ MM_STREAM_OPEN = $3D4;
+ MM_STREAM_CLOSE = $3D5;
+ MM_STREAM_DONE = $3D6;
+ MM_STREAM_ERROR = $3D7;
+
+ MM_MOM_POSITIONCB = $3CA; //* Callback for MEVT_POSITIONCB */
+
+ MM_MCISIGNAL = $3CB;
+
+ MM_MIM_MOREDATA = $3CC; //* MIM_DONE w/ pending events */
+
+ MM_MIXM_LINE_CHANGE = $3D0; //* mixer line change notify */
+ MM_MIXM_CONTROL_CHANGE = $3D1; //* mixer control change notify */
+
+{****************************************************************************
+
+ String resource number bases (internal use)
+
+****************************************************************************}
+const
+ MMSYSERR_BASE = 0;
+ WAVERR_BASE = 32;
+ MIDIERR_BASE = 64;
+ TIMERR_BASE = 96;
+ MCIERR_BASE = 256;
+ MIXERR_BASE = 1024;
+
+ MCI_STRING_OFFSET = 512;
+ MCI_VD_OFFSET = 1024;
+ MCI_CD_OFFSET = 1088;
+ MCI_WAVE_OFFSET = 1152;
+ MCI_SEQ_OFFSET = 1216;
+
+{****************************************************************************
+
+ General error return values
+
+****************************************************************************}
+const
+//* general error return values */
+ MMSYSERR_NOERROR = 0; //* no error */
+ MMSYSERR_ERROR = MMSYSERR_BASE + 1; //* unspecified error */
+ MMSYSERR_BADDEVICEID = MMSYSERR_BASE + 2; //* device ID out of range */
+ MMSYSERR_NOTENABLED = MMSYSERR_BASE + 3; //* driver failed enable */
+ MMSYSERR_ALLOCATED = MMSYSERR_BASE + 4; //* device already allocated */
+ MMSYSERR_INVALHANDLE = MMSYSERR_BASE + 5; //* device handle is invalid */
+ MMSYSERR_NODRIVER = MMSYSERR_BASE + 6; //* no device driver present */
+ MMSYSERR_NOMEM = MMSYSERR_BASE + 7; //* memory allocation error */
+ MMSYSERR_NOTSUPPORTED = MMSYSERR_BASE + 8; //* function isn't supported */
+ MMSYSERR_BADERRNUM = MMSYSERR_BASE + 9; //* error value out of range */
+ MMSYSERR_INVALFLAG = MMSYSERR_BASE + 10; //* invalid flag passed */
+ MMSYSERR_INVALPARAM = MMSYSERR_BASE + 11; //* invalid parameter passed */
+ MMSYSERR_HANDLEBUSY = MMSYSERR_BASE + 12; //* handle being used */
+ //* simultaneously on another */
+ //* thread (eg callback) */
+ MMSYSERR_INVALIDALIAS = MMSYSERR_BASE + 13; //* specified alias not found */
+ MMSYSERR_BADDB = MMSYSERR_BASE + 14; //* bad registry database */
+ MMSYSERR_KEYNOTFOUND = MMSYSERR_BASE + 15; //* registry key not found */
+ MMSYSERR_READERROR = MMSYSERR_BASE + 16; //* registry read error */
+ MMSYSERR_WRITEERROR = MMSYSERR_BASE + 17; //* registry write error */
+ MMSYSERR_DELETEERROR = MMSYSERR_BASE + 18; //* registry delete error */
+ MMSYSERR_VALNOTFOUND = MMSYSERR_BASE + 19; //* registry value not found */
+ MMSYSERR_NODRIVERCB = MMSYSERR_BASE + 20; //* driver does not call DriverCallback */
+ MMSYSERR_LASTERROR = MMSYSERR_BASE + 20; //* last error in range */
+
+type
+ HDRVR = HANDLE;
+
+{$IFNDEF MMNODRV}
+//
+// Installable driver support was left out.
+//
+{$ENDIF MMNODRV}
+
+
+{****************************************************************************
+
+ Driver callback support
+
+****************************************************************************}
+
+//* flags used with waveOutOpen(), waveInOpen(), midiInOpen(), and */
+//* midiOutOpen() to specify the type of the dwCallback parameter. */
+const
+ CALLBACK_TYPEMASK = $00070000; //* callback type mask */
+ CALLBACK_NULL = $00000000; //* no callback */
+ CALLBACK_WINDOW = $00010000; //* dwCallback is a HWND */
+ CALLBACK_TASK = $00020000; //* dwCallback is a HTASK */
+ CALLBACK_FUNCTION = $00030000; //* dwCallback is a FARPROC */
+ CALLBACK_THREAD = CALLBACK_TASK;//* thread ID replaces 16 bit task */
+ CALLBACK_EVENT = $00050000; //* dwCallback is an EVENT Handle */
+ CALLBACK_MSGQUEUE = $00060000; //* dwCallback is HANDLE returned by CreateMsgQueue or OpenMsgQueue (new in Windows CE 5.0) */
+
+
+type
+ DRVCALLBACK = procedure(_hdrvr:HANDLE; uMsg:UINT; dwUser:DWORD; dw1:DWORD; dw2:DWORD); cdecl;
+ LPDRVCALLBACK = DRVCALLBACK;
+ PDRVCALLBACK = DRVCALLBACK;
+
+{* CALLBACK_MSGQUEUE - client process sets up a MsgQueuue that receives WAVEMSG structures.
+* Note that structure fields are identical to arguments to a callback function
+* but we put the message field first to allow for multi-functional message queues.
+*}
+type
+ _tag_WAVEMSG = record
+ uMsg:UINT; // WOM_OPEN, WIM_OPEN, WOM_DONE, WIM_DATA, etc.
+ hWav:HANDLE; // stream handle returned by waveInOpen or waveOutOpen
+ dwInstance:DWORD; // value of dwInstance argument passed into waveInOpen or waveOutOpen
+ dwParam1:DWORD; // completed WAVEHDR for WIM_DATA, WOM_DONE, reserved elsewhere
+ dwParam2:DWORD; // reserved
+ end;
+ WAVEMSG = _tag_WAVEMSG;
+ PWAVEMSG = ^_tag_WAVEMSG;
+
+{$IFNDEF MMNOSOUND}
+
+function sndPlaySoundW(lpszSoundName:LPCWSTR; fuSound:UINT):BOOL; external KernelDLL name 'sndPlaySoundW'; // index 266
+{$IFDEF UNICODE}
+function sndPlaySound(lpszSoundName:LPCWSTR; fuSound:UINT):BOOL; external KernelDLL name 'sndPlaySoundW'; // index 266
+{$ELSE} // UNICODE
+//#define sndPlaySound sndPlaySoundA
+{$ENDIF} // UNICODE
+
+function PlaySoundW(pszSound:LPCWSTR; hmod:HMODULE; fdwSound:DWORD):BOOL; external KernelDLL name 'PlaySoundW'; // index 267
+{$IFDEF UNICODE}
+function PlaySound(pszSound:LPCWSTR; hmod:HMODULE; fdwSound:DWORD):BOOL; external KernelDLL name 'PlaySoundW'; // index 267
+{$ELSE} // UNICODE
+//#define PlaySound PlaySoundA
+{$ENDIF} // UNICODE
+
+{*
+ * flag values for fuSound arguments on [snd]PlaySound
+ * or dwFlags for PlaySound
+ *}
+
+//* sndAlias creates the alias identifier */
+const
+ SND_ALIAS_START = 0; // ??? must be > 4096 to keep strings in same section of resource file
+
+function sndAlias(ch0:AnsiChar; ch1:AnsiChar):DWORD;
+
+const
+ SND_ALIAS_SYSTEMASTERISK = SND_ALIAS_START+
+ (DWORD(AnsiChar('S')) or
+ DWORD(AnsiChar('*')));
+
+ SND_ALIAS_SYSTEMQUESTION = SND_ALIAS_START+
+ (DWORD(AnsiChar('S')) or
+ DWORD(AnsiChar('?')));
+
+ SND_ALIAS_SYSTEMHAND = SND_ALIAS_START+
+ (DWORD(AnsiChar('S')) or
+ DWORD(AnsiChar('H')));
+
+ SND_ALIAS_SYSTEMEXIT = SND_ALIAS_START+
+ (DWORD(AnsiChar('S')) or
+ DWORD(AnsiChar('E')));
+
+ SND_ALIAS_SYSTEMSTART = SND_ALIAS_START+
+ (DWORD(AnsiChar('S')) or
+ DWORD(AnsiChar('S')));
+
+ SND_ALIAS_SYSTEMWELCOME = SND_ALIAS_START+
+ (DWORD(AnsiChar('S')) or
+ DWORD(AnsiChar('W')));
+
+ SND_ALIAS_SYSTEMEXCLAMATION = SND_ALIAS_START+
+ (DWORD(AnsiChar('S')) or
+ DWORD(AnsiChar('!')));
+
+ SND_ALIAS_SYSTEMDEFAULT = SND_ALIAS_START+
+ (DWORD(AnsiChar('S')) or
+ DWORD(AnsiChar('D')));
+
+ SND_ALIAS = $00010000; // name is a WIN.INI [sounds] entry
+ SND_FILENAME = $00020000; // name is a file name
+ SND_RESOURCE = $00040004; // name is a resource name or atom
+
+ SND_SYNC = $00000000; // play synchronously (default)
+ SND_ASYNC = $00000001; // play asynchronously
+ SND_NODEFAULT = $00000002; // silence not default, if sound not found
+ SND_MEMORY = $00000004; // lpszSoundName points to a memory file
+ SND_LOOP = $00000008; // loop the sound until next sndPlaySound
+ SND_NOSTOP = $00000010; // don't stop any currently playing sound
+
+ SND_NOWAIT = $00002000; // don't wait if the driver is busy
+ SND_VALIDFLAGS = $0017201F; // Set of valid flag bits. Anything outside
+ // this range will raise an error
+ SND_RESERVED = $FF000000; // In particular these flags are reserved
+ SND_TYPE_MASK = $00170007;
+ SND_ALIAS_ID = $00110000; // name is a WIN.INI [sounds] entry identifier
+
+{$ENDIF} // MMNOSOUND
+
+
+{$IFNDEF MMNOWAVE}
+{****************************************************************************
+
+ Waveform audio support
+
+****************************************************************************}
+const
+//* waveform audio error return values */
+ WAVERR_BADFORMAT = WAVERR_BASE + 0; // unsupported wave format
+ WAVERR_STILLPLAYING = WAVERR_BASE + 1; // still something playing
+ WAVERR_UNPREPARED = WAVERR_BASE + 2; // header not prepared
+ WAVERR_SYNC = WAVERR_BASE + 3; // device is synchronous
+ WAVERR_LASTERROR = WAVERR_BASE + 3; // last error in range
+
+//* waveform audio data types */
+type
+ HWAVE = HANDLE;
+ HWAVEIN = HANDLE;
+ LPHWAVEIN = ^HWAVEIN;
+ HWAVEOUT = HANDLE;
+ LPHWAVEOUT = ^HWAVEOUT;
+
+ WAVECALLBACK = DRVCALLBACK;
+ LPWAVECALLBACK = WAVECALLBACK;
+
+const
+//* wave callback messages */
+ WOM_OPEN = MM_WOM_OPEN;
+ WOM_CLOSE = MM_WOM_CLOSE;
+ WOM_DONE = MM_WOM_DONE;
+ WIM_OPEN = MM_WIM_OPEN;
+ WIM_CLOSE = MM_WIM_CLOSE;
+ WIM_DATA = MM_WIM_DATA;
+
+//* device ID for wave device mapper */
+const
+ WAVE_MAPPER = DWORD(-1);
+
+//* flags for dwFlags parameter in waveOutOpen() and waveInOpen() */
+const
+ WAVE_FORMAT_QUERY = $00000001;
+ WAVE_ALLOWSYNC = $00000002;
+ WAVE_MAPPED = $00000004;
+ WAVE_FORMAT_DIRECT = $00000008;
+ WAVE_FORMAT_DIRECT_QUERY = WAVE_FORMAT_QUERY or WAVE_FORMAT_DIRECT;
+ WAVE_NOMIXER = $00000080; //* Windows CE only - bypass software mixer */
+
+
+// Switch to DWORD packing for WAVEHDR
+// Warning: This assumes that the start of headers is DWORD aligned, which is a change from previous implementations.
+{$PACKRECORDS 4}// #include "pshpack4.h"
+//* wave data block header */
+type
+ LPWAVEHDR = ^wavehdr_tag;
+ wavehdr_tag = record
+ lpData:LPSTR; //* pointer to locked data buffer */
+ dwBufferLength:DWORD; //* length of data buffer */
+ dwBytesRecorded:DWORD; //* used for input only */
+ dwUser:DWORD; //* for client's use */
+ dwFlags:DWORD; //* assorted flags (see defines) */
+ dwLoops:DWORD; //* loop control counter */
+ lpNext:LPWAVEHDR; //* reserved for driver */
+ reserved:DWORD; //* reserved for driver */
+ end;
+ WAVEHDR = wavehdr_tag;
+ PWAVEHDR = ^wavehdr_tag;
+ NPWAVEHDR = ^wavehdr_tag;
+
+// Switch back to previous packing
+{$PACKRECORDS 1}// #include "poppack.h"
+
+
+//* flags for dwFlags field of WAVEHDR */
+const
+ WHDR_DONE = $00000001; //* done bit */
+ WHDR_PREPARED = $00000002; //* set if this header has been prepared */
+ WHDR_BEGINLOOP = $00000004; //* loop start block */
+ WHDR_ENDLOOP = $00000008; //* loop end block */
+ WHDR_INQUEUE = $00000010; //* reserved for driver */
+
+//* waveform output device capabilities structure */
+type
+ tagWAVEOUTCAPS = record
+ wMid:word; //* manufacturer ID */
+ wPid:word; //* product ID */
+ vDriverVersion:MMVERSION; //* version of the driver */
+ szPname:array[0..MAXPNAMELEN-1] of TCHAR; //* product name (NULL terminated string) */
+ dwFormats:DWORD; //* formats supported */
+ wChannels:word; //* number of sources supported */
+ wReserved1:word; //* packing */
+ dwSupport:DWORD; //* functionality supported by driver */
+ end;
+ WAVEOUTCAPS = tagWAVEOUTCAPS;
+ PWAVEOUTCAPS = ^tagWAVEOUTCAPS;
+ NPWAVEOUTCAPS = ^tagWAVEOUTCAPS;
+ LPWAVEOUTCAPS = ^tagWAVEOUTCAPS;
+
+//* flags for dwSupport field of WAVEOUTCAPS */
+const
+ WAVECAPS_PITCH = $0001; //* supports pitch control */
+ WAVECAPS_PLAYBACKRATE = $0002; //* supports playback rate control */
+ WAVECAPS_VOLUME = $0004; //* supports volume control */
+ WAVECAPS_LRVOLUME = $0008; //* separate left-right volume control */
+// WAVECAPS_SYNC = $0010; //* Windows CE only supports asynchronous audio devices */
+ WAVECAPS_SAMPLEACCURATE = $0020;
+ WAVECAPS_DIRECTSOUND = $0040;
+
+//* waveform input device capabilities structure */
+type
+ tagWAVEINCAPS = record
+ wMid:word; //* manufacturer ID */
+ wPid:word; //* product ID */
+ vDriverVersion:MMVERSION; //* version of the driver */
+ szPname:array[0..MAXPNAMELEN-1] of TCHAR; //* product name (NULL terminated string) */
+ dwFormats:DWORD; //* formats supported */
+ wChannels:word; //* number of channels supported */
+ wReserved1:word; //* structure packing */
+ end;
+ WAVEINCAPS = tagWAVEINCAPS;
+ PWAVEINCAPS = ^tagWAVEINCAPS;
+ NPWAVEINCAPS = ^tagWAVEINCAPS;
+ LPWAVEINCAPS = ^tagWAVEINCAPS;
+
+//* defines for dwFormat field of WAVEINCAPS and WAVEOUTCAPS */
+const
+ WAVE_INVALIDFORMAT = $00000000; //* invalid format */
+ WAVE_FORMAT_1M08 = $00000001; //* 11.025 kHz, Mono, 8-bit */
+ WAVE_FORMAT_1S08 = $00000002; //* 11.025 kHz, Stereo, 8-bit */
+ WAVE_FORMAT_1M16 = $00000004; //* 11.025 kHz, Mono, 16-bit */
+ WAVE_FORMAT_1S16 = $00000008; //* 11.025 kHz, Stereo, 16-bit */
+ WAVE_FORMAT_2M08 = $00000010; //* 22.05 kHz, Mono, 8-bit */
+ WAVE_FORMAT_2S08 = $00000020; //* 22.05 kHz, Stereo, 8-bit */
+ WAVE_FORMAT_2M16 = $00000040; //* 22.05 kHz, Mono, 16-bit */
+ WAVE_FORMAT_2S16 = $00000080; //* 22.05 kHz, Stereo, 16-bit */
+ WAVE_FORMAT_4M08 = $00000100; //* 44.1 kHz, Mono, 8-bit */
+ WAVE_FORMAT_4S08 = $00000200; //* 44.1 kHz, Stereo, 8-bit */
+ WAVE_FORMAT_4M16 = $00000400; //* 44.1 kHz, Mono, 16-bit */
+ WAVE_FORMAT_4S16 = $00000800; //* 44.1 kHz, Stereo, 16-bit */
+
+//* property information for audio gain classes */
+
+//* audio gain class property sets */
+const
+ MM_PROPSET_GAINCLASS_CLASS:GUID = '{E7E569A5-8498-43FE-8075-33D1FDAB15EF}';
+ MM_PROPSET_GAINCLASS_STREAM:GUID = '{40E953AE-EE3E-493A-93EE-DA3E30764390}';
+(*
+#define MM_PROPSET_GAINCLASS_CLASS \
+ { 0xe7e569a5, 0x8498, 0x43fe, { 0x80, 0x75, 0x33, 0xd1, 0xfd, 0xab, 0x15, 0xef } }
+#define MM_PROPSET_GAINCLASS_STREAM \
+ { 0x40e953ae, 0xee3e, 0x493a, { 0x93, 0xee, 0xda, 0x3e, 0x30, 0x76, 0x43, 0x90 } }
+*)
+
+const
+//* MM_PROPSET_GAINCLASS_CLASS property IDs */
+ MM_PROP_GAINCLASS_CLASS = 1;
+
+//* MM_PROPSET_GAINCLASS_STREAM property IDs */
+ MM_PROP_GAINCLASS_STREAM = 1;
+
+//* structure to describe audio gain classes */
+type
+ tagAUDIOGAINCLASS = record
+ dwPriority:DWORD;
+ dwRelativeGain:DWORD;
+ end;
+ AUDIOGAINCLASS = tagAUDIOGAINCLASS;
+ PAUDIOGAINCLASS = ^tagAUDIOGAINCLASS;
+ CPAUDIOGAINCLASS = ^AUDIOGAINCLASS;
+
+//* values for AUDIOGAINCLASS.dwPriority */
+const
+ WAGC_PRIORITY_CRITICAL = 6;
+ WAGC_PRIORITY_HIGH = 4;
+ WAGC_PRIORITY_NORMAL = 2;
+
+//* wave stream properties structure */
+type
+ tagSTREAMPROPS = record
+ dwClassID:DWORD;
+ dwFlags:DWORD;
+ end;
+ STREAMPROPS = tagSTREAMPROPS;
+ PSTREAMPROPS = ^tagSTREAMPROPS;
+ CPSTREAMPROPS = ^STREAMPROPS;
+
+//* flag definitions for STREAMPROPS.dwFlags */
+const
+ SPSFL_NOTIFY_GAIN_CHANGE = $00000001; //* callback gets MM_WOM_ATTENUATED messages */
+ SPSFL_EXCLUDE = $00000002; //* stream does not participate in gain-class operations */
+
+//* values for STREAMPROPS.dwClassid */
+const
+ WAGC_CLASS_DEFAULT = 0;
+ WAGC_CLASS_NORMAL = 1;
+ WAGC_CLASS_AUDIO_ALERT = 2;
+ WAGC_CLASS_SPEECH_ALERT = 3;
+ WAGC_CLASS_SPEECH_NOTIFICATION = 4;
+ WAGC_CLASS_AUDIO_NOTIFICATION = 5;
+ WAGC_CLASS_FORCE_MUTE = 6;
+//* classes 7-15 are reserved for future use */
+ WAGC_CLASS_MAX = 15; //* class ID's larger than this are illegal */
+
+//* Discontinuity detection property set */
+ MM_PROPSET_DISCONTINUITY:GUID = '{B4389733-868E-4D06-B008-9A6FC8CE852E}';
+{
+#define MM_PROPSET_DISCONTINUITY \
+ { 0xb4389733, 0x868e, 0x4d06, { 0xb0, 0x8, 0x9a, 0x6f, 0xc8, 0xce, 0x85, 0x2e } }
+}
+
+//* MM_PROPSET_DISCONTINUITY property IDs */
+ MM_PROP_DISCONTINUITY = 1;
+
+//* bit values for MM_PROP_DISCONTINUITY parameter */
+ WDSC_APP = 1;
+ WDSC_SWMIXER = 2;
+ WDSC_DRIVER = 4;
+
+//* structure to receive discontinuity information */
+type
+ tagAUDIODISCONTINUITY = record
+ dwMask:DWORD; // bitmask shows which values were set (see WDSC_* values above)
+ dwApp:DWORD; // # discontinuities detected at the application level
+ dwSwMixer:DWORD; // # discontinuities detected at the software mixer level
+ dwDriver:DWORD; // # discontinuities detected at the driver level
+ end;
+ AUDIODISCONTINUITY = tagAUDIODISCONTINUITY;
+ PAUDIODISCONTINUITY = ^tagAUDIODISCONTINUITY;
+
+//* waveform audio function prototypes */
+function waveOutGetNumDevs:UINT; external KernelDLL name 'waveOutGetNumDevs'; // index 268
+function waveOutGetDevCaps(uDeviceID:UINT; pwoc:LPWAVEOUTCAPS; cbwoc:UINT):MMRESULT; external KernelDLL name 'waveOutGetDevCaps'; // index 269
+function waveOutGetVolume(hwo:HWAVEOUT; pdwVolume:LPDWORD):MMRESULT; external KernelDLL name 'waveOutGetVolume'; // index 26A
+function waveOutSetVolume(hwo:HWAVEOUT; dwVolume:DWORD):MMRESULT; external KernelDLL name 'waveOutSetVolume'; // index 26B
+function waveOutGetErrorText(mmrError:MMRESULT; pszText:PTSTR; cchText:UINT):MMRESULT; external KernelDLL name 'waveOutGetErrorText'; // index 26C
+function waveOutClose(hwo:HWAVEOUT):MMRESULT; external KernelDLL name 'waveOutClose'; // index 26D
+function waveOutPrepareHeader(hwo:HWAVEOUT; pwh:LPWAVEHDR; cbwh:UINT):MMRESULT; external KernelDLL name 'waveOutPrepareHeader'; // index 26E
+function waveOutUnprepareHeader(hwo:HWAVEOUT; pwh:LPWAVEHDR; cbwh:UINT):MMRESULT; external KernelDLL name 'waveOutUnprepareHeader'; // index 26F
+function waveOutWrite(hwo:HWAVEOUT; pwh:LPWAVEHDR; cbwh:UINT):MMRESULT; external KernelDLL name 'waveOutWrite'; // index 270
+function waveOutPause(hwo:HWAVEOUT):MMRESULT; external KernelDLL name 'waveOutPause'; // index 271
+function waveOutRestart(hwo:HWAVEOUT):MMRESULT; external KernelDLL name 'waveOutRestart'; // index 272
+function waveOutReset(hwo:HWAVEOUT):MMRESULT; external KernelDLL name 'waveOutReset'; // index 273
+function waveOutBreakLoop(hwo:HWAVEOUT):MMRESULT; external KernelDLL name 'waveOutBreakLoop'; // index 274
+function waveOutGetPosition(hwo:HWAVEOUT; pmmt:LPMMTIME; cbmmt:UINT):MMRESULT; external KernelDLL name 'waveOutGetPosition'; // index 275
+function waveOutGetPitch(hwo:HWAVEOUT; pdwPitch:LPDWORD):MMRESULT; external KernelDLL name 'waveOutGetPitch'; // index 276
+function waveOutSetPitch(hwo:HWAVEOUT; dwPitch:DWORD):MMRESULT; external KernelDLL name 'waveOutSetPitch'; // index 277
+function waveOutGetPlaybackRate(hwo:HWAVEOUT; pdwRate:LPDWORD):MMRESULT; external KernelDLL name 'waveOutGetPlaybackRate'; // index 278
+function waveOutSetPlaybackRate(hwo:HWAVEOUT; dwRate:DWORD):MMRESULT; external KernelDLL name 'waveOutSetPlaybackRate'; // index 279
+function waveOutGetID(hwo:HWAVEOUT; puDeviceID:LPUINT):MMRESULT; external KernelDLL name 'waveOutGetID'; // index 27A
+function waveOutMessage(hwo:HWAVEOUT; uMsg:UINT; dw1:DWORD; dw2:DWORD):MMRESULT; external KernelDLL name 'waveOutMessage'; // index 27B
+function waveOutOpen(Phwo:LPHWAVEOUT;
+ uDeviceID:UINT;
+ pwfx:LPCWAVEFORMATEX;
+ dwCallback:DWORD;
+ dwInstance:DWORD;
+ fdwOpen:DWORD):MMRESULT; external KernelDLL name 'waveOutOpen'; // index 27C
+function waveOutGetProperty(uDeviceID:UINT;
+ pPropSetId:PGUID;
+ ulPropId:ULONG;
+ pvPropParams:LPVOID;
+ cbPropParams:ULONG;
+ pvPropData:LPVOID;
+ cbPropData:ULONG;
+ pcbReturn:PULONG):MMRESULT; external KernelDLL name 'waveOutGetProperty'; // index ?
+function waveOutSetProperty(uDeviceID:UINT;
+ pPropSetId:PGUID;
+ ulPropId:ULONG;
+ pvPropParams:LPVOID;
+ cbPropParams:ULONG;
+ pvPropData:LPVOID;
+ cbPropData:ULONG):MMRESULT; external KernelDLL name 'waveOutSetProperty'; // index ?
+
+
+function waveInGetNumDevs:UINT; external KernelDLL name 'waveInGetNumDevs'; // index 27D
+function waveInGetDevCaps(uDeviceID:UINT; pwic:LPWAVEINCAPS; cbwic:UINT):MMRESULT; external KernelDLL name 'waveInGetDevCaps'; // index 27E
+function waveInGetErrorText(mmrError:MMRESULT; pszText:LPTSTR; cchText:UINT):MMRESULT; external KernelDLL name 'waveInGetErrorText'; // index 27F
+function waveInClose(hwi:HWAVEIN):MMRESULT; external KernelDLL name 'waveInClose'; // index 280
+function waveInPrepareHeader(hwi:HWAVEIN; pwh:LPWAVEHDR; cbwh:UINT):MMRESULT; external KernelDLL name 'waveInPrepareHeader'; // index 281
+function waveInUnprepareHeader(hwi:HWAVEIN; pwh:LPWAVEHDR; cbwh:UINT):MMRESULT; external KernelDLL name 'waveInUnprepareHeader'; // index 282
+function waveInAddBuffer(hwi:HWAVEIN; pwh:LPWAVEHDR; cbwh:UINT):MMRESULT; external KernelDLL name 'waveInAddBuffer'; // index 283
+function waveInStart(hwi:HWAVEIN):MMRESULT; external KernelDLL name 'waveInStart'; // index 284
+function waveInStop(hwi:HWAVEIN):MMRESULT; external KernelDLL name 'waveInStop'; // index 285
+function waveInReset(hwi:HWAVEIN):MMRESULT; external KernelDLL name 'waveInReset'; // index 286
+function waveInGetPosition(hwi:HWAVEIN; pmmt:LPMMTIME; cbmmt:UINT):MMRESULT; external KernelDLL name 'waveInGetPosition'; // index 287
+function waveInGetID(hwi:HWAVEIN; puDeviceID:LPUINT):MMRESULT; external KernelDLL name 'waveInGetID'; // index 288
+function waveInMessage(hwi:HWAVEIN; uMsg:UINT; dw1:DWORD; dw2:DWORD):MMRESULT; external KernelDLL name 'waveInMessage'; // index 289
+function waveInOpen(phwi:LPHWAVEIN;
+ uDeviceID:UINT;
+ pwfx:LPCWAVEFORMATEX;
+ dwCallback:DWORD;
+ dwInstance:DWORD;
+ fdwOpen:DWORD):MMRESULT; external KernelDLL name 'waveInOpen'; // index 28A
+function waveInGetProperty(uDeviceID:UINT;
+ pPropSetId:PGUID;
+ ulPropId:ULONG;
+ pvPropParams:LPVOID;
+ cbPropParams:ULONG;
+ pvPropData:LPVOID;
+ cbPropData:ULONG;
+ pcbReturn:PULONG):MMRESULT; external KernelDLL name 'waveInGetProperty'; // index ?
+function waveInSetProperty(uDeviceID:UINT;
+ pPropSetId:PGUID;
+ ulPropId:ULONG;
+ pvPropParams:LPVOID;
+ cbPropParams:ULONG;
+ pvPropData:LPVOID;
+ cbPropData:ULONG):MMRESULT; external KernelDLL name 'waveInSetProperty'; // index ?
+
+{$ENDIF} // MMNOWAVE
+
+
+{$IFNDEF MMNOMIDI}
+{****************************************************************************
+
+ MIDI audio support
+
+****************************************************************************}
+const
+//* MIDI error return values */
+ MIDIERR_UNPREPARED = MIDIERR_BASE + 0; //* header not prepared */
+ MIDIERR_STILLPLAYING = MIDIERR_BASE + 1; //* still something playing */
+ MIDIERR_NOMAP = MIDIERR_BASE + 2; //* no configured instruments */
+ MIDIERR_NOTREADY = MIDIERR_BASE + 3; //* hardware is still busy */
+ MIDIERR_NODEVICE = MIDIERR_BASE + 4; //* port no longer connected */
+ MIDIERR_INVALIDSETUP = MIDIERR_BASE + 5; //* invalid MIF */
+ MIDIERR_BADOPENMODE = MIDIERR_BASE + 6; //* operation unsupported w/ open mode */
+ MIDIERR_DONT_CONTINUE = MIDIERR_BASE + 7; //* thru device 'eating' a message */
+ MIDIERR_LASTERROR = MIDIERR_BASE + 7; //* last error in range */
+
+//* MIDI audio data types */
+type
+ HMIDI = HANDLE;
+ HMIDIIN = HANDLE;
+ HMIDIOUT = HANDLE;
+ HMIDISTRM = HANDLE;
+
+ LPHMIDI = ^HMIDI;
+ LPHMIDIIN = ^HMIDIIN;
+ LPHMIDIOUT = ^HMIDIOUT;
+ LPHMIDISTRM = ^HMIDISTRM;
+
+ MIDICALLBACK = DRVCALLBACK;
+ LPMIDICALLBACK = MIDICALLBACK;
+
+const
+ MIDIPATCHSIZE = 128;
+
+type
+ PATCHARRAY = array[0..MIDIPATCHSIZE-1] of word;
+ LPPATCHARRAY = ^PATCHARRAY;
+ KEYARRAY = array[0..MIDIPATCHSIZE-1] of word;
+ LPKEYARRAY = ^KEYARRAY;
+
+//* MIDI callback messages */
+const
+ MIM_OPEN = MM_MIM_OPEN;
+ MIM_CLOSE = MM_MIM_CLOSE;
+ MIM_DATA = MM_MIM_DATA;
+ MIM_LONGDATA = MM_MIM_LONGDATA;
+ MIM_ERROR = MM_MIM_ERROR;
+ MIM_LONGERROR = MM_MIM_LONGERROR;
+ MOM_OPEN = MM_MOM_OPEN;
+ MOM_CLOSE = MM_MOM_CLOSE;
+ MOM_DONE = MM_MOM_DONE;
+
+ MIM_MOREDATA = MM_MIM_MOREDATA;
+ MOM_POSITIONCB = MM_MOM_POSITIONCB;
+
+//* device ID for MIDI mapper */
+const
+ MIDIMAPPER = UINT(-1);
+ MIDI_MAPPER = UINT(-1);
+
+//* flags for dwFlags parm of midiInOpen() */
+const
+ MIDI_IO_STATUS = $00000020;
+ MIDI_IO_CONTROL = $00000008; //* Internal */
+ MIDI_IO_INPUT = $00000010; //*future*/ /* Internal */
+ MIDI_IO_OWNED = $00004000; //* Internal */
+ MIDI_IO_SHARED = $00008000; //* Internal */
+ MIDI_I_VALID = $C027; //* Internal */
+ MIDI_O_VALID = $C00E; //* Internal */
+
+
+//* flags for wFlags parm of midiOutCachePatches(), midiOutCacheDrumPatches() */
+ MIDI_CACHE_ALL = 1;
+ MIDI_CACHE_BESTFIT = 2;
+ MIDI_CACHE_QUERY = 3;
+ MIDI_UNCACHE = 4;
+ MIDI_CACHE_VALID = MIDI_CACHE_ALL or MIDI_CACHE_BESTFIT or MIDI_CACHE_QUERY or MIDI_UNCACHE; //* Internal */
+
+
+//* MIDI output device capabilities structure */
+{$IFDEF _WIN32}
+type
+ tagMIDIOUTCAPSA = record
+ wMid:word; //* manufacturer ID */
+ wPid:word; //* product ID */
+ vDriverVersion:MMVERSION; //* version of the driver */
+ szPname:array[0..MAXPNAMELEN-1] of AnsiChar; //* product name (NULL terminated string) */
+ wTechnology:word; //* type of device */
+ wVoices:word; //* # of voices (internal synth only) */
+ wNotes:word; //* max # of notes (internal synth only) */
+ wChannelMask:word; //* channels used (internal synth only) */
+ dwSupport:DWORD; //* functionality supported by driver */
+ end;
+ MIDIOUTCAPSA = tagMIDIOUTCAPSA;
+ PMIDIOUTCAPSA = ^tagMIDIOUTCAPSA;
+ NPMIDIOUTCAPSA = ^tagMIDIOUTCAPSA;
+ LPMIDIOUTCAPSA = ^tagMIDIOUTCAPSA;
+
+type
+ tagMIDIOUTCAPSW = record
+ wMid:word; //* manufacturer ID */
+ wPid:word; //* product ID */
+ vDriverVersion:MMVERSION; //* version of the driver */
+ szPname:array[0..MAXPNAMELEN-1] of WCHAR; //* product name (NULL terminated string) */
+ wTechnology:word; //* type of device */
+ wVoices:word; //* # of voices (internal synth only) */
+ wNotes:word; //* max # of notes (internal synth only) */
+ wChannelMask:word; //* channels used (internal synth only) */
+ dwSupport:DWORD; //* functionality supported by driver */
+ end;
+ MIDIOUTCAPSW = tagMIDIOUTCAPSW;
+ PMIDIOUTCAPSW = ^tagMIDIOUTCAPSW;
+ NPMIDIOUTCAPSW = ^tagMIDIOUTCAPSW;
+ LPMIDIOUTCAPSW = ^tagMIDIOUTCAPSW;
+
+{$IFDEF UNICODE}
+ MIDIOUTCAPS = MIDIOUTCAPSW;
+ PMIDIOUTCAPS = PMIDIOUTCAPSW;
+ NPMIDIOUTCAPS = NPMIDIOUTCAPSW;
+ LPMIDIOUTCAPS = LPMIDIOUTCAPSW;
+{$ELSE} // UNICODE
+ MIDIOUTCAPS = MIDIOUTCAPSA;
+ PMIDIOUTCAPS = PMIDIOUTCAPSA;
+ NPMIDIOUTCAPS = NPMIDIOUTCAPSA;
+ LPMIDIOUTCAPS = LPMIDIOUTCAPSA;
+{$ENDIF} // UNICODE
+
+{$ELSE} // _WIN32
+type
+ midioutcaps_tag = record
+ wMid:word; //* manufacturer ID */
+ wPid:word; //* product ID */
+ vDriverVersion:MMVERSION; //* version of the driver */
+ szPname:array[0..MAXPNAMELEN-1] of char; //* product name (NULL terminated string) */
+ wTechnology:word; //* type of device */
+ wVoices:word; //* # of voices (internal synth only) */
+ wNotes:word; //* max # of notes (internal synth only) */
+ wChannelMask:word; //* channels used (internal synth only) */
+ dwSupport:DWORD; //* functionality supported by driver */
+ end;
+ MIDIOUTCAPS = midioutcaps_tag;
+ PMIDIOUTCAPS = ^midioutcaps_tag;
+ NPMIDIOUTCAPS = ^midioutcaps_tag;
+ LPMIDIOUTCAPS = ^midioutcaps_tag;
+{$ENDIF} // _WIN32
+
+const
+//* flags for wTechnology field of MIDIOUTCAPS structure */
+ MOD_MIDIPORT = 1; //* output port */
+ MOD_SYNTH = 2; //* generic internal synth */
+ MOD_SQSYNTH = 3; //* square wave internal synth */
+ MOD_FMSYNTH = 4; //* FM internal synth */
+ MOD_MAPPER = 5; //* MIDI mapper */
+
+//* flags for dwSupport field of MIDIOUTCAPS structure */
+ MIDICAPS_VOLUME = $0001; //* supports volume control */
+ MIDICAPS_LRVOLUME = $0002; //* separate left-right volume control */
+ MIDICAPS_CACHE = $0004;
+
+ MIDICAPS_STREAM = $0008; //* driver supports midiStreamOut directly */
+
+
+
+//* MIDI input device capabilities structure */
+{$IFDEF _WIN32}
+type
+ tagMIDIINCAPSA = record
+ wMid:word; //* manufacturer ID */
+ wPid:word; //* product ID */
+ vDriverVersion:MMVERSION; //* version of the driver */
+ szPname:array[0..MAXPNAMELEN-1] of AnsiChar; //* product name (NULL terminated string) */
+//#if (WINVER >= 0x0400)
+ dwSupport:DWORD; //* functionality supported by driver */
+//#endif
+ end;
+ MIDIINCAPSA = tagMIDIINCAPSA;
+ PMIDIINCAPSA = ^tagMIDIINCAPSA;
+ NPMIDIINCAPSA = ^tagMIDIINCAPSA;
+ LPMIDIINCAPSA = ^tagMIDIINCAPSA;
+
+type
+ tagMIDIINCAPSW = record
+ wMid:word; //* manufacturer ID */
+ wPid:word; //* product ID */
+ vDriverVersion:MMVERSION; //* version of the driver */
+ szPname:array[0..MAXPNAMELEN-1] of WCHAR; //* product name (NULL terminated string) */
+//#if (WINVER >= 0x0400)
+ dwSupport:DWORD; //* functionality supported by driver */
+//#endif
+ end;
+ MIDIINCAPSW = tagMIDIINCAPSW;
+ PMIDIINCAPSW = ^tagMIDIINCAPSW;
+ NPMIDIINCAPSW = ^tagMIDIINCAPSW;
+ LPMIDIINCAPSW = ^tagMIDIINCAPSW;
+
+{$IFDEF UNICODE}
+ MIDIINCAPS = MIDIINCAPSW;
+ PMIDIINCAPS = PMIDIINCAPSW;
+ NPMIDIINCAPS = NPMIDIINCAPSW;
+ LPMIDIINCAPS = LPMIDIINCAPSW;
+{$ELSE} // UNICODE
+ MIDIINCAPS = MIDIINCAPSA;
+ PMIDIINCAPS = PMIDIINCAPSA;
+ NPMIDIINCAPS = NPMIDIINCAPSA;
+ LPMIDIINCAPS = LPMIDIINCAPSA;
+{$ENDIF} // UNICODE
+
+{$ELSE} // _WIN32
+type
+ midiincaps_tag = record
+ wMid:word; //* manufacturer ID */
+ wPid:word; //* product ID */
+ vDriverVersion:MMVERSION; //* version of the driver */
+ szPname:array[0..MAXPNAMELEN-1] of char; //* product name (NULL terminated string) */
+//#if (WINVER >= 0x0400)
+ dwSupport:DWORD; //* functionality supported by driver */
+//#endif
+ end;
+ MIDIINCAPS = midiincaps_tag;
+ PMIDIINCAPS = ^midiincaps_tag;
+ NPMIDIINCAPS = ^midiincaps_tag;
+ LPMIDIINCAPS = ^midiincaps_tag;
+{$ENDIF} // _WIN32
+
+
+//* MIDI data block header */
+type
+ LPMIDIHDR = ^midihdr_tag;
+ midihdr_tag = record
+ lpData:LPSTR; //* pointer to locked data block */
+ dwBufferLength:DWORD; //* length of data in data block */
+ dwBytesRecorded:DWORD; //* used for input only */
+ dwUser:DWORD; //* for client's use */
+ dwFlags:DWORD; //* assorted flags (see defines) */
+ lpNext:LPMIDIHDR; //* reserved for driver */
+ reserved:DWORD; //* reserved for driver */
+//#if (WINVER >= 0x0400)
+ dwOffset:DWORD; //* Callback offset into buffer */
+ dwReserved:array[0..7] of DWORD; //* Reserved for MMSYSTEM */
+//#endif
+ end;
+ MIDIHDR = midihdr_tag;
+ PMIDIHDR = ^midihdr_tag;
+ NPMIDIHDR = ^midihdr_tag;
+
+type
+ midievent_tag = record
+ dwDeltaTime:DWORD; //* Ticks since last event */
+ dwStreamID:DWORD; //* Reserved; must be zero */
+ dwEvent:DWORD; //* Event type and parameters */
+ dwParms:array[0..0] of DWORD; //* Parameters if this is a long event */
+ end;
+ MIDIEVENT = midievent_tag;
+
+type
+ midistrmbuffver_tag = record
+ dwVersion:DWORD; //* Stream buffer format version */
+ dwMid:DWORD; //* Manufacturer ID as defined in MMREG.H */
+ dwOEMVersion:DWORD; //* Manufacturer version for custom ext */
+ end;
+ MIDISTRMBUFFVER = midistrmbuffver_tag;
+
+const
+//* flags for dwFlags field of MIDIHDR structure */
+ MHDR_DONE = $00000001; //* done bit */
+ MHDR_PREPARED = $00000002; //* set if header prepared */
+ MHDR_INQUEUE = $00000004; //* reserved for driver */
+ MHDR_ISSTRM = $00000008; //* Buffer is stream buffer */
+ MHDR_SENDING = $00000020; //* Internal */
+ MHDR_MAPPED = $00001000; //* thunked header */ /* Internal */
+ MHDR_SHADOWHDR = $00002000; //* MIDIHDR is 16-bit shadow */ /* Internal */
+ MHDR_VALID = $e000302F; //* valid flags */ /* Internal */
+
+ MHDR_SAVE = $e0003000; //* Save these flags */ /* Internal */
+ //* past driver calls */ /* Internal */
+
+//* Dreamcast-only flags for tonebank support */
+ MHDR_WRITEABLE = $e0000000;
+ MHDR_GENERALMIDI = $80000000; //* Indicates a tonebank that is to be used */
+ //* by General MIDI stream ports */
+ MHDR_GMDRUM = $40000000; //* In combination with GENERALMIDI, indicates */
+ //* a GM drum tonebank. By itself, indicates an */
+ //* "alternate" GM drum tonebank */
+ MHDR_MAPPINGTABLE = $20000000; //* Indicates that this MIDIHDR is for a */
+ //* program mapping table rather than an actual */
+ //* tonebank */
+
+//* */
+//* Type codes which go in the high byte of the event DWORD of a stream buffer */
+//* */
+//* Type codes 00-7F contain parameters within the low 24 bits */
+//* Type codes 80-FF contain a length of their parameter in the low 24 */
+//* bits, followed by their parameter data in the buffer. The event */
+//* DWORD contains the exact byte length; the parm data itself must be */
+//* padded to be an even multiple of 4 bytes long. */
+//* */
+const
+ MEVT_F_SHORT = $00000000;
+ MEVT_F_LONG = $80000000;
+ MEVT_F_CALLBACK = $40000000;
+
+ MEVT_SHORTMSG = byte($00); //* parm = shortmsg for midiOutShortMsg */
+ MEVT_TEMPO = byte($01); //* parm = new tempo in microsec/qn */
+ MEVT_NOP = byte($02); //* parm = unused; does nothing */
+
+function MEVT_EVENTTYPE(x:DWORD):byte;
+function MEVT_EVENTPARM(x:DWORD):DWORD;
+
+//* 0x04-0x7F reserved */
+const
+ MEVT_LONGMSG = byte($80); //* parm = bytes to send verbatim */
+ MEVT_COMMENT = byte($82); //* parm = comment data */
+ MEVT_VERSION = byte($84); //* parm = MIDISTRMBUFFVER struct */
+
+//* 0x81-0xFF reserved */
+
+ MIDISTRM_ERROR = -2;
+
+//* */
+//* Structures and defines for midiStreamProperty */
+//* */
+ MIDIPROP_SET = $80000000;
+ MIDIPROP_GET = $40000000;
+
+//* These are intentionally both non-zero so the app cannot accidentally */
+//* leave the operation off and happen to appear to work due to default */
+//* action. */
+
+function MIDIPROP_PROPERTY(mp:DWORD):DWORD;
+
+const
+ MIDIPROP_TIMEDIV = 00000001;
+ MIDIPROP_TEMPO = 00000002;
+ MIDIPROP_SMF = 00000003;
+ MIDIPROP_BUFFERED = 00000004;
+ MIDIPROP_LOOPING = 00000005;
+ MIDIPROP_GENERALMIDI = 00000006;
+
+//* Some useful defines to help with Standard MIDI File Format stuff */
+ SMF_TIMEDIV_QUARTERNOTE = 0;
+ SMF_TIMEDIV_SECONDS = 1;
+
+
+function SMF_TIMEDIV(format:DWORD; division:DWORD):DWORD;
+function SMF_TIMEDIV_SMPTE(smpte:DWORD; division:DWORD):DWORD;
+function SMF_TIMEDIV_ISSMPTE(dw:DWORD):DWORD;
+function SMF_TIMEDIV_GETSMPTE(dw:DWORD):byte;
+function SMF_TIMEDIV_GETTPF(dw:DWORD):DWORD;
+function SMF_TIMEDIV_GETTPQN(dw:DWORD):DWORD;
+
+type
+ midiproptimediv_tag = record
+ cbStruct:DWORD;
+ dwTimeDiv:DWORD;
+ end;
+ MIDIPROPTIMEDIV = midiproptimediv_tag;
+ LPMIDIPROPTIMEDIV = ^midiproptimediv_tag;
+
+type
+ midiproptempo_tag = record
+ cbStruct:DWORD;
+ dwTempo:DWORD;
+ end;
+ MIDIPROPTEMPO = midiproptempo_tag;
+ LPMIDIPROPTEMPO = ^midiproptempo_tag;
+
+const
+ MIDIPROP_PROPVAL = $3FFFFFFF; //* Internal */
+
+// The library exports midi-functions.
+{$IFDEF _WIN32}
+const
+ MIDIDLL = 'winmm.dll';
+{$ELSE _WIN32}
+const
+ MIDIDLL = KernelDLL;
+{$ENDIF _WIN32}
+
+//* MIDI function prototypes */
+function midiOutGetNumDevs:UINT; external MIDIDLL name 'midiOutGetNumDevs';
+function midiStreamOpen(phms:LPHMIDISTRM; puDeviceID:LPUINT; cMidi:DWORD; dwCallback:DWORD; dwInstance:DWORD; fdwOpen:DWORD):MMRESULT; external MIDIDLL name 'midiStreamOpen'; // index
+function midiStreamClose(hms:HMIDISTRM):MMRESULT; external MIDIDLL name 'midiStreamClose'; // index
+
+function midiStreamProperty(hms:HMIDISTRM; lppropdata:LPBYTE; dwProperty:DWORD):MMRESULT; external MIDIDLL name 'midiStreamProperty'; // index
+function midiStreamPosition(hms:HMIDISTRM; lpmmt:LPMMTIME; cbmmt:UINT):MMRESULT; external MIDIDLL name 'midiStreamPosition'; // index
+
+function midiStreamOut(hms:HMIDISTRM; pmh:LPMIDIHDR; cbmh:UINT):MMRESULT; external MIDIDLL name 'midiStreamOut'; // index
+function midiStreamPause(hms:HMIDISTRM):MMRESULT; external MIDIDLL name 'midiStreamPause'; // index
+function midiStreamRestart(hms:HMIDISTRM):MMRESULT; external MIDIDLL name 'midiStreamRestart'; // index
+function midiStreamStop(hms:HMIDISTRM):MMRESULT; external MIDIDLL name 'midiStreamStop'; // index
+
+{$IFDEF _WIN32}
+function midiConnect(hmi:HMIDI; hmo:HMIDIOUT; pReserved:LPVOID):MMRESULT; external MIDIDLL name 'midiConnect'; // index
+function midiDisconnect(hmi:HMIDI; hmo:HMIDIOUT; pReserved:LPVOID):MMRESULT; external MIDIDLL name 'midiDisconnect'; // index
+{$ENDIF} // _WIN32
+
+
+{$IFDEF _WIN32}
+function midiOutGetDevCapsA(uDeviceID:UINT; pmoc:LPMIDIOUTCAPSA; cbmoc:UINT):MMRESULT; external MIDIDLL name 'midiOutGetDevCapsA'; // index
+function midiOutGetDevCapsW(uDeviceID:UINT; pmoc:LPMIDIOUTCAPSW; cbmoc:UINT):MMRESULT; external MIDIDLL name 'midiOutGetDevCapsW'; // index
+{$IFDEF UNICODE}
+function midiOutGetDevCaps(uDeviceID:UINT; pmoc:LPMIDIOUTCAPSW; cbmoc:UINT):MMRESULT; external MIDIDLL name 'midiOutGetDevCapsW'; // index
+{$ELSE} // UNICODE
+function midiOutGetDevCaps(uDeviceID:UINT; pmoc:LPMIDIOUTCAPSA; cbmoc:UINT):MMRESULT; external MIDIDLL name 'midiOutGetDevCapsA'; // index
+{$ENDIF} // UNICODE
+
+{$ELSE} // _WIN32
+function midiOutGetDevCaps(uDeviceID:UINT; pmoc:LPMIDIOUTCAPS; cbmoc:UINT):MMRESULT; external MIDIDLL name 'midiOutGetDevCaps'; // index
+{$ENDIF} // _WIN32
+
+function midiOutGetVolume(hmo:HMIDIOUT; pdwVolume:LPDWORD):MMRESULT; external MIDIDLL name 'midiOutGetVolume'; // index
+function midiOutSetVolume(hmo:HMIDIOUT; dwVolume:DWORD):MMRESULT; external MIDIDLL name 'midiOutSetVolume'; // index
+
+{$IFDEF _WIN32}
+function midiOutGetErrorTextA(mmrError:MMRESULT; pszText:LPSTR; cchText:UINT):MMRESULT; external MIDIDLL name 'midiOutGetErrorTextA'; // index
+function midiOutGetErrorTextW(mmrError:MMRESULT; pszText:LPWSTR; cchText:UINT):MMRESULT; external MIDIDLL name 'midiOutGetErrorTextW'; // index
+{$IFDEF UNICODE}
+function midiOutGetErrorText(mmrError:MMRESULT; pszText:LPWSTR; cchText:UINT):MMRESULT; external MIDIDLL name 'midiOutGetErrorTextW'; // index
+{$ELSE} // UNICODE
+function midiOutGetErrorText(mmrError:MMRESULT; pszText:LPSTR; cchText:UINT):MMRESULT; external MIDIDLL name 'midiOutGetErrorTextA'; // index
+{$ENDIF} // UNICODE
+{$ELSE} // _WIN32
+function midiOutGetErrorText(mmrError:MMRESULT; pszText:LPSTR; cchText:UINT):MMRESULT; external MIDIDLL name 'midiOutGetErrorText'; // index
+{$ENDIF} // _WIN32
+
+function midiOutOpen(phmo:LPHMIDIOUT; uDeviceID:UINT;
+ dwCallback:DWORD; dwInstance:DWORD; fdwOpen:DWORD):MMRESULT; external MIDIDLL name 'midiOutOpen'; // index
+function midiOutClose(hmo:HMIDIOUT):MMRESULT; external MIDIDLL name 'midiOutClose'; // index
+function midiOutPrepareHeader(hmo:HMIDIOUT; pmh:LPMIDIHDR; cbmh:UINT):MMRESULT; external MIDIDLL name 'midiOutPrepareHeader'; // index
+function midiOutUnprepareHeader(hmo:HMIDIOUT; pmh:LPMIDIHDR; cbmh:UINT):MMRESULT; external MIDIDLL name 'midiOutUnprepareHeader'; // index
+function midiOutShortMsg(hmo:HMIDIOUT; dwMsg:DWORD):MMRESULT; external MIDIDLL name 'midiOutShortMsg'; // index
+function midiOutLongMsg(hmo:HMIDIOUT; pmh:LPMIDIHDR; cbmh:UINT):MMRESULT; external MIDIDLL name 'midiOutLongMsg'; // index
+function midiOutReset(hmo:HMIDIOUT):MMRESULT; external MIDIDLL name 'midiOutReset'; // index
+function midiOutCachePatches(hmo:HMIDIOUT; uBank:UINT; pwpa:LPWORD; fuCache:UINT):MMRESULT; external MIDIDLL name 'midiOutCachePatches'; // index
+function midiOutCacheDrumPatches(hmo:HMIDIOUT; uPatch:UINT; pwkya:LPWORD; fuCache:UINT):MMRESULT; external MIDIDLL name 'midiOutCacheDrumPatches'; // index
+function midiOutGetID(hmo:HMIDIOUT; puDeviceID:LPUINT):MMRESULT; external MIDIDLL name 'midiOutGetID'; // index
+
+{$IFDEF _WIN32}
+function midiOutMessage(hmo:HMIDIOUT; uMsg:UINT; dw1:DWORD; dw2:DWORD):MMRESULT; external MIDIDLL name 'midiOutMessage'; // index
+{$ELSE} // _WIN32
+function midiOutMessage(hmo:HMIDIOUT; uMsg:UINT; dw1:DWORD; dw2:DWORD):DWORD; external MIDIDLL name 'midiOutMessage'; // index
+{$ENDIF} // _WIN32
+
+function midiInGetNumDevs:UINT; external MIDIDLL name 'midiInGetNumDevs'; // index
+
+{$IFDEF _WIN32}
+function midiInGetDevCapsA(uDeviceID:UINT; pmic:LPMIDIINCAPSA; cbmic:UINT):MMRESULT; external MIDIDLL name 'midiInGetDevCapsA'; // index
+function midiInGetDevCapsW(uDeviceID:UINT; pmic:LPMIDIINCAPSW; cbmic:UINT):MMRESULT; external MIDIDLL name 'midiInGetDevCapsW'; // index
+{$IFDEF UNICODE}
+function midiInGetDevCaps(uDeviceID:UINT; pmic:LPMIDIINCAPSW; cbmic:UINT):MMRESULT; external MIDIDLL name 'midiInGetDevCapsW'; // index
+{$ELSE} // UNICODE
+function midiInGetDevCaps(uDeviceID:UINT; pmic:LPMIDIINCAPSA; cbmic:UINT):MMRESULT; external MIDIDLL name 'midiInGetDevCapsA'; // index
+{$ENDIF} // UNICODE
+
+function midiInGetErrorTextA(mmrError:MMRESULT; pszText:LPSTR; cchText:UINT):MMRESULT; external MIDIDLL name 'midiInGetErrorTextA'; // index
+function midiInGetErrorTextW(mmrError:MMRESULT; pszText:LPWSTR; cchText:UINT):MMRESULT; external MIDIDLL name 'midiInGetErrorTextW'; // index
+{$IFDEF UNICODE}
+function midiInGetErrorText(mmrError:MMRESULT; pszText:LPWSTR; cchText:UINT):MMRESULT; external MIDIDLL name 'midiInGetErrorTextW'; // index
+{$ELSE} // UNICODE
+function midiInGetErrorText(mmrError:MMRESULT; pszText:LPSTR; cchText:UINT):MMRESULT; external MIDIDLL name 'midiInGetErrorTextA'; // index
+{$ENDIF} // UNICODE
+
+{$ELSE} // _WIN32
+function midiInGetDevCaps(uDeviceID:UINT; pmic:LPMIDIINCAPS; cbmic:UINT):MMRESULT; external MIDIDLL name 'midiInGetDevCaps'; // index
+function midiInGetErrorText(mmrError:MMRESULT; pszText:LPSTR; cchText:UINT):MMRESULT; external MIDIDLL name 'midiInGetErrorText'; // index
+{$ENDIF} // _WIN32
+
+function midiInOpen(phmi:LPHMIDIIN; uDeviceID:UINT;
+ dwCallback:DWORD; dwInstance:DWORD; fdwOpen:DWORD):MMRESULT; external MIDIDLL name 'midiInOpen'; // index
+function midiInClose(hmi:HMIDIIN):MMRESULT; external MIDIDLL name 'midiInClose'; // index
+function midiInPrepareHeader(hmi:HMIDIIN; pmh:LPMIDIHDR; cbmh:UINT):MMRESULT; external MIDIDLL name 'midiInPrepareHeader'; // index
+function midiInUnprepareHeader(hmi:HMIDIIN; pmh:LPMIDIHDR; cbmh:UINT):MMRESULT; external MIDIDLL name 'midiInUnprepareHeader'; // index
+function midiInAddBuffer(hmi:HMIDIIN; pmh:LPMIDIHDR; cbmh:UINT):MMRESULT; external MIDIDLL name 'midiInAddBuffer'; // index
+function midiInStart(hmi:HMIDIIN):MMRESULT; external MIDIDLL name 'midiInStart'; // index
+function midiInStop(hmi:HMIDIIN):MMRESULT; external MIDIDLL name 'midiInStop'; // index
+function midiInReset(hmi:HMIDIIN):MMRESULT; external MIDIDLL name 'midiInReset'; // index
+function midiInGetID(hmi:HMIDIIN; puDeviceID:LPUINT):MMRESULT; external MIDIDLL name 'midiInGetID'; // index
+
+{$IFDEF _WIN32}
+function midiInMessage(hmi:HMIDIIN; uMsg:UINT; dw1:DWORD; dw2:DWORD):MMRESULT; external MIDIDLL name 'midiInMessage'; // index
+{$ELSE} // _WIN32
+function midiInMessage(hmi:HMIDIIN; uMsg:UINT; dw1:DWORD; dw2:DWORD):DWORD; external MIDIDLL name 'midiInMessage'; // index
+{$ENDIF} // _WIN32
+
+{$ENDIF} // MMNOMIDI
+
+
+
+{$IFNDEF MMNOMIXER}
+{****************************************************************************
+
+ Mixer Support
+
+****************************************************************************}
+
+type
+ HMIXEROBJ = HANDLE;
+ LPHMIXEROBJ = ^HMIXEROBJ;
+
+ HMIXER = HANDLE;
+ LPHMIXER = ^HMIXER;
+
+const
+ MIXER_SHORT_NAME_CHARS = 16;
+ MIXER_LONG_NAME_CHARS = 64;
+
+//* */
+//* MMRESULT error return values specific to the mixer API */
+//* */
+//* */
+const
+ MIXERR_INVALLINE = MIXERR_BASE + 0;
+ MIXERR_INVALCONTROL = MIXERR_BASE + 1;
+ MIXERR_INVALVALUE = MIXERR_BASE + 2;
+ MIXERR_LASTERROR = MIXERR_BASE + 2;
+
+ MIXER_OBJECTF_HANDLE = $80000000;
+ MIXER_OBJECTF_MIXER = $00000000;
+ MIXER_OBJECTF_HMIXER = MIXER_OBJECTF_HANDLE or MIXER_OBJECTF_MIXER;
+ MIXER_OBJECTF_WAVEOUT = $10000000;
+ MIXER_OBJECTF_HWAVEOUT = MIXER_OBJECTF_HANDLE or MIXER_OBJECTF_WAVEOUT;
+ MIXER_OBJECTF_WAVEIN = $20000000;
+ MIXER_OBJECTF_HWAVEIN = MIXER_OBJECTF_HANDLE or MIXER_OBJECTF_WAVEIN;
+ MIXER_OBJECTF_MIDIOUT = $30000000;
+ MIXER_OBJECTF_HMIDIOUT = MIXER_OBJECTF_HANDLE or MIXER_OBJECTF_MIDIOUT;
+ MIXER_OBJECTF_MIDIIN = $40000000;
+ MIXER_OBJECTF_HMIDIIN = MIXER_OBJECTF_HANDLE or MIXER_OBJECTF_MIDIIN;
+ MIXER_OBJECTF_AUX = $50000000;
+
+function mixerGetNumDevs:UINT; external KernelDLL name 'mixerGetNumDevs'; // index 2AE
+
+type
+ tagMIXERCAPS = record
+ wMid:word; //* manufacturer id */
+ wPid:word; //* product id */
+ vDriverVersion:MMVERSION; //* version of the driver */
+ szPname:array[0..MAXPNAMELEN-1] of TCHAR; //* product name */
+ fdwSupport:DWORD; //* misc. support bits */
+ cDestinations:DWORD; //* count of destinations */
+ end;
+ MIXERCAPS = tagMIXERCAPS;
+ PMIXERCAPS = ^tagMIXERCAPS;
+ LPMIXERCAPS = ^tagMIXERCAPS;
+
+function mixerGetDevCaps(uMxId:UINT; pmxcaps:LPMIXERCAPS; cbmxcaps:UINT):MMRESULT; external KernelDLL name 'mixerGetDevCaps'; // index 2AA
+
+function mixerOpen(phmx:LPHMIXER; uMxId:UINT; dwCallback:DWORD; dwInstance:DWORD; fdwOpen:DWORD):MMRESULT; external KernelDLL name 'mixerOpen'; // index 2B0
+
+function mixerClose(hmx:HMIXER):MMRESULT; external KernelDLL name 'mixerClose'; // index 2B2
+
+function mixerMessage(hmx:HMIXER; uMsg:UINT; dwParam1:DWORD; dwParam2:DWORD):DWORD; external KernelDLL name 'mixerMessage'; // index 2AF
+
+type
+ tMIXERLINE = record
+ cbStruct:DWORD; //* size of MIXERLINE structure */
+ dwDestination:DWORD; //* zero based destination index */
+ dwSource:DWORD; //* zero based source index (if source) */
+ dwLineID:DWORD; //* unique line id for mixer device */
+ fdwLine:DWORD; //* state/information about line */
+ dwUser:DWORD; //* driver specific information */
+ dwComponentType:DWORD; //* component type line connects to */
+ cChannels:DWORD; //* number of channels line supports */
+ cConnections:DWORD; //* number of connections [possible] */
+ cControls:DWORD; //* number of controls at this line */
+ szShortName:array[0..MIXER_SHORT_NAME_CHARS-1] of TCHAR;
+ szName:array[0..MIXER_LONG_NAME_CHARS-1] of TCHAR;
+ Target:record
+ dwType:DWORD; //* MIXERLINE_TARGETTYPE_xxxx */
+ dwDeviceID:DWORD; //* target device ID of device type */
+ wMid:word; //* of target device */
+ wPid:word; //* " */
+ vDriverVersion:MMVERSION; //* " */
+ szPname:array[0..MAXPNAMELEN-1] of TCHAR; //* " */
+ end;
+ end;
+ MIXERLINE = tMIXERLINE;
+ PMIXERLINE = ^tMIXERLINE;
+ LPMIXERLINE = ^tMIXERLINE;
+
+//* */
+//* MIXERLINE.fdwLine */
+//* */
+//* */
+const
+ MIXERLINE_LINEF_ACTIVE = $00000001;
+ MIXERLINE_LINEF_DISCONNECTED = $00008000;
+ MIXERLINE_LINEF_SOURCE = $80000000;
+
+//* */
+//* MIXERLINE.dwComponentType */
+//* */
+//* component types for destinations and sources */
+//* */
+//* */
+ MIXERLINE_COMPONENTTYPE_DST_FIRST = $00000000;
+ MIXERLINE_COMPONENTTYPE_DST_UNDEFINED = MIXERLINE_COMPONENTTYPE_DST_FIRST + 0;
+ MIXERLINE_COMPONENTTYPE_DST_DIGITAL = MIXERLINE_COMPONENTTYPE_DST_FIRST + 1;
+ MIXERLINE_COMPONENTTYPE_DST_LINE = MIXERLINE_COMPONENTTYPE_DST_FIRST + 2;
+ MIXERLINE_COMPONENTTYPE_DST_MONITOR = MIXERLINE_COMPONENTTYPE_DST_FIRST + 3;
+ MIXERLINE_COMPONENTTYPE_DST_SPEAKERS = MIXERLINE_COMPONENTTYPE_DST_FIRST + 4;
+ MIXERLINE_COMPONENTTYPE_DST_HEADPHONES = MIXERLINE_COMPONENTTYPE_DST_FIRST + 5;
+ MIXERLINE_COMPONENTTYPE_DST_TELEPHONE = MIXERLINE_COMPONENTTYPE_DST_FIRST + 6;
+ MIXERLINE_COMPONENTTYPE_DST_WAVEIN = MIXERLINE_COMPONENTTYPE_DST_FIRST + 7;
+ MIXERLINE_COMPONENTTYPE_DST_VOICEIN = MIXERLINE_COMPONENTTYPE_DST_FIRST + 8;
+ MIXERLINE_COMPONENTTYPE_DST_LAST = MIXERLINE_COMPONENTTYPE_DST_FIRST + 8;
+
+ MIXERLINE_COMPONENTTYPE_SRC_FIRST = $00001000;
+ MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 0;
+ MIXERLINE_COMPONENTTYPE_SRC_DIGITAL = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 1;
+ MIXERLINE_COMPONENTTYPE_SRC_LINE = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 2;
+ MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 3;
+ MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 4;
+ MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 5;
+ MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 6;
+ MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 7;
+ MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 8;
+ MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 9;
+ MIXERLINE_COMPONENTTYPE_SRC_ANALOG = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10;
+ MIXERLINE_COMPONENTTYPE_SRC_LAST = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10;
+
+//* */
+//* MIXERLINE.Target.dwType */
+//* */
+//* */
+ MIXERLINE_TARGETTYPE_UNDEFINED = 0;
+ MIXERLINE_TARGETTYPE_WAVEOUT = 1;
+ MIXERLINE_TARGETTYPE_WAVEIN = 2;
+ MIXERLINE_TARGETTYPE_MIDIOUT = 3;
+ MIXERLINE_TARGETTYPE_MIDIIN = 4;
+ MIXERLINE_TARGETTYPE_AUX = 5;
+
+
+function mixerGetLineInfo(hmxobj:HMIXEROBJ; pmxl:LPMIXERLINE; fdwInfo:DWORD):MMRESULT; external KernelDLL name 'mixerGetLineInfo'; // index 2AD
+
+const
+ MIXER_GETLINEINFOF_DESTINATION = $00000000;
+ MIXER_GETLINEINFOF_SOURCE = $00000001;
+ MIXER_GETLINEINFOF_LINEID = $00000002;
+ MIXER_GETLINEINFOF_COMPONENTTYPE = $00000003;
+ MIXER_GETLINEINFOF_TARGETTYPE = $00000004;
+
+ MIXER_GETLINEINFOF_QUERYMASK = $0000000F;
+
+function mixerGetID(hmxobj:HMIXEROBJ; puMxId:LPUINT; fdwId:DWORD):MMRESULT; external KernelDLL name 'mixerGetID'; // index 2AB
+
+//* */
+//* MIXERCONTROL */
+//* */
+//* */
+type
+ tMIXERCONTROL = record
+ cbStruct:DWORD; //* size in bytes of MIXERCONTROL */
+ dwControlID:DWORD; //* unique control id for mixer device */
+ dwControlType:DWORD; //* MIXERCONTROL_CONTROLTYPE_xxx */
+ fdwControl:DWORD; //* MIXERCONTROL_CONTROLF_xxx */
+ cMultipleItems:DWORD; //* if MIXERCONTROL_CONTROLF_MULTIPLE set */
+ szShortName:array[0..MIXER_SHORT_NAME_CHARS-1] of TCHAR;
+ szName:array[0..MIXER_LONG_NAME_CHARS-1] of TCHAR;
+ Bounds:record
+ case DWORD of
+ 0: (lMinimum:LONG; //* signed minimum for this control */
+ lMaximum:LONG); //* signed maximum for this control */
+ 1: (dwMinimum:DWORD; //* unsigned minimum for this control */
+ dwMaximum:DWORD); //* unsigned maximum for this control */
+ 2: (dwReserved:array[0..5] of DWORD);
+ end;
+ Metrics:record
+ case DWORD of
+ 0: (cSteps:DWORD); //* # of steps between min & max */
+ 1: (cbCustomData:DWORD); //* size in bytes of custom data */
+ 2: (dwReserved:array[0..5] of DWORD);
+ end;
+ end;
+ MIXERCONTROL = tMIXERCONTROL;
+ PMIXERCONTROL = ^tMIXERCONTROL;
+ LPMIXERCONTROL = ^tMIXERCONTROL;
+
+const
+//* */
+//* MIXERCONTROL.fdwControl */
+//* */
+//* */
+ MIXERCONTROL_CONTROLF_UNIFORM = $00000001;
+ MIXERCONTROL_CONTROLF_MULTIPLE = $00000002;
+ MIXERCONTROL_CONTROLF_DISABLED = $80000000;
+
+//* */
+//* MIXERCONTROL_CONTROLTYPE_xxx building block defines */
+//* */
+//* */
+ MIXERCONTROL_CT_CLASS_MASK = $F0000000;
+ MIXERCONTROL_CT_CLASS_CUSTOM = $00000000;
+ MIXERCONTROL_CT_CLASS_METER = $10000000;
+ MIXERCONTROL_CT_CLASS_SWITCH = $20000000;
+ MIXERCONTROL_CT_CLASS_NUMBER = $30000000;
+ MIXERCONTROL_CT_CLASS_SLIDER = $40000000;
+ MIXERCONTROL_CT_CLASS_FADER = $50000000;
+ MIXERCONTROL_CT_CLASS_TIME = $60000000;
+ MIXERCONTROL_CT_CLASS_LIST = $70000000;
+
+ MIXERCONTROL_CT_SUBCLASS_MASK = $0F000000;
+
+ MIXERCONTROL_CT_SC_SWITCH_BOOLEAN = $00000000;
+ MIXERCONTROL_CT_SC_SWITCH_BUTTON = $01000000;
+
+ MIXERCONTROL_CT_SC_METER_POLLED = $00000000;
+
+ MIXERCONTROL_CT_SC_TIME_MICROSECS = $00000000;
+ MIXERCONTROL_CT_SC_TIME_MILLISECS = $01000000;
+
+ MIXERCONTROL_CT_SC_LIST_SINGLE = $00000000;
+ MIXERCONTROL_CT_SC_LIST_MULTIPLE = $01000000;
+
+ MIXERCONTROL_CT_UNITS_MASK = $00FF0000;
+ MIXERCONTROL_CT_UNITS_CUSTOM = $00000000;
+ MIXERCONTROL_CT_UNITS_BOOLEAN = $00010000;
+ MIXERCONTROL_CT_UNITS_SIGNED = $00020000;
+ MIXERCONTROL_CT_UNITS_UNSIGNED = $00030000;
+ MIXERCONTROL_CT_UNITS_DECIBELS = $00040000; //* in 10ths */
+ MIXERCONTROL_CT_UNITS_PERCENT = $00050000; //* in 10ths */
+
+//* */
+//* Commonly used control types for specifying MIXERCONTROL.dwControlType */
+//* */
+
+ MIXERCONTROL_CONTROLTYPE_CUSTOM = MIXERCONTROL_CT_CLASS_CUSTOM or MIXERCONTROL_CT_UNITS_CUSTOM;
+ MIXERCONTROL_CONTROLTYPE_BOOLEANMETER = MIXERCONTROL_CT_CLASS_METER or MIXERCONTROL_CT_SC_METER_POLLED or MIXERCONTROL_CT_UNITS_BOOLEAN;
+ MIXERCONTROL_CONTROLTYPE_SIGNEDMETER = MIXERCONTROL_CT_CLASS_METER or MIXERCONTROL_CT_SC_METER_POLLED or MIXERCONTROL_CT_UNITS_SIGNED;
+ MIXERCONTROL_CONTROLTYPE_PEAKMETER = MIXERCONTROL_CONTROLTYPE_SIGNEDMETER + 1;
+ MIXERCONTROL_CONTROLTYPE_UNSIGNEDMETER = MIXERCONTROL_CT_CLASS_METER or MIXERCONTROL_CT_SC_METER_POLLED or MIXERCONTROL_CT_UNITS_UNSIGNED;
+ MIXERCONTROL_CONTROLTYPE_BOOLEAN = MIXERCONTROL_CT_CLASS_SWITCH or MIXERCONTROL_CT_SC_SWITCH_BOOLEAN or MIXERCONTROL_CT_UNITS_BOOLEAN;
+ MIXERCONTROL_CONTROLTYPE_ONOFF = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 1;
+ MIXERCONTROL_CONTROLTYPE_MUTE = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 2;
+ MIXERCONTROL_CONTROLTYPE_MONO = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 3;
+ MIXERCONTROL_CONTROLTYPE_LOUDNESS = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 4;
+ MIXERCONTROL_CONTROLTYPE_STEREOENH = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 5;
+
+// - mmreg.h
+ MIXERCONTROL_CONTROLTYPE_SRS_MTS = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 6;
+ MIXERCONTROL_CONTROLTYPE_SRS_ONOFF = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 7;
+ MIXERCONTROL_CONTROLTYPE_SRS_SYNTHSELECT = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 8;
+// - end of mmreg.h
+
+ MIXERCONTROL_CONTROLTYPE_BUTTON = MIXERCONTROL_CT_CLASS_SWITCH or MIXERCONTROL_CT_SC_SWITCH_BUTTON or MIXERCONTROL_CT_UNITS_BOOLEAN;
+ MIXERCONTROL_CONTROLTYPE_DECIBELS = MIXERCONTROL_CT_CLASS_NUMBER or MIXERCONTROL_CT_UNITS_DECIBELS;
+ MIXERCONTROL_CONTROLTYPE_SIGNED = MIXERCONTROL_CT_CLASS_NUMBER or MIXERCONTROL_CT_UNITS_SIGNED;
+ MIXERCONTROL_CONTROLTYPE_UNSIGNED = MIXERCONTROL_CT_CLASS_NUMBER or MIXERCONTROL_CT_UNITS_UNSIGNED;
+ MIXERCONTROL_CONTROLTYPE_PERCENT = MIXERCONTROL_CT_CLASS_NUMBER or MIXERCONTROL_CT_UNITS_PERCENT;
+ MIXERCONTROL_CONTROLTYPE_SLIDER = MIXERCONTROL_CT_CLASS_SLIDER or MIXERCONTROL_CT_UNITS_SIGNED;
+ MIXERCONTROL_CONTROLTYPE_PAN = MIXERCONTROL_CONTROLTYPE_SLIDER + 1;
+ MIXERCONTROL_CONTROLTYPE_QSOUNDPAN = MIXERCONTROL_CONTROLTYPE_SLIDER + 2;
+ MIXERCONTROL_CONTROLTYPE_FADER = MIXERCONTROL_CT_CLASS_FADER or MIXERCONTROL_CT_UNITS_UNSIGNED;
+ MIXERCONTROL_CONTROLTYPE_VOLUME = MIXERCONTROL_CONTROLTYPE_FADER + 1;
+ MIXERCONTROL_CONTROLTYPE_BASS = MIXERCONTROL_CONTROLTYPE_FADER + 2;
+ MIXERCONTROL_CONTROLTYPE_TREBLE = MIXERCONTROL_CONTROLTYPE_FADER + 3;
+ MIXERCONTROL_CONTROLTYPE_EQUALIZER = MIXERCONTROL_CONTROLTYPE_FADER + 4;
+ MIXERCONTROL_CONTROLTYPE_SINGLESELECT = MIXERCONTROL_CT_CLASS_LIST or MIXERCONTROL_CT_SC_LIST_SINGLE or MIXERCONTROL_CT_UNITS_BOOLEAN;
+ MIXERCONTROL_CONTROLTYPE_MUX = MIXERCONTROL_CONTROLTYPE_SINGLESELECT + 1;
+ MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT = MIXERCONTROL_CT_CLASS_LIST or MIXERCONTROL_CT_SC_LIST_MULTIPLE or MIXERCONTROL_CT_UNITS_BOOLEAN;
+ MIXERCONTROL_CONTROLTYPE_MIXER = MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT + 1;
+ MIXERCONTROL_CONTROLTYPE_MICROTIME = MIXERCONTROL_CT_CLASS_TIME or MIXERCONTROL_CT_SC_TIME_MICROSECS or MIXERCONTROL_CT_UNITS_UNSIGNED;
+ MIXERCONTROL_CONTROLTYPE_MILLITIME = MIXERCONTROL_CT_CLASS_TIME or MIXERCONTROL_CT_SC_TIME_MILLISECS or MIXERCONTROL_CT_UNITS_UNSIGNED;
+
+//* */
+//* MIXERLINECONTROLS */
+//* */
+type
+ tMIXERLINECONTROLS = record
+ cbStruct:DWORD; //* size in bytes of MIXERLINECONTROLS */
+ dwLineID:DWORD; //* line id (from MIXERLINE.dwLineID) */
+ case DWORD of
+ 0: (dwControlID:DWORD); //* MIXER_GETLINECONTROLSF_ONEBYID */
+ 1: (dwControlType:DWORD; //* MIXER_GETLINECONTROLSF_ONEBYTYPE */
+ cControls:DWORD; //* count of controls pmxctrl points to */
+ cbmxctrl:DWORD; //* size in bytes of _one_ MIXERCONTROL */
+ pamxctrl:LPMIXERCONTROL); //* pointer to first MIXERCONTROL array */
+ end;
+ MIXERLINECONTROLS = tMIXERLINECONTROLS;
+ PMIXERLINECONTROLS = ^tMIXERLINECONTROLS;
+ LPMIXERLINECONTROLS = ^tMIXERLINECONTROLS;
+
+function mixerGetLineControls(hmxobj:HMIXEROBJ; pmxlc:LPMIXERLINECONTROLS; fdwControls:DWORD):MMRESULT; external KernelDLL name 'mixerGetLineControls'; // index 2AC
+
+const
+ MIXER_GETLINECONTROLSF_ALL = $00000000;
+ MIXER_GETLINECONTROLSF_ONEBYID = $00000001;
+ MIXER_GETLINECONTROLSF_ONEBYTYPE = $00000002;
+
+ MIXER_GETLINECONTROLSF_QUERYMASK = $0000000F;
+
+type
+ tMIXERCONTROLDETAILS = record
+ cbStruct:DWORD; //* size in bytes of MIXERCONTROLDETAILS */
+ dwControlID:DWORD; //* control id to get/set details on */
+ cChannels:DWORD; //* number of channels in paDetails array */
+ case DWORD of
+ 0: (hwndOwner:HWND); //* for MIXER_SETCONTROLDETAILSF_CUSTOM */
+ 1: (cMultipleItems:DWORD; //* if _MULTIPLE, the number of items per channel */
+ cbDetails:DWORD; //* size of _one_ details_XX struct */
+ paDetails:LPVOID); //* pointer to array of details_XX structs */
+ end;
+ MIXERCONTROLDETAILS = tMIXERCONTROLDETAILS;
+ PMIXERCONTROLDETAILS = ^tMIXERCONTROLDETAILS;
+ LPMIXERCONTROLDETAILS = ^tMIXERCONTROLDETAILS;
+
+//* */
+//* MIXER_GETCONTROLDETAILSF_LISTTEXT */
+//* */
+//* */
+type
+ tMIXERCONTROLDETAILS_LISTTEXT = record
+ dwParam1:DWORD;
+ dwParam2:DWORD;
+ szName:array[0..MIXER_LONG_NAME_CHARS-1] of TCHAR;
+ end;
+ MIXERCONTROLDETAILS_LISTTEXT = tMIXERCONTROLDETAILS_LISTTEXT;
+ PMIXERCONTROLDETAILS_LISTTEXT = ^tMIXERCONTROLDETAILS_LISTTEXT;
+ LPMIXERCONTROLDETAILS_LISTTEXT = ^tMIXERCONTROLDETAILS_LISTTEXT;
+
+//* */
+//* MIXER_GETCONTROLDETAILSF_VALUE */
+//* */
+//* */
+type
+ tMIXERCONTROLDETAILS_BOOLEAN = record
+ fValue:LONG;
+ end;
+ MIXERCONTROLDETAILS_BOOLEAN = tMIXERCONTROLDETAILS_BOOLEAN;
+ PMIXERCONTROLDETAILS_BOOLEAN = ^tMIXERCONTROLDETAILS_BOOLEAN;
+ LPMIXERCONTROLDETAILS_BOOLEAN = ^tMIXERCONTROLDETAILS_BOOLEAN;
+
+type
+ tMIXERCONTROLDETAILS_SIGNED = record
+ lValue:LONG;
+ end;
+ MIXERCONTROLDETAILS_SIGNED = tMIXERCONTROLDETAILS_SIGNED;
+ PMIXERCONTROLDETAILS_SIGNED = ^tMIXERCONTROLDETAILS_SIGNED;
+ LPMIXERCONTROLDETAILS_SIGNED = ^tMIXERCONTROLDETAILS_SIGNED;
+
+type
+ tMIXERCONTROLDETAILS_UNSIGNED = record
+ dwValue:DWORD;
+ end;
+ MIXERCONTROLDETAILS_UNSIGNED = tMIXERCONTROLDETAILS_UNSIGNED;
+ PMIXERCONTROLDETAILS_UNSIGNED = ^tMIXERCONTROLDETAILS_UNSIGNED;
+ LPMIXERCONTROLDETAILS_UNSIGNED = ^tMIXERCONTROLDETAILS_UNSIGNED;
+
+function mixerGetControlDetails(hmxobj:HMIXEROBJ; pmxcd:LPMIXERCONTROLDETAILS; fdwDetails:DWORD):MMRESULT; external KernelDLL name 'mixerGetControlDetails'; // index 2A9
+
+const
+ MIXER_GETCONTROLDETAILSF_VALUE = $00000000;
+ MIXER_GETCONTROLDETAILSF_LISTTEXT = $00000001;
+
+ MIXER_GETCONTROLDETAILSF_QUERYMASK = $0000000F;
+
+function mixerSetControlDetails(hmxobj:HMIXEROBJ; pmxcd:LPMIXERCONTROLDETAILS; fdwDetails:DWORD):MMRESULT; external KernelDLL name 'mixerSetControlDetails'; // index 2B1
+
+const
+ MIXER_SETCONTROLDETAILSF_VALUE = $00000000;
+ MIXER_SETCONTROLDETAILSF_CUSTOM = $00000001;
+
+ MIXER_SETCONTROLDETAILSF_QUERYMASK = $0000000F;
+
+{$ENDIF} // MMNOMIXER
+
+
+{$IFNDEF MMNOTIMER}
+{****************************************************************************
+
+ Timer support
+
+****************************************************************************}
+
+//* timer error return values */
+const
+ TIMERR_NOERROR = 0; //* no error */
+ TIMERR_NOCANDO = TIMERR_BASE+1; //* request not completed */
+ TIMERR_STRUCT = TIMERR_BASE+33; //* time struct size */
+
+//* timer data types */
+type
+ TIMECALLBACK = procedure(uTimerID:UINT; uMsg:UINT; dwUser:DWORD; dw1:DWORD; dw2:DWORD); cdecl;
+ LPTIMECALLBACK = TIMECALLBACK;
+
+//* flags for fuEvent parameter of timeSetEvent() function */
+const
+ TIME_ONESHOT = $0000; //* program timer for single event */
+ TIME_PERIODIC = $0001; //* program for continuous periodic event */
+
+{.$IFDEF _WIN32}
+ TIME_CALLBACK_FUNCTION = $0000; //* callback is function */
+ TIME_CALLBACK_EVENT_SET = $0010; //* callback is event - use SetEvent */
+ TIME_CALLBACK_EVENT_PULSE = $0020; //* callback is event - use PulseEvent */
+ TIME_CALLBACK_TYPEMASK = $00F0; //* Internal */
+{.$ENDIF} // _WIN32
+
+
+//* timer device capabilities data structure */
+type
+ timecaps_tag = record
+ wPeriodMin:UINT; //* minimum period supported */
+ wPeriodMax:UINT; //* maximum period supported */
+ end;
+ TIMECAPS = timecaps_tag;
+ PTIMECAPS = ^timecaps_tag;
+ NPTIMECAPS = ^timecaps_tag;
+ LPTIMECAPS = ^timecaps_tag;
+
+{$IFDEF _WIN32}
+const
+ MMTimerDLL = 'winmm.dll';
+{$ELSE _WIN32}
+const
+ MMTimerDLL = 'mmtimer.dll';
+{$ENDIF _WIN32}
+
+//* timer function prototypes */
+function timeGetSystemTime(pmmt:LPMMTIME; cbmmt:UINT):MMRESULT; external MMTimerDLL name 'timeGetSystemTime'; // index
+function timeGetTime:DWORD; external MMTimerDLL name 'timeGetTime'; // index
+function timeSetEvent(uDelay:UINT;
+ uResolution:UINT;
+ fptc:LPTIMECALLBACK;
+ dwUser:DWORD;
+ fuEvent:UINT):MMRESULT; external MMTimerDLL name 'timeSetEvent'; // index
+function timeKillEvent(uTimerID:UINT):MMRESULT; external MMTimerDLL name 'timeKillEvent'; // index
+function timeGetDevCaps(ptc:LPTIMECAPS; cbtc:UINT):MMRESULT; external MMTimerDLL name 'timeGetDevCaps'; // index
+function timeBeginPeriod(uPeriod:UINT):MMRESULT; external MMTimerDLL name 'timeBeginPeriod'; // index
+function timeEndPeriod(uPeriod:UINT):MMRESULT; external MMTimerDLL name 'timeEndPeriod'; // index
+function timeGetTimeSinceInterrupt:DWORD; external MMTimerDLL name 'timeGetTimeSinceInterrupt'; // index
+function timeGetHardwareFrequency:DWORD; external MMTimerDLL name 'timeGetHardwareFrequency'; // index
+
+{$ENDIF} // MMNOTIMER
+
+
+{$IFNDEF MMNOMMIO}
+{****************************************************************************
+
+ Multimedia File I/O support
+
+****************************************************************************}
+
+const
+//* MMIO error return values */
+ MMIOERR_BASE = 256;
+ MMIOERR_FILENOTFOUND = MMIOERR_BASE + 1; //* file not found */
+ MMIOERR_OUTOFMEMORY = MMIOERR_BASE + 2; //* out of memory */
+ MMIOERR_CANNOTOPEN = MMIOERR_BASE + 3; //* cannot open */
+ MMIOERR_CANNOTCLOSE = MMIOERR_BASE + 4; //* cannot close */
+ MMIOERR_CANNOTREAD = MMIOERR_BASE + 5; //* cannot read */
+ MMIOERR_CANNOTWRITE = MMIOERR_BASE + 6; //* cannot write */
+ MMIOERR_CANNOTSEEK = MMIOERR_BASE + 7; //* cannot seek */
+ MMIOERR_CANNOTEXPAND = MMIOERR_BASE + 8; //* cannot expand file */
+ MMIOERR_CHUNKNOTFOUND = MMIOERR_BASE + 9; //* chunk not found */
+ MMIOERR_UNBUFFERED = MMIOERR_BASE + 10; //* */
+ MMIOERR_PATHNOTFOUND = MMIOERR_BASE + 11; //* path incorrect */
+ MMIOERR_ACCESSDENIED = MMIOERR_BASE + 12; //* file was protected */
+ MMIOERR_SHARINGVIOLATION = MMIOERR_BASE + 13; //* file in use */
+ MMIOERR_NETWORKERROR = MMIOERR_BASE + 14; //* network not responding */
+ MMIOERR_TOOMANYOPENFILES = MMIOERR_BASE + 15; //* no more file handles */
+ MMIOERR_INVALIDFILE = MMIOERR_BASE + 16; //* default error file error */
+
+//* MMIO constants */
+ CFSEPCHAR = '+'; //* compound file name separator char. */
+
+//* MMIO data types */
+type
+ HPSTR = ^char; //* a huge version of LPSTR */
+
+ HMMIO = HANDLE; //* a handle to an open file */
+
+type
+ MMIOPROC = function(lpmmioinfo:LPSTR; uMsg:UINT; lParam1:LPARAM; lParam2:LPARAM):LRESULT; cdecl;
+ LPMMIOPROC = MMIOPROC;
+
+//* general MMIO information data structure */
+type
+ _MMIOINFO = record
+ //* general fields */
+ dwFlags:DWORD; //* general status flags */
+ fccIOProc:FOURCC; //* pointer to I/O procedure */
+ pIOProc:LPMMIOPROC; //* pointer to I/O procedure */
+ wErrorRet:UINT; //* place for error to be returned */
+ htask:HTASK; //* alternate local task */
+
+ //* fields maintained by MMIO functions during buffered I/O */
+ cchBuffer:LONG; //* size of I/O buffer (or 0L) */
+ pchBuffer:HPSTR; //* start of I/O buffer (or NULL) */
+ pchNext:HPSTR; //* pointer to next byte to read/write */
+ pchEndRead:HPSTR; //* pointer to last valid byte to read */
+ pchEndWrite:HPSTR; //* pointer to last byte to write */
+ lBufOffset:LONG; //* disk offset of start of buffer */
+
+ //* fields maintained by I/O procedure */
+ lDiskOffset:LONG; //* disk offset of next read or write */
+ adwInfo:array[0..2] of DWORD; //* data specific to type of MMIOPROC */
+
+ //* other fields maintained by MMIO */
+ dwReserved1:DWORD; //* reserved for MMIO use */
+ dwReserved2:DWORD; //* reserved for MMIO use */
+ hmmio:HMMIO; //* handle to open file */
+ end;
+ MMIOINFO = _MMIOINFO;
+ PMMIOINFO = ^_MMIOINFO;
+ NPMMIOINFO = ^_MMIOINFO;
+ LPMMIOINFO = ^_MMIOINFO;
+ LPCMMIOINFO = ^MMIOINFO;
+
+//* RIFF chunk information data structure */
+type
+ _MMCKINFO = record
+ ckid:FOURCC; //* chunk ID */
+ cksize:DWORD; //* chunk size */
+ fccType:FOURCC; //* form type or list type */
+ dwDataOffset:DWORD; //* offset of data portion of chunk */
+ dwFlags:DWORD; //* flags used by MMIO functions */
+ end;
+ MMCKINFO = _MMCKINFO;
+ PMMCKINFO = ^_MMCKINFO;
+ NPMMCKINFO = ^_MMCKINFO;
+ LPMMCKINFO = ^_MMCKINFO;
+ LPCMMCKINFO = ^MMCKINFO;
+
+const
+//* bit field masks */
+ MMIO_RWMODE = $00000003; //* open file for reading/writing/both */
+ MMIO_SHAREMODE = $00000070; //* file sharing mode number */
+
+//* read/write mode numbers (bit field MMIO_RWMODE) */
+ MMIO_READ = $00000000; //* open file for reading only */
+ MMIO_WRITE = $00000001; //* open file for writing only */
+ MMIO_READWRITE = $00000002; //* open file for reading and writing */
+
+//* various MMIO flags */
+ MMIO_FHOPEN = $0010; //* mmioClose: keep file handle open */
+ MMIO_EMPTYBUF = $0010; //* mmioFlush: empty the I/O buffer */
+ MMIO_TOUPPER = $0010; //* mmioStringToFOURCC: to u-case */
+ MMIO_INSTALLPROC = $00010000; //* mmioInstallIOProc: install MMIOProc */
+ MMIO_GLOBALPROC = $10000000; //* mmioInstallIOProc: install globally */
+ MMIO_REMOVEPROC = $00020000; //* mmioInstallIOProc: remove MMIOProc */
+ MMIO_UNICODEPROC = $01000000; //* mmioInstallIOProc: Unicode MMIOProc */
+ MMIO_FINDPROC = $00040000; //* mmioInstallIOProc: find an MMIOProc */
+ MMIO_FINDCHUNK = $0010; //* mmioDescend: find a chunk by ID */
+ MMIO_FINDRIFF = $0020; //* mmioDescend: find a LIST chunk */
+ MMIO_FINDLIST = $0040; //* mmioDescend: find a RIFF chunk */
+ MMIO_CREATERIFF = $0020; //* mmioCreateChunk: make a LIST chunk */
+ MMIO_CREATELIST = $0040; //* mmioCreateChunk: make a RIFF chunk */
+
+ MMIO_VALIDPROC = $10070000; //* valid for mmioInstallIOProc */ /* Internal */
+
+//* constants for dwFlags field of MMIOINFO */
+ MMIO_CREATE = $00001000; //* create new file (or truncate file) */
+ MMIO_PARSE = $00000100; //* parse new file returning path */
+ MMIO_DELETE = $00000200; //* create new file (or truncate file) */
+ MMIO_EXIST = $00004000; //* checks for existence of file */
+ MMIO_ALLOCBUF = $00010000; //* mmioOpen() should allocate a buffer */
+ MMIO_GETTEMP = $00020000; //* mmioOpen() should retrieve temp name */
+
+ MMIO_DIRTY = $10000000; //* I/O buffer is dirty */
+
+ MMIO_OPEN_VALID = $0003FFFF; //* valid flags for mmioOpen */ /* Internal */
+ MMIO_FLUSH_VALID = MMIO_EMPTYBUF; //* valid flags for mmioFlush */ /* Internal */
+ MMIO_ADVANCE_VALID = MMIO_WRITE or MMIO_READ; //* valid flags for mmioAdvance */ /* Internal */
+ MMIO_FOURCC_VALID = MMIO_TOUPPER; //* valid flags for mmioStringToFOURCC */ /* Internal */
+ MMIO_DESCEND_VALID = MMIO_FINDCHUNK or MMIO_FINDRIFF or MMIO_FINDLIST; //* Internal */
+ MMIO_CREATE_VALID = MMIO_CREATERIFF or MMIO_CREATELIST; //* Internal */
+
+//* share mode numbers (bit field MMIO_SHAREMODE) */
+ MMIO_COMPAT = $00000000; //* compatibility mode */
+ MMIO_EXCLUSIVE = $00000010; //* exclusive-access mode */
+ MMIO_DENYWRITE = $00000020; //* deny writing to other processes */
+ MMIO_DENYREAD = $00000030; //* deny reading to other processes */
+ MMIO_DENYNONE = $00000040; //* deny nothing to other processes */
+
+//* message numbers for MMIOPROC I/O procedure functions */
+ MMIOM_READ = MMIO_READ; //* read */
+ MMIOM_WRITE = MMIO_WRITE; //* write */
+ MMIOM_SEEK = 2; //* seek to a new position in file */
+ MMIOM_OPEN = 3; //* open file */
+ MMIOM_CLOSE = 4; //* close file */
+ MMIOM_WRITEFLUSH = 5; //* write and flush */
+
+ MMIOM_RENAME = 6; //* rename specified file */
+
+ MMIOM_USER = $8000; //* beginning of user-defined messages */
+
+//* standard four character codes */
+const
+ FOURCC_RIFF = FOURCC(byte(AnsiChar('R')) or
+ (byte(AnsiChar('I')) shl 8) or
+ (byte(AnsiChar('F')) shl 16) or
+ (byte(AnsiChar('F')) shl 24)
+ );
+
+
+ FOURCC_LIST = FOURCC(byte(AnsiChar('L')) or
+ (byte(AnsiChar('I')) shl 8) or
+ (byte(AnsiChar('S')) shl 16) or
+ (byte(AnsiChar('T')) shl 24)
+ );
+
+//* four character codes used to identify standard built-in I/O procedures */
+ FOURCC_DOS = FOURCC(byte(AnsiChar('D')) or
+ (byte(AnsiChar('O')) shl 8) or
+ (byte(AnsiChar('S')) shl 16) or
+ (byte(AnsiChar(' ')) shl 24)
+ );
+
+ FOURCC_MEM = FOURCC(byte(AnsiChar('M')) or
+ (byte(AnsiChar('E')) shl 8) or
+ (byte(AnsiChar('M')) shl 16) or
+ (byte(AnsiChar(' ')) shl 24)
+ );
+
+//* flags for mmioSeek() */
+const
+ SEEK_SET = 0; //* seek to an absolute position */
+ SEEK_CUR = 1; //* seek relative to current position */
+ SEEK_END = 2; //* seek relative to end of file */
+
+//* other constants */
+const
+ MMIO_DEFAULTBUFFER = 8192; //* default buffer size */
+
+{$ENDIF} // MMNOMMIO
+
+{$PACKRECORDS DEFAULT} // #include "poppack.h" /* Revert to default packing */
+
+implementation
+
+{ Was declared as
+ MAKEFOURCC(ch0, ch1, ch2, ch3) \
+ ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \
+ ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
+
+ mmioFOURCC(ch0, ch1, ch2, ch3) MAKEFOURCC(ch0, ch1, ch2, ch3)
+}
+function MAKEFOURCC(ch0:AnsiChar; ch1:AnsiChar; ch2:AnsiChar; ch3:AnsiChar):FOURCC; inline;
+begin
+ MAKEFOURCC:=DWORD(ch0) or
+ (DWORD(ch1) shl 8) or
+ (DWORD(ch2) shl 16) or
+ (DWORD(ch3) shl 24);
+end;
+
+function mmioFOURCC(ch0:AnsiChar; ch1:AnsiChar; ch2:AnsiChar; ch3:AnsiChar):FOURCC;
+begin
+ mmioFOURCC:=MAKEFOURCC(ch0,ch1,ch2,ch3);
+end;
+
+{ Was declared as
+#define sndAlias( ch0, ch1 ) \
+ ( SND_ALIAS_START + (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ))
+}
+function sndAlias(ch0:AnsiChar; ch1:AnsiChar):DWORD; inline;
+begin
+ sndAlias:=SND_ALIAS_START+(DWORD(ch0) or (DWORD(ch1) shl 8));
+end;
+
+function MEVT_EVENTTYPE(x:DWORD):byte; inline;
+begin
+ MEVT_EVENTTYPE:=byte(((x shr 24) and $FF));
+end;
+
+function MEVT_EVENTPARM(x:DWORD):DWORD; inline;
+begin
+ MEVT_EVENTPARM:=DWORD(x and $00FFFFFF);
+end;
+
+{$IFNDEF MMNOMIDI}
+function MIDIPROP_PROPERTY(mp:DWORD):DWORD; inline;
+begin
+ MIDIPROP_PROPERTY:=mp and (not (MIDIPROP_SET or MIDIPROP_GET));
+end;
+
+function SMF_TIMEDIV(format:DWORD; division:DWORD):DWORD; inline;
+begin
+ SMF_TIMEDIV:=(format shr 15) or division;
+end;
+
+function SMF_TIMEDIV_SMPTE(smpte:DWORD; division:DWORD):DWORD; inline;
+begin
+ SMF_TIMEDIV_SMPTE:=(smpte shl 8) or division;
+end;
+
+function SMF_TIMEDIV_ISSMPTE(dw:DWORD):DWORD; inline;
+begin
+ SMF_TIMEDIV_ISSMPTE:=dw shr 15;
+end;
+
+function SMF_TIMEDIV_GETSMPTE(dw:DWORD):byte; inline;
+begin
+ SMF_TIMEDIV_GETSMPTE:=byte((dw shr 8) and $ff);
+end;
+
+function SMF_TIMEDIV_GETTPF(dw:DWORD):DWORD; inline;
+begin
+ SMF_TIMEDIV_GETTPF:=dw and $ff;
+end;
+
+function SMF_TIMEDIV_GETTPQN(dw:DWORD):DWORD; inline;
+begin
+ SMF_TIMEDIV_GETTPQN:=dw and $7fff;
+end;
+
+{$ENDIF MMNOMIDI}
+
+end.
diff --git a/packages/winceunits/src/msacm.pp b/packages/winceunits/src/msacm.pp
new file mode 100644
index 0000000000..5433c3695c
--- /dev/null
+++ b/packages/winceunits/src/msacm.pp
@@ -0,0 +1,1182 @@
+{
+ 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.
+
+ ********************************************************************** }
+
+// -----------------------------------------------------------------------------
+//
+// msacm.h Audio Compression Manager Public Header File
+//
+// -----------------------------------------------------------------------------
+
+//
+// Microsoft Windows Mobile 6.0 for PocketPC SDK.
+//
+
+unit msacm;
+
+{$CALLING cdecl}
+{$PACKRECORDS 1} // #pragma pack(1) /* Assume byte packing throughout */
+
+interface
+
+uses Windows, mmreg;
+
+//
+// there are four types of 'handles' used by the ACM. the first three
+// are unique types that define specific objects:
+//
+// HACMDRIVERID: used to _identify_ an ACM driver. this identifier can be
+// used to _open_ the driver for querying details, etc about the driver.
+//
+// HACMDRIVER: used to manage a driver (codec, filter, etc). this handle
+// is much like a handle to other media drivers--you use it to send
+// messages to the converter, query for capabilities, etc.
+//
+// HACMSTREAM: used to manage a 'stream' (conversion channel) with the
+// ACM. you use a stream handle to convert data from one format/type
+// to another--much like dealing with a file handle.
+//
+//
+// the fourth handle type is a generic type used on ACM functions that
+// can accept two or more of the above handle types (for example the
+// acmMetrics and acmDriverID functions).
+//
+// HACMOBJ: used to identify ACM objects. this handle is used on functions
+// that can accept two or more ACM handle types.
+//
+type
+ HACMDRIVERID = HANDLE;
+ PHACMDRIVERID = ^HACMDRIVERID;
+ LPHACMDRIVERID = ^HACMDRIVERID;
+
+ HACMDRIVER = HANDLE;
+ PHACMDRIVER = ^HACMDRIVER;
+ LPHACMDRIVER = ^HACMDRIVER;
+
+ HACMSTREAM = HANDLE;
+ PHACMSTREAM = ^HACMSTREAM;
+ LPHACMSTREAM = ^HACMSTREAM;
+
+ HACMOBJ = HANDLE;
+ PHACMOBJ = ^HACMOBJ;
+ LPHACMOBJ = ^HACMOBJ;
+
+
+// - Module: msacmdrv.h
+// -----------------------------------------------------------------------------
+//
+// Audio Compression Manager Public Header File for Drivers
+//
+// -----------------------------------------------------------------------------
+
+const
+// Driver messages
+ DRV_LOAD = $0001;
+ DRV_ENABLE = $0002;
+ DRV_OPEN = $0003;
+ DRV_CLOSE = $0004;
+ DRV_DISABLE = $0005;
+ DRV_FREE = $0006;
+ DRV_CONFIGURE = $0007;
+ DRV_QUERYCONFIGURE = $0008;
+ DRV_INSTALL = $0009;
+ DRV_REMOVE = $000A;
+ DRV_EXITSESSION = $000B;
+ DRV_POWER = $000F;
+ DRV_RESERVED = $0800;
+ DRV_USER = $4000;
+
+type
+ DRVCONFIGINFOEX = record
+ dwDCISize:DWORD;
+ lpszDCISectionName:LPCWSTR;
+ lpszDCIAliasName:LPCWSTR;
+ dnDevNode:DWORD;
+ end;
+ PDRVCONFIGINFOEX = ^DRVCONFIGINFOEX;
+ NPDRVCONFIGINFOEX = ^DRVCONFIGINFOEX;
+ LPDRVCONFIGINFOEX = ^DRVCONFIGINFOEX;
+
+// LPARAM of DRV_CONFIGURE message
+type
+ tagDRVCONFIGINFO = record
+ dwDCISize:DWORD;
+ lpszDCISectionName:LPCWSTR;
+ lpszDCIAliasName:LPCWSTR;
+ end;
+ DRVCONFIGINFO = tagDRVCONFIGINFO;
+ PDRVCONFIGINFO = ^tagDRVCONFIGINFO;
+ NPDRVCONFIGINFO = ^tagDRVCONFIGINFO;
+ LPDRVCONFIGINFO = ^tagDRVCONFIGINFO;
+
+// Supported return values for DRV_CONFIGURE message
+const
+ DRVCNF_CANCEL = $0000;
+ DRVCNF_OK = $0001;
+ DRVCNF_RESTART = $0002;
+
+// return values from DriverProc() function
+const
+ DRV_CANCEL = DRVCNF_CANCEL;
+ DRV_OK = DRVCNF_OK;
+ DRV_RESTART = DRVCNF_RESTART;
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// ACM Driver Version:
+//
+// the version is a 32 bit number that is broken into three parts as
+// follows:
+//
+// bits 24 - 31: 8 bit _major_ version number
+// bits 16 - 23: 8 bit _minor_ version number
+// bits 0 - 15: 16 bit build number
+//
+// this is then displayed as follows:
+//
+// bMajor = (BYTE)(dwVersion >> 24)
+// bMinor = (BYTE)(dwVersion >> 16) &
+// wBuild = LOWORD(dwVersion)
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+function MAKE_ACM_VERSION(mjr:byte; mnr:byte; bld:word):DWORD;
+
+{$DEFINE ACMDRVOPENDESC_SECTIONNAME_CHARS}
+
+type
+ tACMDRVOPENDESC = record
+ cbStruct:DWORD; // sizeof(ACMDRVOPENDESC)
+ fccType:FOURCC; // 'audc'
+ fccComp:FOURCC; // sub-type (not used--must be 0)
+ dwVersion:DWORD; // current version of ACM opening you
+ dwFlags:DWORD; //
+ dwError:DWORD; // result from DRV_OPEN request
+ pszSectionName:LPCTSTR; // see DRVCONFIGINFO.lpszDCISectionName
+ pszAliasName:LPCTSTR; // see DRVCONFIGINFO.lpszDCIAliasName
+ dnDevNode:DWORD; // devnode id for pnp drivers.
+ end;
+ ACMDRVOPENDESC = tACMDRVOPENDESC;
+ PACMDRVOPENDESC = ^tACMDRVOPENDESC;
+ LPACMDRVOPENDESC = ^tACMDRVOPENDESC;
+
+type
+ tACMDRVSTREAMINSTANCE = record
+ cbStruct:DWORD;
+ pwfxSrc:LPWAVEFORMATEX;
+ pwfxDst:LPWAVEFORMATEX;
+ pwfltr:LPWAVEFILTER;
+ dwCallback:DWORD;
+ dwInstance:DWORD;
+ fdwOpen:DWORD;
+ fdwDriver:DWORD;
+ dwDriver:DWORD;
+ has:HACMSTREAM;
+ end;
+ ACMDRVSTREAMINSTANCE = tACMDRVSTREAMINSTANCE;
+ PACMDRVSTREAMINSTANCE = ^tACMDRVSTREAMINSTANCE;
+ LPACMDRVSTREAMINSTANCE = ^tACMDRVSTREAMINSTANCE;
+
+//
+// NOTE! this structure must match the ACMSTREAMHEADER in msacm.h but
+// defines more information for the driver writing convenience
+//
+type
+ LPACMDRVSTREAMHEADER = ^tACMDRVSTREAMHEADER;
+ tACMDRVSTREAMHEADER = record
+ cbStruct:DWORD;
+ fdwStatus:DWORD;
+ dwUser:DWORD;
+ pbSrc:LPBYTE;
+ cbSrcLength:DWORD;
+ cbSrcLengthUsed:DWORD;
+ dwSrcUser:DWORD;
+ pbDst:LPBYTE;
+ cbDstLength:DWORD;
+ cbDstLengthUsed:DWORD;
+ dwDstUser:DWORD;
+ fdwConvert:DWORD; // flags passed from convert func
+ padshNext:LPACMDRVSTREAMHEADER; // for async driver queueing
+ fdwDriver:DWORD; // driver instance flags
+ dwDriver:DWORD; // driver instance data
+
+ //
+ // all remaining fields are used by the ACM for bookkeeping purposes.
+ // an ACM driver should never use these fields (though than can be
+ // helpful for debugging)--note that the meaning of these fields
+ // may change, so do NOT rely on them in shipping code.
+ //
+ fdwPrepared:DWORD;
+ dwPrepared:DWORD;
+ pbPreparedSrc:LPBYTE;
+ cbPreparedSrcLength:DWORD;
+ pbPreparedDst:LPBYTE;
+ cbPreparedDstLength:DWORD;
+ end;
+ ACMDRVSTREAMHEADER = tACMDRVSTREAMHEADER;
+ PACMDRVSTREAMHEADER = ^tACMDRVSTREAMHEADER;
+
+//
+// structure for ACMDM_STREAM_SIZE message
+//
+type
+ tACMDRVSTREAMSIZE = record
+ cbStruct:DWORD;
+ fdwSize:DWORD;
+ cbSrcLength:DWORD;
+ cbDstLength:DWORD;
+ end;
+ ACMDRVSTREAMSIZE = tACMDRVSTREAMSIZE;
+ PACMDRVSTREAMSIZE = ^tACMDRVSTREAMSIZE;
+ LPACMDRVSTREAMSIZE = ^tACMDRVSTREAMSIZE;
+
+//
+// structure containing the information for the ACMDM_FORMAT_SUGGEST message
+//
+type
+ tACMDRVFORMATSUGGEST = record
+ cbStruct:DWORD; // sizeof(ACMDRVFORMATSUGGEST)
+ fdwSuggest:DWORD; // Suggest flags
+ pwfxSrc:LPWAVEFORMATEX; // Source Format
+ cbwfxSrc:DWORD; // Source Size
+ pwfxDst:LPWAVEFORMATEX; // Dest format
+ cbwfxDst:DWORD; // Dest Size
+ end;
+ ACMDRVFORMATSUGGEST = tACMDRVFORMATSUGGEST;
+ PACMDRVFORMATSUGGEST = ^tACMDRVFORMATSUGGEST;
+ LPACMDRVFORMATSUGGEST = ^tACMDRVFORMATSUGGEST;
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// ACM Driver Messages
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+const
+ ACMDM_USER = DRV_USER + $0000;
+ ACMDM_RESERVED_LOW = DRV_USER + $2000;
+ ACMDM_RESERVED_HIGH = DRV_USER + $2FFF;
+
+ ACMDM_BASE = ACMDM_RESERVED_LOW;
+
+ ACMDM_DRIVER_ABOUT = ACMDM_BASE + 11;
+
+const
+ ACMDM_DRIVER_NOTIFY = ACMDM_BASE + 1;
+ ACMDM_DRIVER_DETAILS = ACMDM_BASE + 10;
+
+ ACMDM_HARDWARE_WAVE_CAPS_INPUT = ACMDM_BASE + 20;
+ ACMDM_HARDWARE_WAVE_CAPS_OUTPUT = ACMDM_BASE + 21;
+
+ ACMDM_FORMATTAG_DETAILS = ACMDM_BASE + 25;
+ ACMDM_FORMAT_DETAILS = ACMDM_BASE + 26;
+ ACMDM_FORMAT_SUGGEST = ACMDM_BASE + 27;
+
+ ACMDM_FILTERTAG_DETAILS = ACMDM_BASE + 50;
+ ACMDM_FILTER_DETAILS = ACMDM_BASE + 51;
+
+ ACMDM_STREAM_OPEN = ACMDM_BASE + 76;
+ ACMDM_STREAM_CLOSE = ACMDM_BASE + 77;
+ ACMDM_STREAM_SIZE = ACMDM_BASE + 78;
+ ACMDM_STREAM_CONVERT = ACMDM_BASE + 79;
+ ACMDM_STREAM_RESET = ACMDM_BASE + 80;
+ ACMDM_STREAM_PREPARE = ACMDM_BASE + 81;
+ ACMDM_STREAM_UNPREPARE = ACMDM_BASE + 82;
+ ACMDM_STREAM_UPDATE = ACMDM_BASE + 83;
+
+// - End of module: msacmdrv.h
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+//
+//
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+const
+ DRV_MAPPER_PREFERRED_INPUT_GET = DRV_USER + 0;
+ DRV_MAPPER_PREFERRED_OUTPUT_GET = DRV_USER + 2;
+ DRVM_MAPPER_STATUS = $2000;
+
+ WIDM_MAPPER_STATUS = DRVM_MAPPER_STATUS + 0;
+ WAVEIN_MAPPER_STATUS_DEVICE = 0;
+ WAVEIN_MAPPER_STATUS_MAPPED = 1;
+ WAVEIN_MAPPER_STATUS_FORMAT = 2;
+
+ WODM_MAPPER_STATUS = DRVM_MAPPER_STATUS + 0;
+ WAVEOUT_MAPPER_STATUS_DEVICE = 0;
+ WAVEOUT_MAPPER_STATUS_MAPPED = 1;
+ WAVEOUT_MAPPER_STATUS_FORMAT = 2;
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// ACM Error Codes
+//
+// Note that these error codes are specific errors that apply to the ACM
+// directly--general errors are defined as MMSYSERR_*.
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+type
+ MMRESULT = UINT;
+
+const
+ ACMERR_BASE = 512;
+ ACMERR_NOTPOSSIBLE = ACMERR_BASE + 0;
+ ACMERR_BUSY = ACMERR_BASE + 1;
+ ACMERR_UNPREPARED = ACMERR_BASE + 2;
+ ACMERR_CANCELED = ACMERR_BASE + 3;
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// ACM Window Messages
+//
+// These window messages are sent by the ACM or ACM drivers to notify
+// applications of events.
+//
+// Note that these window message numbers will also be defined in
+// mmsystem.
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+const
+ MM_ACM_OPEN = $03D4; // MM_STREAM_OPEN // conversion callback messages
+ MM_ACM_CLOSE = $03D5; // MM_STREAM_CLOSE
+ MM_ACM_DONE = $03D6; // MM_STREAM_DONE
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmGetVersion()
+//
+// the ACM version is a 32 bit number that is broken into three parts as
+// follows:
+//
+// bits 24 - 31: 8 bit _major_ version number
+// bits 16 - 23: 8 bit _minor_ version number
+// bits 0 - 15: 16 bit build number
+//
+// this is then displayed as follows:
+//
+// bMajor = (BYTE)(dwVersion >> 24)
+// bMinor = (BYTE)(dwVersion >> 16) &
+// wBuild = LOWORD(dwVersion)
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+function acmGetVersion:DWORD; external KernelDLL name 'acmGetVersion'; // index 2A5
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmMetrics()
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+function acmMetrics(hao:HACMOBJ; uMetric:UINT; pMetric:LPVOID):MMRESULT; external KernelDLL name 'acmMetrics'; // index 2A6
+
+const
+ ACM_METRIC_COUNT_DRIVERS = 1;
+ ACM_METRIC_COUNT_CODECS = 2;
+ ACM_METRIC_COUNT_CONVERTERS = 3;
+ ACM_METRIC_COUNT_FILTERS = 4;
+ ACM_METRIC_COUNT_DISABLED = 5;
+ ACM_METRIC_COUNT_HARDWARE = 6;
+ ACM_METRIC_COUNT_LOCAL_DRIVERS = 20;
+ ACM_METRIC_COUNT_LOCAL_CODECS = 21;
+ ACM_METRIC_COUNT_LOCAL_CONVERTERS = 22;
+ ACM_METRIC_COUNT_LOCAL_FILTERS = 23;
+ ACM_METRIC_COUNT_LOCAL_DISABLED = 24;
+ ACM_METRIC_HARDWARE_WAVE_INPUT = 30;
+ ACM_METRIC_HARDWARE_WAVE_OUTPUT = 31;
+ ACM_METRIC_MAX_SIZE_FORMAT = 50;
+ ACM_METRIC_MAX_SIZE_FILTER = 51;
+ ACM_METRIC_DRIVER_SUPPORT = 100;
+ ACM_METRIC_DRIVER_PRIORITY = 101;
+
+
+//--------------------------------------------------------------------------;
+//
+// ACM Drivers
+//
+//--------------------------------------------------------------------------;
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmDriverEnum()
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+type
+ ACMDRIVERENUMCB = function(hadid:HACMDRIVERID; dwInstance:DWORD; fdwSupport:DWORD):BOOL; cdecl;
+
+
+function acmDriverEnum(fnCallback:ACMDRIVERENUMCB; dwInstance:DWORD; fdwEnum:DWORD):MMRESULT; external KernelDLL name 'acmDriverEnum'; // index 28E
+
+const
+ ACM_DRIVERENUMF_NOLOCAL = $40000000;
+ ACM_DRIVERENUMF_DISABLED = $80000000;
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmDriverID()
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+function acmDriverID(hao:HACMOBJ; phadid:LPHACMDRIVERID; fdwDriverID:DWORD):MMRESULT; external KernelDLL name 'acmDriverID'; // index 28F
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmDriverAdd()
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+function acmDriverAdd(phadid:LPHACMDRIVERID;
+ hinstModule:HINST;
+ lParam:LPARAM;
+ dwPriority:DWORD;
+ fdwAdd:DWORD):MMRESULT; external KernelDLL name 'acmDriverAdd'; // index 28B
+
+const
+ ACM_DRIVERADDF_NOTIFYHWND = $00000004; // lParam is notify hwnd
+
+
+//
+// prototype for ACM driver procedures that are installed as _functions_
+// or _notifications_ instead of as a standalone installable driver.
+//
+type
+ ACMDRIVERPROC = function(dwID:DWORD; hDrvID:HACMDRIVERID; uMsg:UINT; lParam1:LPARAM; lParam2:LPARAM):LRESULT; cdecl;
+ LPACMDRIVERPROC = ^ACMDRIVERPROC;
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmDriverRemove()
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+function acmDriverRemove(hadid:HACMDRIVERID; fdwRemove:DWORD):MMRESULT; external KernelDLL name 'acmDriverRemove'; // index 293
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmDriverOpen()
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+function acmDriverOpen(phad:LPHACMDRIVER; hadid:HACMDRIVERID; fdwOpen:DWORD):MMRESULT; external KernelDLL name 'acmDriverOpen'; // index 291
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmDriverClose()
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+function acmDriverClose(had:HACMDRIVER; fdwClose:DWORD):MMRESULT; external KernelDLL name 'acmDriverClose'; // index 28C
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmDriverMessage()
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+function acmDriverMessage(had:HACMDRIVER; uMsg:UINT; lParam1:LPARAM; lParam2:LPARAM):LRESULT; external KernelDLL name 'acmDriverMessage'; // index 290
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmDriverPriority
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+function acmDriverPriority(hadid:HACMDRIVERID; dwPriority:DWORD; fdwPriority:DWORD):MMRESULT; external KernelDLL name 'acmDriverPriority'; // index 292
+
+const
+ ACM_DRIVERPRIORITYF_ENABLE = $00000001;
+ ACM_DRIVERPRIORITYF_DISABLE = $00000002;
+ ACM_DRIVERPRIORITYF_ABLEMASK = $00000003;
+ ACM_DRIVERPRIORITYF_BEGIN = $00010000;
+ ACM_DRIVERPRIORITYF_END = $00020000;
+ ACM_DRIVERPRIORITYF_DEFERMASK = $00030000;
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmDriverDetails()
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+//
+// ACMDRIVERDETAILS
+//
+// the ACMDRIVERDETAILS structure is used to get various capabilities from
+// an ACM driver (codec, converter, filter).
+//
+const
+ ACMDRIVERDETAILS_SHORTNAME_CHARS = 32;
+ ACMDRIVERDETAILS_LONGNAME_CHARS = 128;
+ ACMDRIVERDETAILS_COPYRIGHT_CHARS = 80;
+ ACMDRIVERDETAILS_LICENSING_CHARS = 128;
+ ACMDRIVERDETAILS_FEATURES_CHARS = 512;
+
+type
+ tACMDRIVERDETAILS = record
+ cbStruct:DWORD; // number of valid bytes in structure
+ fccType:FOURCC; // compressor type 'audc'
+ fccComp:FOURCC; // sub-type (not used; reserved)
+
+ wMid:word; // manufacturer id
+ wPid:word; // product id
+
+ vdwACM:DWORD; // version of the ACM *compiled* for
+ vdwDriver:DWORD; // version of the driver
+
+ fdwSupport:DWORD; // misc. support flags
+ cFormatTags:DWORD; // total unique format tags supported
+ cFilterTags:DWORD; // total unique filter tags supported
+
+ _hicon:HICON; // handle to custom icon
+
+ szShortName:array[0..ACMDRIVERDETAILS_SHORTNAME_CHARS-1] of WCHAR;
+ szLongName:array[0..ACMDRIVERDETAILS_LONGNAME_CHARS-1] of WCHAR;
+ szCopyright:array[0..ACMDRIVERDETAILS_COPYRIGHT_CHARS-1] of WCHAR;
+ szLicensing:array[0..ACMDRIVERDETAILS_LICENSING_CHARS-1] of WCHAR;
+ szFeatures:array[0..ACMDRIVERDETAILS_FEATURES_CHARS-1] of WCHAR;
+ end;
+ _ACMDRIVERDETAILS = tACMDRIVERDETAILS;
+ PACMDRIVERDETAILS = ^tACMDRIVERDETAILS;
+ LPACMDRIVERDETAILS = ^tACMDRIVERDETAILS;
+
+
+//
+// ACMDRIVERDETAILS.fccType
+//
+// ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC: the FOURCC used in the fccType
+// field of the ACMDRIVERDETAILS structure to specify that this is an ACM
+// codec designed for audio.
+//
+//
+// ACMDRIVERDETAILS.fccComp
+//
+// ACMDRIVERDETAILS_FCCCOMP_UNDEFINED: the FOURCC used in the fccComp
+// field of the ACMDRIVERDETAILS structure. this is currently an unused
+// field.
+//
+const
+ ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC = FOURCC(byte(AnsiChar('a')) or
+ (byte(AnsiChar('u')) shl 8) or
+ (byte(AnsiChar('d')) shl 16) or
+ (byte(AnsiChar('c')) shl 24)
+ );
+
+ ACMDRIVERDETAILS_FCCCOMP_UNDEFINED = FOURCC(byte(AnsiChar(#0)) or
+ (byte(AnsiChar(#0)) shl 8) or
+ (byte(AnsiChar(#0)) shl 16) or
+ (byte(AnsiChar(#0)) shl 24)
+ );
+
+//
+// the following flags are used to specify the type of conversion(s) that
+// the converter/codec/filter supports. these are placed in the fdwSupport
+// field of the ACMDRIVERDETAILS structure. note that a converter can
+// support one or more of these flags in any combination.
+//
+// ACMDRIVERDETAILS_SUPPORTF_CODEC: this flag is set if the driver supports
+// conversions from one format tag to another format tag. for example, if a
+// converter compresses WAVE_FORMAT_PCM to WAVE_FORMAT_ADPCM, then this bit
+// should be set.
+//
+// ACMDRIVERDETAILS_SUPPORTF_CONVERTER: this flags is set if the driver
+// supports conversions on the same format tag. as an example, the PCM
+// converter that is built into the ACM sets this bit (and only this bit)
+// because it converts only PCM formats (bits, sample rate).
+//
+// ACMDRIVERDETAILS_SUPPORTF_FILTER: this flag is set if the driver supports
+// transformations on a single format. for example, a converter that changed
+// the 'volume' of PCM data would set this bit. 'echo' and 'reverb' are
+// also filter types.
+//
+// ACMDRIVERDETAILS_SUPPORTF_HARDWARE: this flag is set if the driver supports
+// hardware input and/or output through a waveform device.
+//
+// ACMDRIVERDETAILS_SUPPORTF_ASYNC: this flag is set if the driver supports
+// async conversions.
+//
+//
+// ACMDRIVERDETAILS_SUPPORTF_LOCAL: this flag is set _by the ACM_ if a
+// driver has been installed local to the current task. this flag is also
+// set in the fdwSupport argument to the enumeration callback function
+// for drivers.
+//
+// ACMDRIVERDETAILS_SUPPORTF_DISABLED: this flag is set _by the ACM_ if a
+// driver has been disabled. this flag is also passed set in the fdwSupport
+// argument to the enumeration callback function for drivers.
+//
+const
+ ACMDRIVERDETAILS_SUPPORTF_CODEC = $00000001;
+ ACMDRIVERDETAILS_SUPPORTF_CONVERTER = $00000002;
+ ACMDRIVERDETAILS_SUPPORTF_FILTER = $00000004;
+ ACMDRIVERDETAILS_SUPPORTF_HARDWARE = $00000008;
+ ACMDRIVERDETAILS_SUPPORTF_ASYNC = $00000010;
+ ACMDRIVERDETAILS_SUPPORTF_LOCAL = $40000000;
+ ACMDRIVERDETAILS_SUPPORTF_DISABLED = $80000000;
+
+function acmDriverDetails(hadid:HACMDRIVERID;
+ padd:LPACMDRIVERDETAILS;
+ fdwDetails:DWORD):MMRESULT; external KernelDLL name 'acmDriverDetails'; // index 28D
+
+
+
+//--------------------------------------------------------------------------;
+//
+// ACM Format Tags
+//
+//--------------------------------------------------------------------------;
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmFormatTagDetails()
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+const
+ ACMFORMATTAGDETAILS_FORMATTAG_CHARS = 48;
+
+type
+ tACMFORMATTAGDETAILSW = record
+ cbStruct:DWORD;
+ dwFormatTagIndex:DWORD;
+ dwFormatTag:DWORD;
+ cbFormatSize:DWORD;
+ fdwSupport:DWORD;
+ cStandardFormats:DWORD;
+ szFormatTag:array[0..ACMFORMATTAGDETAILS_FORMATTAG_CHARS-1] of WCHAR;
+ end;
+ tACMFORMATTAGDETAILS = tACMFORMATTAGDETAILSW;
+ _ACMFORMATTAGDETAILS = tACMFORMATTAGDETAILSW;
+ PACMFORMATTAGDETAILS = ^tACMFORMATTAGDETAILSW;
+ LPACMFORMATTAGDETAILS = ^tACMFORMATTAGDETAILSW;
+
+function acmFormatTagDetails(had:HACMDRIVER;
+ paftd:LPACMFORMATTAGDETAILS;
+ fdwDetails:DWORD):MMRESULT; external KernelDLL name 'acmFormatTagDetails'; // index 29B
+
+const
+ ACM_FORMATTAGDETAILSF_INDEX = $00000000;
+ ACM_FORMATTAGDETAILSF_FORMATTAG = $00000001;
+ ACM_FORMATTAGDETAILSF_LARGESTSIZE = $00000002;
+ ACM_FORMATTAGDETAILSF_QUERYMASK = $0000000F;
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmFormatTagEnum()
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+type
+ ACMFORMATTAGENUMCB = function(hadid:HACMDRIVERID;
+ paftd:LPACMFORMATTAGDETAILS;
+ dwInstance:DWORD;
+ fdwSupport:DWORD):BOOL; cdecl;
+
+function acmFormatTagEnum(had:HACMDRIVER;
+ paftd:LPACMFORMATTAGDETAILS;
+ fnCallback:ACMFORMATTAGENUMCB;
+ dwInstance:DWORD;
+ fdwEnum:DWORD):MMRESULT; external KernelDLL name 'acmFormatTagEnum'; // index 29C
+
+
+//--------------------------------------------------------------------------;
+//
+// ACM Formats
+//
+//--------------------------------------------------------------------------;
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmFormatDetails()
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+const
+ ACMFORMATDETAILS_FORMAT_CHARS = 128;
+
+type
+ tACMFORMATDETAILS = record
+ cbStruct:DWORD;
+ dwFormatIndex:DWORD;
+ dwFormatTag:DWORD;
+ fdwSupport:DWORD;
+ pwfx:LPWAVEFORMATEX;
+ cbwfx:DWORD;
+ szFormat:array[0..ACMFORMATDETAILS_FORMAT_CHARS-1] of WCHAR;
+ end;
+ _ACMFORMATDETAILS = tACMFORMATDETAILS;
+ PACMFORMATDETAILS = ^tACMFORMATDETAILS;
+ LPACMFORMATDETAILS = ^tACMFORMATDETAILS;
+
+function acmFormatDetails(had:HACMDRIVER; pafd:LPACMFORMATDETAILS; fdwDetails:DWORD):MMRESULT; external KernelDLL name 'acmFormatDetails'; // index 298
+
+const
+ ACM_FORMATDETAILSF_INDEX = $00000000;
+ ACM_FORMATDETAILSF_FORMAT = $00000001;
+ ACM_FORMATDETAILSF_QUERYMASK = $0000000F;
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmFormatEnum()
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+type
+ ACMFORMATENUMCB = function(hadid:HACMDRIVERID;
+ pafd:LPACMFORMATDETAILS;
+ dwInstance:DWORD;
+ fdwSupport:DWORD):BOOL; cdecl;
+
+function acmFormatEnum(had:HACMDRIVER;
+ pafd:LPACMFORMATDETAILS;
+ fnCallback:ACMFORMATENUMCB;
+ dwInstance:DWORD;
+ fdwEnum:DWORD):MMRESULT; external KernelDLL name 'acmFormatEnum'; // index 299
+
+const
+ ACM_FORMATENUMF_WFORMATTAG = $00010000;
+ ACM_FORMATENUMF_NCHANNELS = $00020000;
+ ACM_FORMATENUMF_NSAMPLESPERSEC = $00040000;
+ ACM_FORMATENUMF_WBITSPERSAMPLE = $00080000;
+ ACM_FORMATENUMF_CONVERT = $00100000;
+ ACM_FORMATENUMF_SUGGEST = $00200000;
+ ACM_FORMATENUMF_HARDWARE = $00400000;
+ ACM_FORMATENUMF_INPUT = $00800000;
+ ACM_FORMATENUMF_OUTPUT = $01000000;
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmFormatSuggest()
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+function acmFormatSuggest(had:HACMDRIVER;
+ pwfxSrc:LPWAVEFORMATEX;
+ pwfxDst:LPWAVEFORMATEX;
+ cbwfxDst:DWORD;
+ fdwSuggest:DWORD):MMRESULT; external KernelDLL name 'acmFormatSuggest'; // index 29A
+
+const
+ ACM_FORMATSUGGESTF_WFORMATTAG = $00010000;
+ ACM_FORMATSUGGESTF_NCHANNELS = $00020000;
+ ACM_FORMATSUGGESTF_NSAMPLESPERSEC = $00040000;
+ ACM_FORMATSUGGESTF_WBITSPERSAMPLE = $00080000;
+
+ ACM_FORMATSUGGESTF_TYPEMASK = $00FF0000;
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmFormatChoose()
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+const
+ ACMHELPMSGSTRING = 'acmchoose_help';
+ ACMHELPMSGCONTEXTMENU = 'acmchoose_contextmenu';
+ ACMHELPMSGCONTEXTHELP = 'acmchoose_contexthelp';
+
+//
+// MM_ACM_FORMATCHOOSE is sent to hook callbacks by the Format Chooser
+// Dialog...
+//
+const
+ MM_ACM_FORMATCHOOSE = $8000;
+
+ FORMATCHOOSE_MESSAGE = 0;
+ FORMATCHOOSE_FORMATTAG_VERIFY = FORMATCHOOSE_MESSAGE + 0;
+ FORMATCHOOSE_FORMAT_VERIFY = FORMATCHOOSE_MESSAGE + 1;
+ FORMATCHOOSE_CUSTOM_VERIFY = FORMATCHOOSE_MESSAGE + 2;
+
+type
+ ACMFORMATCHOOSEHOOKPROC = function(hwnd:HWND;
+ uMsg:UINT;
+ wParam:WPARAM;
+ lParam:LPARAM):UINT; cdecl;
+type
+ tACMFORMATCHOOSE = record
+ cbStruct:DWORD; // sizeof(ACMFORMATCHOOSE)
+ fdwStyle:DWORD; // chooser style flags
+
+ hwndOwner:HWND; // caller's window handle
+
+ pwfx:LPWAVEFORMATEX; // ptr to wfx buf to receive choice
+ cbwfx:DWORD; // size of mem buf for pwfx
+ pszTitle:LPCWSTR; // dialog box title bar
+
+ szFormatTag:array[0..ACMFORMATTAGDETAILS_FORMATTAG_CHARS-1] of WCHAR;
+ szFormat:array[0..ACMFORMATDETAILS_FORMAT_CHARS-1] of WCHAR;
+
+ pszName:LPWSTR; // custom name selection
+ cchName:DWORD; // size in chars of mem buf for pszName
+
+ fdwEnum:DWORD; // format enumeration restrictions
+ pwfxEnum:LPWAVEFORMATEX; // format describing restrictions
+
+ hInstance:HINST; // app instance containing dlg template
+ pszTemplateName:LPCWSTR; // custom template name
+ lCustData:LPARAM; // data passed to hook fn.
+ pfnHook:ACMFORMATCHOOSEHOOKPROC; // ptr to hook function
+ end;
+ _ACMFORMATCHOOSE = tACMFORMATCHOOSE;
+ PACMFORMATCHOOSE = ^tACMFORMATCHOOSE;
+ LPACMFORMATCHOOSE = ^tACMFORMATCHOOSE;
+
+//
+// ACMFORMATCHOOSE.fdwStyle
+//
+const
+ ACMFORMATCHOOSE_STYLEF_SHOWHELP = $00000004;
+ ACMFORMATCHOOSE_STYLEF_ENABLEHOOK = $00000008;
+ ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATE = $00000010;
+ ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATEHANDLE = $00000020;
+ ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT = $00000040;
+ ACMFORMATCHOOSE_STYLEF_CONTEXTHELP = $00000080;
+
+function acmFormatChoose(pafmtc:LPACMFORMATCHOOSE):MMRESULT; external KernelDLL name 'acmFormatChoose'; // index 2A7
+
+
+//--------------------------------------------------------------------------;
+//
+// ACM Filter Tags
+//
+//--------------------------------------------------------------------------;
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmFilterTagDetails()
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+const
+ ACMFILTERTAGDETAILS_FILTERTAG_CHARS = 48;
+
+type
+ tACMFILTERTAGDETAILS = record
+ cbStruct:DWORD;
+ dwFilterTagIndex:DWORD;
+ dwFilterTag:DWORD;
+ cbFilterSize:DWORD;
+ fdwSupport:DWORD;
+ cStandardFilters:DWORD;
+ szFilterTag:array[0..ACMFILTERTAGDETAILS_FILTERTAG_CHARS-1] of WCHAR;
+ end;
+ _ACMFILTERTAGDETAILS = tACMFILTERTAGDETAILS;
+ PACMFILTERTAGDETAILS = ^tACMFILTERTAGDETAILS;
+ LPACMFILTERTAGDETAILS = ^tACMFILTERTAGDETAILS;
+
+function acmFilterTagDetails(had:HACMDRIVER;
+ paftd:LPACMFILTERTAGDETAILS;
+ fdwDetails:DWORD):MMRESULT; external KernelDLL name 'acmFilterTagDetails'; // index 296
+
+const
+ ACM_FILTERTAGDETAILSF_INDEX = $00000000;
+ ACM_FILTERTAGDETAILSF_FILTERTAG = $00000001;
+ ACM_FILTERTAGDETAILSF_LARGESTSIZE = $00000002;
+ ACM_FILTERTAGDETAILSF_QUERYMASK = $0000000F;
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmFilterTagEnum()
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+type
+ ACMFILTERTAGENUMCB = function(hadid:HACMDRIVERID;
+ paftd:LPACMFILTERTAGDETAILS;
+ dwInstance:DWORD;
+ fdwSupport:DWORD):BOOL; cdecl;
+
+function acmFilterTagEnum(had:HACMDRIVER;
+ paftd:LPACMFILTERTAGDETAILS;
+ fnCallback:ACMFILTERTAGENUMCB;
+ dwInstance:DWORD;
+ fdwEnum:DWORD):MMRESULT; external KernelDLL name 'acmFilterTagEnum'; // index 297
+
+
+//--------------------------------------------------------------------------;
+//
+// ACM Filters
+//
+//--------------------------------------------------------------------------;
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmFilterDetails()
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+const
+ ACMFILTERDETAILS_FILTER_CHARS = 128;
+
+type
+ tACMFILTERDETAILS = record
+ cbStruct:DWORD;
+ dwFilterIndex:DWORD;
+ dwFilterTag:DWORD;
+ fdwSupport:DWORD;
+ pwfltr:LPWAVEFILTER;
+ cbwfltr:DWORD;
+ szFilter:array[0..ACMFILTERDETAILS_FILTER_CHARS-1] of WCHAR;
+ end;
+ _ACMFILTERDETAILS = tACMFILTERDETAILS;
+ PACMFILTERDETAILS = ^tACMFILTERDETAILS;
+ LPACMFILTERDETAILS = ^tACMFILTERDETAILS;
+
+function acmFilterDetails(had:HACMDRIVER;
+ pafd:LPACMFILTERDETAILS;
+ fdwDetails:DWORD):MMRESULT; external KernelDLL name 'acmFilterDetails'; // index 294
+
+const
+ ACM_FILTERDETAILSF_INDEX = $00000000;
+ ACM_FILTERDETAILSF_FILTER = $00000001;
+ ACM_FILTERDETAILSF_QUERYMASK = $0000000F;
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmFilterEnum()
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+type
+ ACMFILTERENUMCB = function(hadid:HACMDRIVERID;
+ pafd:LPACMFILTERDETAILS;
+ dwInstance:DWORD;
+ fdwSupport:DWORD):BOOL; cdecl;
+
+function acmFilterEnum(had:HACMDRIVER;
+ pafd:LPACMFILTERDETAILS;
+ fnCallback:ACMFILTERENUMCB;
+ dwInstance:DWORD;
+ fdwEnum:DWORD):MMRESULT; external KernelDLL name 'acmFilterEnum'; // index 295
+
+const
+ ACM_FILTERENUMF_DWFILTERTAG = $00010000;
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmFilterChoose()
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+
+//
+// MM_ACM_FILTERCHOOSE is sent to hook callbacks by the Filter Chooser
+// Dialog...
+//
+const
+ MM_ACM_FILTERCHOOSE = $8000;
+
+ FILTERCHOOSE_MESSAGE = 0;
+ FILTERCHOOSE_FILTERTAG_VERIFY = FILTERCHOOSE_MESSAGE + 0;
+ FILTERCHOOSE_FILTER_VERIFY = FILTERCHOOSE_MESSAGE + 1;
+ FILTERCHOOSE_CUSTOM_VERIFY = FILTERCHOOSE_MESSAGE + 2;
+
+type
+ ACMFILTERCHOOSEHOOKPROC = function(hwnd:HWND;
+ uMsg:UINT;
+ wParam:WPARAM;
+ lParam:LPARAM):UINT; cdecl;
+
+//
+// ACMFILTERCHOOSE
+//
+type
+ tACMFILTERCHOOSE = record
+ cbStruct:DWORD; // sizeof(ACMFILTERCHOOSE)
+ fdwStyle:DWORD; // chooser style flags
+
+ hwndOwner:HWND; // caller's window handle
+
+ pwfltr:LPWAVEFILTER; // ptr to wfltr buf to receive choice
+ cbwfltr:DWORD; // size of mem buf for pwfltr
+
+ pszTitle:LPCWSTR;
+
+ szFilterTag:array[0..ACMFILTERTAGDETAILS_FILTERTAG_CHARS-1] of WCHAR;
+ szFilter:array[0..ACMFILTERDETAILS_FILTER_CHARS-1] of WCHAR;
+ pszName:LPWSTR; // custom name selection
+ cchName:DWORD; // size in chars of mem buf for pszName
+
+ fdwEnum:DWORD; // filter enumeration restrictions
+ pwfltrEnum:LPWAVEFILTER; // filter describing restrictions
+
+ hInstance:HINST; // app instance containing dlg template
+ pszTemplateName:LPCWSTR; // custom template name
+ lCustData:LPARAM; // data passed to hook fn.
+ pfnHook:ACMFILTERCHOOSEHOOKPROC; // ptr to hook function
+ end;
+ _ACMFILTERCHOOSE = tACMFILTERCHOOSE;
+ PACMFILTERCHOOSE = ^tACMFILTERCHOOSE;
+ LPACMFILTERCHOOSE = ^tACMFILTERCHOOSE;
+
+//
+// ACMFILTERCHOOSE.fdwStyle
+//
+const
+ ACMFILTERCHOOSE_STYLEF_SHOWHELP = $00000004;
+ ACMFILTERCHOOSE_STYLEF_ENABLEHOOK = $00000008;
+ ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATE = $00000010;
+ ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATEHANDLE = $00000020;
+ ACMFILTERCHOOSE_STYLEF_INITTOFILTERSTRUCT = $00000040;
+ ACMFILTERCHOOSE_STYLEF_CONTEXTHELP = $00000080;
+
+function acmFilterChoose(pafltrc:LPACMFILTERCHOOSE):MMRESULT; external KernelDLL name 'acmFilterChoose'; // index 2A8
+
+//--------------------------------------------------------------------------;
+//
+// ACM Stream API's
+//
+//--------------------------------------------------------------------------;
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmStreamOpen()
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+type
+ tACMSTREAMHEADER = record
+ cbStruct:DWORD; // sizeof(ACMSTREAMHEADER)
+ fdwStatus:DWORD; // ACMSTREAMHEADER_STATUSF_*
+ dwUser:DWORD; // user instance data for hdr
+ pbSrc:LPBYTE;
+ cbSrcLength:DWORD;
+ cbSrcLengthUsed:DWORD;
+ dwSrcUser:DWORD; // user instance data for src
+ pbDst:LPBYTE;
+ cbDstLength:DWORD;
+ cbDstLengthUsed:DWORD;
+ dwDstUser:DWORD; // user instance data for dst
+ dwReservedDriver:array[0..9] of DWORD; // driver reserved work space
+ end;
+ ACMSTREAMHEADER = tACMSTREAMHEADER;
+ PACMSTREAMHEADER = ^tACMSTREAMHEADER;
+ LPACMSTREAMHEADER = ^tACMSTREAMHEADER;
+
+//
+// ACMSTREAMHEADER.fdwStatus
+//
+// ACMSTREAMHEADER_STATUSF_DONE: done bit for async conversions.
+//
+const
+ ACMSTREAMHEADER_STATUSF_DONE = $00010000;
+ ACMSTREAMHEADER_STATUSF_PREPARED = $00020000;
+ ACMSTREAMHEADER_STATUSF_INQUEUE = $00100000;
+
+function acmStreamOpen(phas:LPHACMSTREAM; // pointer to stream handle
+ had:HACMDRIVER; // optional driver handle
+ pwfxSrc:LPWAVEFORMATEX; // source format to convert
+ pwfxDst:LPWAVEFORMATEX; // required destination format
+ pwfltr:LPWAVEFILTER; // optional filter
+ dwCallback:DWORD; // callback
+ dwInstance:DWORD; // callback instance data
+ fdwOpen:DWORD // ACM_STREAMOPENF_* and CALLBACK_*
+ ):MMRESULT; external KernelDLL name 'acmStreamOpen'; // index 2A0
+
+const
+ ACM_STREAMOPENF_QUERY = $00000001;
+ ACM_STREAMOPENF_ASYNC = $00000002;
+ ACM_STREAMOPENF_NONREALTIME = $00000004;
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmStreamClose()
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+function acmStreamClose(has:HACMSTREAM;
+ fdwClose:DWORD):MMRESULT; external KernelDLL name 'acmStreamClose'; // index 29D
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmStreamSize()
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+function acmStreamSize(has:HACMSTREAM;
+ cbInput:DWORD;
+ pdwOutputBytes:LPDWORD;
+ fdwSize:DWORD):MMRESULT; external KernelDLL name 'acmStreamSize'; // index 2A3
+
+const
+ ACM_STREAMSIZEF_SOURCE = $00000000;
+ ACM_STREAMSIZEF_DESTINATION = $00000001;
+ ACM_STREAMSIZEF_QUERYMASK = $0000000F;
+
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmStreamReset()
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+function acmStreamReset(has:HACMSTREAM;
+ fdwReset:DWORD):MMRESULT; external KernelDLL name 'acmStreamReset'; // index 2A2
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmStreamMessage()
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+function acmStreamMessage(has:HACMSTREAM;
+ uMsg:UINT;
+ lParam1:LPARAM;
+ lParam2:LPARAM):MMRESULT; external KernelDLL name 'acmStreamMessage'; // index 29F
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmStreamConvert()
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+function acmStreamConvert(has:HACMSTREAM;
+ pash:LPACMSTREAMHEADER;
+ fdwConvert:DWORD):MMRESULT; external KernelDLL name 'acmStreamConvert'; // index 29E
+
+const
+ ACM_STREAMCONVERTF_BLOCKALIGN = $00000004;
+ ACM_STREAMCONVERTF_START = $00000010;
+ ACM_STREAMCONVERTF_END = $00000020;
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmStreamPrepareHeader()
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+function acmStreamPrepareHeader(has:HACMSTREAM;
+ pash:LPACMSTREAMHEADER;
+ fdwPrepare:DWORD):MMRESULT; external KernelDLL name 'acmStreamPrepareHeader'; // index 2A1
+
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+//
+// acmStreamUnprepareHeader()
+//
+//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
+function acmStreamUnprepareHeader(has:HACMSTREAM;
+ pash:LPACMSTREAMHEADER;
+ fdwUnprepare:DWORD):MMRESULT; external KernelDLL name 'acmStreamUnprepareHeader'; // index 2A4
+
+{$PACKRECORDS DEFAULT} // #pragma pack() /* Revert to default packing */
+
+
+
+// Module: msacmdlg.h
+
+// -----------------------------------------------------------------------------
+//
+// Audio Compression Manager Common Dialogs Identifiers
+//
+// -----------------------------------------------------------------------------
+const
+ DLG_ACMFORMATCHOOSE_ID = 70;
+ IDD_ACMFORMATCHOOSE_CMB_FORMATTAG = 101;
+ IDD_ACMFORMATCHOOSE_CMB_FORMAT = 102;
+
+ DLG_ACMFILTERCHOOSE_ID = 71;
+ IDD_ACMFILTERCHOOSE_CMB_FILTERTAG = 101;
+ IDD_ACMFILTERCHOOSE_CMB_FILTER = 102;
+
+// End of module msacmdlg.h
+
+implementation
+
+// - Module: msacmdrv.h
+// -----------------------------------------------------------------------------
+//
+// Audio Compression Manager Public Header File for Drivers
+//
+// -----------------------------------------------------------------------------
+function MAKE_ACM_VERSION(mjr:byte; mnr:byte; bld:word):DWORD; inline;
+begin
+ MAKE_ACM_VERSION:=(DWORD(mjr) shl 24) or (DWORD(mnr) shl 16) or bld;
+end;
+// - End of module: msacmdrv.h
+
+end.
diff --git a/packages/winceunits/src/nled.pp b/packages/winceunits/src/nled.pp
new file mode 100644
index 0000000000..1fd7558efd
--- /dev/null
+++ b/packages/winceunits/src/nled.pp
@@ -0,0 +1,244 @@
+{
+ 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.
+
+ ********************************************************************** }
+//
+//File Name: nled.h
+//
+//Abstract: Notification LED interface.
+//
+//Notes:
+//
+//The notification LED is distinguished from other LED's which may be on the system
+//in that it can be on or blinking even if the rest of the system is powered down. This
+//implies a certain level of hardware support for this functionality.
+//
+
+//
+// Microsoft Windows Mobile 6.0 for PocketPC SDK.
+//
+
+unit NLed;
+
+{$CALLING cdecl}
+
+interface
+
+uses Windows, WinIOCtl;
+
+// @CESYSGEN IF COREDLL_NLED
+
+//
+// NLedDriverGetDeviceInfo query definitions
+//
+
+{ @DOC EXTERNAL DRIVERS
+ @const ULONG | NLED_COUNT_INFO_ID |
+
+Id for <f NLedDriverGetDeviceInfo> to get count of notification LED's
+
+ @XREF
+
+ <tab><f NLedDriverGetDeviceInfo><nl>
+ <tab><t NLDI_COUNT_INFO><nl>
+
+}
+const
+ NLED_COUNT_INFO_ID = 0;
+
+
+{ @DOC EXTERNAL DRIVERS
+ @STRUCT NLED_COUNT_NFO |
+
+Info about number of notification LED's.
+
+ @XREF
+
+ <tab><f NLedDriverGetDeviceInfo><nl>
+ <tab><c NLED_COUNT_INFO_ID><nl>
+
+ @COMM
+
+A device will usually have one notification LED. Some devices may have
+none however. It would be unusual to have more than one because of the
+power drain.
+
+
+}
+type
+ NLED_COUNT_INFO = record
+ cLeds:UINT; // @FIELD Count of LED's
+ end;
+
+{ @DOC EXTERNAL DRIVERS
+ @const ULONG | NLED_SUPPORTS_INFO_ID |
+
+Id for <f NLedDriverGetDeviceInfo> to get supported capabilities of a
+notification LED.
+
+
+ @XREF
+
+ <tab><f NLedDriverGetDeviceInfo><nl>
+ <tab><t NLDI_SUPPORTS_INFO><nl>
+
+}
+const
+ NLED_SUPPORTS_INFO_ID = 1;
+
+
+{ @DOC EXTERNAL DRIVERS
+ @STRUCT NLED_SUPPORTS_NFO |
+
+Info about what a notification LED supports.
+
+ @XREF
+
+ <tab><f NLedDriverGetDeviceInfo><nl>
+ <tab><c NLED_SUPPORTS_INFO_ID><nl>
+
+ @COMM
+
+Caller should first get the number of notification LED's on the system.
+This is usually one but may be 0 and could be greater than 1. Caller
+should fill in the LedNum and then call <f NLedDriverGetDeviceInfo>. Led
+numbering starts at 0.
+
+The lCycleAdjust field is the granularity to which cycle time adjustments
+can be made. E.g., if the granularity is 1/16 second, lCycleAdjust =
+62500 microseconds. If the LED does not support blinking, this value
+should be 0.
+
+Values are given in microseconds only to deal with computations involving
+fractional milliseconds. Usually only settings in the milliseconds range
+are meaningful.
+
+Usually a device will report that it supports up to two of:
+
+ fAdjustTotalCycleTime
+ fAdjustOnTime
+ fAdjustOffTime
+
+since any two determine the third. The most likely settings are:
+
+ 1. The cycle time is not adjustable:
+
+ fAdjustTotalCycleTime == FALSE
+ fAdjustOnTime == FALSE
+ fAdjustOffTime == FALSE
+
+ 2. Only the overall cycle time is adjustable:
+
+ fAdjustTotalCycleTime == TRUE
+ fAdjustOnTime == FALSE
+ fAdjustOffTime == FALSE
+
+ 3. The on and off times are independently adjustable.
+
+ fAdjustTotalCycleTime == FALSE
+ fAdjustOnTime == TRUE
+ fAdjustOffTime == TRUE
+}
+
+type
+ NLED_SUPPORTS_INFO = record
+ LedNum:UINT; // @FIELD LED number, 0 is first LED
+ lCycleAdjust:LONG; // @FIELD Granularity of cycle time adjustments (microseconds)
+ fAdjustTotalCycleTime:BOOL; // @FIELD LED has an adjustable total cycle time
+ fAdjustOnTime:BOOL; // @FIELD LED has separate on time
+ fAdjustOffTime:BOOL; // @FIELD LED has separate off time
+ fMetaCycleOn:BOOL; // @FIELD LED can do blink n, pause, blink n, ...
+ fMetaCycleOff:BOOL; // @FIELD LED can do blink n, pause n, blink n, ...
+ end;
+
+
+{ @DOC EXTERNAL DRIVERS
+ @const ULONG | NLED_SETTINGS_INFO_ID |
+
+Id for <f NLedDriverGetDeviceInfo> to get current settings of a
+notification LED.
+
+
+ @XREF
+
+ <tab><f NLedDriverGetDeviceInfo><nl>
+ <tab><t NLDI_SETTINGS_INFO><nl>
+}
+const
+ NLED_SETTINGS_INFO_ID = 2;
+
+
+{ @DOC EXTERNAL DRIVERS
+ @STRUCT NLED_SETTINGS_NFO |
+
+Info about the current settings of a notification LED.
+
+ @XREF
+
+ <tab><f NLedDriverGetDeviceInfo><nl>
+ <tab><c NLED_SETTINGS_INFO_ID><nl>
+
+ @COMM
+
+Caller should first get the number of notification LED's on the system.
+This is usually one but may be 0 and could be greater than 1. Caller
+should fill in the LedNum and then call <f NLedDriverGetDeviceInfo>. Led
+numbering starts at 0.
+
+Note that the hardware may have some minimum on or off time, so setting the OnTime or OffTime
+fields to 0 may still result in a non-zero on or off time.
+}
+type
+ NLED_SETTINGS_INFO = record
+ LedNum:UINT; // @FIELD LED number, 0 is first LED
+ OffOnBlink:longint; // @FIELD 0 == off, 1 == on, 2 == blink
+ TotalCycleTime:LONG; // @FIELD total cycle time of a blink in microseconds
+ OnTime:LONG; // @FIELD on time of a cycle in microseconds
+ OffTime:LONG; // @FIELD off time of a cycle in microseconds
+ MetaCycleOn:longint; // @FIELD number of on blink cycles
+ MetaCycleOff:longint; // @FIELD number of off blink cycles
+ end;
+
+
+// NLED driver IOCTL codes
+const
+ IOCTL_NLED_GETDEVICEINFO = (FILE_DEVICE_NLED shl 16) or
+ (FILE_ANY_ACCESS shl 14) or
+ ($0100 shl 2) or
+ METHOD_BUFFERED;
+
+ IOCTL_NLED_SETDEVICE =(FILE_DEVICE_NLED shl 16) or
+ (FILE_ANY_ACCESS shl 14) or
+ ($0101 shl 2) or
+ METHOD_BUFFERED;
+
+// Battery driver interface GUID (used with AdvertiseInterface())
+const
+ NLED_DRIVER_CLASS = '{CBB4F234-F35F-485b-A490-ADC7804A4EF3}';
+
+// API event name for the NLED interface. If calling OpenEvent() on this name returns a valid
+// handle, the NLED APIs exist on the platform. The handle will be signaled when the APIs become
+// ready.
+const
+ NLED_API_EVENT_NAME = 'SYSTEM/NLedAPIsReady';
+
+type
+ PFN_NLED_SET_DEVICE = function(nDeviceId:UINT; pInput:pointer):BOOL; cdecl;
+ PFN_NLED_GET_DEVICE_INFO = function(nInfoId:UINT; pOutput:pointer):BOOL; cdecl;
+
+function NLedGetDeviceInfo(nInfoId:UINT; pOutput:pointer):BOOL; external KernelDLL name 'NLedGetDeviceInfo'; // index 49F
+function NLedSetDevice(nDeviceId:UINT; pInput:pointer):BOOL; external KernelDLL name 'NLedSetDevice'; // index 4A0
+
+// @CESYSGEN ENDIF COREDLL_NLED
+
+implementation
+
+end. \ No newline at end of file
diff --git a/packages/winceunits/src/phone.pp b/packages/winceunits/src/phone.pp
new file mode 100644
index 0000000000..8424c04b0b
--- /dev/null
+++ b/packages/winceunits/src/phone.pp
@@ -0,0 +1,325 @@
+{
+ 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.
+
+ ********************************************************************** }
+//
+// phone.h
+//
+// Phone API
+//
+
+//
+// Microsoft Windows Mobile 6.0 for PocketPC SDK.
+//
+
+unit phone;
+
+{$CALLING cdecl}
+
+interface
+
+uses Windows;
+
+type
+ CALLERIDTYPE = (CALLERIDTYPE_UNAVAILABLE,
+ CALLERIDTYPE_BLOCKED,
+ CALLERIDTYPE_AVAILABLE);
+
+type
+ IOM = (IOM_MISSED,
+ IOM_INCOMING,
+ IOM_OUTGOING);
+
+type
+ CALLLOGSEEK = (CALLLOGSEEK_BEGINNING := 2,
+ CALLLOGSEEK_END := 4);
+
+// Thought out by me specially for CALLLOGENTRY._flags field.
+const
+ CALLLOGENTRY_FLAG_INCOMING = 0; // direction of call. (Missed calls are incoming.)
+ CALLLOGENTRY_FLAG_OUTGOING = 1; // direction of call. (Missed calls are incoming.)
+ CALLLOGENTRY_FLAG_CONNECTED = 2; // Did the call connect? (as opposed to busy, no answer)
+ CALLLOGENTRY_FLAG_ENDED = 4; // Was the call ended? (as opposed to dropped)
+ CALLLOGENTRY_FLAG_DROPPED = 0; // Was the call dropped? (as opposed to ended)
+ CALLLOGENTRY_FLAG_ROAMING = 8; // Roaming (vs. local)
+ CALLLOGENTRY_FLAG_LOCAL = 0; // Local
+
+type
+ CALLLOGENTRY = record
+ cbSize:DWORD; // sizeof CALLLOGENTRY
+ ftStartTime:FILETIME;
+ ftEndTime:FILETIME;
+ _iom:IOM;
+ _flags:UINT;
+{
+ BOOL fOutgoing:1; // direction of call. (Missed calls are incoming.)
+ BOOL fConnected:1; // Did the call connect? (as opposed to busy, no answer)
+ BOOL fEnded:1; // Was the call ended? (as opposed to dropped)
+ BOOL fRoam:1; // Roaming (vs. local)
+}
+ cidt:CALLERIDTYPE;
+ pszNumber:PTSTR;
+ pszName:PTSTR;
+ pszNameType:PTSTR; // "w" for work tel, "h" for home tel, for example
+ pszNote:PTSTR; // filename of associated Notes file
+ end;
+ PCALLLOGENTRY = ^CALLLOGENTRY;
+
+const
+ PhoneDLL = 'phone.dll';
+
+// Open the call log and set the seek pointer to the beginning.
+function PhoneOpenCallLog(ph:LPHANDLE):HRESULT; external PhoneDLL name 'PhoneOpenCallLog';
+
+// PhoneGetCallLogEntry returns one call log entry and advances the seek
+// pointer.
+// pentry->cbSize must be set to "sizeof CALLLOGENTRY" before this function is
+// called.
+// The entries are returned in order of start time, the most recent call first.
+// It is the responsibility of the caller to LocalFree any strings
+// which are returned.
+// A return value of S_FALSE indicates there are no more entries.
+function PhoneGetCallLogEntry(h:HANDLE; pentry:PCALLLOGENTRY):HRESULT; external PhoneDLL name 'PhoneGetCallLogEntry';
+
+// PhoneSeekCallLog seeks to a record in the call log.
+// iRecord is the zero-based index of the record, starting at the beginning
+// if seek == CALLLOGSEEK_BEGINNING, at the end if CALLLOGSEEK_END.
+// piRecord returns the zero-based index (from the beginning) of the seek
+// pointer after the seek is performed.
+// PhoneSeekCallLog(h, CALLLOGSEEK_END, 0, &count) will return the number of
+// records.
+function PhoneSeekCallLog(hdb:HANDLE;
+ _seek:CALLLOGSEEK;
+ iRecord:DWORD;
+ piRecord:LPDWORD):HRESULT; external PhoneDLL name 'PhoneGetCallLogEntry';
+
+// Close the call log
+function PhoneCloseCallLog(h:HANDLE):HRESULT; external PhoneDLL name 'PhoneCloseCallLog';
+
+
+// The Call Log application supports the context menu extensibility mechanism.
+// The Context name is "Phone" and the Class name is "Log".
+// The IUnknown pointer passed to the context menu handler supports IPropertyBag,
+// and the set of properties supported is as follows:
+//
+// property name: type: value:
+// -------------- ----- ------
+// PropSet BSTR "CallLog"
+// Number BSTR the phone number of the other person on the call
+// NumberType BSTR the type of phone number (e.g. "h" for home)
+// Name BSTR person's name
+// Year I2 the year of the beginning time of the call
+// Month I2 the month of the beginning time of the call
+// Day I2 the day of the beginning time of the call
+// Hour I2 the hour of the beginning time of the call
+// Minute I2 the minute of the beginning time of the call
+// Second I2 the second of the beginning time of the call
+// DayOfWeek I2 the day of the week of the beginning time of the call
+// Duration UI4 the duration of the call in seconds
+// CallerIDType UI4 a CALLERIDTYPE value (see above)
+// Connected BOOL Did the call connect? (as opposed to busy, no answer)
+// Ended BOOL Was the call ended? (as opposed to dropped)
+// Outgoing BOOL Was the call outgoing? (Missed calls are incoming.)
+// Roaming BOOL Roaming?
+// IOM UI4 an IOM value (see above)
+
+
+// PhoneShowCallLog
+//
+// Show the Call Log, and filter it
+type
+ CALLLOGFILTER = (CALLLOGFILTER_ALL_CALLS,
+ CALLLOGFILTER_MISSED,
+ CALLLOGFILTER_INCOMING,
+ CALLLOGFILTER_OUTGOING);
+
+function PhoneShowCallLog(iCallLogFilter:CALLLOGFILTER):HRESULT; external PhoneDLL name 'PhoneShowCallLog';
+
+//++++++
+//
+// PhoneMakeCall
+//
+// Dials a number
+type
+ tagPHONEMAKECALLINFO = record
+ cbSize:DWORD;
+ dwFlags:DWORD;
+
+ //Params to tapiRequestMakeCall
+ pszDestAddress:PCWSTR;
+ pszAppName:PCWSTR;
+ pszCalledParty:PCWSTR;
+ pszComment:PCWSTR;
+
+ // owner window for dialog box that appears when the PMCF_EDITBEFORECALLING flag is passed into PhoneMakeCall
+ hwndOwner:HWND;
+ end;
+ PHONEMAKECALLINFO = tagPHONEMAKECALLINFO;
+ PPHONEMAKECALLINFO = ^tagPHONEMAKECALLINFO;
+
+// PhoneMakeCall flags
+const
+ PMCF_DEFAULT = $00000001;
+ PMCF_PROMPTBEFORECALLING = $00000002;
+ PMCF_EDITBEFORECALLING = $00000020;
+
+function PhoneMakeCall(ppmci:PPHONEMAKECALLINFO):LONG; external PhoneDLL name 'PhoneMakeCall';
+
+//
+// End PhoneMakeCall
+//
+//------
+
+
+//++++++
+//
+// PhoneAddSpeedDial
+//
+// adds a speed dial entry
+//
+// dwFlags - currently unused, set to 0
+//
+// piKey - in/out: the key sequence which will invoke the speed dial.
+// currently an entry between 2 and 99 (inclusive) is valid.
+// the API will cause existing entries to be overwritten
+//
+// pszDisplayName - the non-empty display name for the speed dial
+//
+// pszTelNumber - the non-empty tel# to be dialed
+//
+
+function PhoneAddSpeedDial(dwFlags:DWORD;
+ piKey:LPDWORD;
+ pszDisplayName:PTCHAR;
+ pszTelNumber:PTCHAR):HRESULT; external PhoneDLL name 'PhoneAddSpeedDial';
+
+//
+// End PhoneAddSpeedDial
+//
+//------
+
+
+
+
+//++++++
+//
+// PhoneSendDTMFStart
+//
+// Allows an application to begin sending a DTMF tone using the
+// current phone call.
+//
+// Parameters:
+// chDTMF - DTMF character to send. Must be '0'-'9',
+// 'A'-'D', '*', or '#'.
+//
+// Return Value:
+// -----------------------------------------------------------
+// Value Description
+// ------------------------------------------------------------
+// S_OK The operation completed successfully.
+// E_FAIL An unknown error occurred.
+// E_INVALIDARG chDTMF is invalid.
+// E_NOTIMPL No phone is present on the device, the
+// phone service is not running, or no
+// calls are currently active.
+//
+// Other custom failure codes where the facility code is
+// FACILITY_WINDOWS_CE may be retrieved using the HRESULT_CODE
+// macro:
+// -----------------------------------------------------------
+// Error Code Description
+// ------------------------------------------------------------
+// ERROR_DEVICE_NOT_CONNECTED No phone is present on the device,
+// the phone service is not running, or
+// no calls are currently active.
+//
+// Remarks:
+// Caller must call PhoneSendDTMFStop to stop the DTMF tone.
+//
+// This function will fail if no phone is present on the
+// device, the phone service is not running, or no calls are
+// currently active. If a subsequent call to this API is made
+// by the caller or any other application before the DTMF tone
+// is finished the original DTMF tone will cease and the new
+// DTMF will be sent.
+//
+
+function PhoneSendDTMFStart(chDTMF:TCHAR):HRESULT; external PhoneDLL name 'PhoneSendDTMFStart';
+
+//
+// End PhoneSendDTMFStart
+//
+//------
+
+
+
+//++++++
+//
+// PhoneSendDTMFStop
+//
+// Stops an existing DTMF tone.
+//
+// Remarks:
+// This function stops all DTMF tones. Applications
+// may use PhoneSendDTMFStart to begin a DTMF tone.
+//
+
+procedure PhoneSendDTMFStop; external PhoneDLL name 'PhoneSendDTMFStop';
+
+//
+// End PhoneSendDTMFStop
+//
+//------
+
+
+//++++++
+//
+// PhoneIsEmergencyNumber
+//
+// Determines if a string contains an emergency phone number.
+//
+// Parameters:
+// fTailMatchOnly
+// [in] If this argument is set to TRUE, the function only
+// attempts to match emergency numbers at the end of
+// pszNumber. If this value is FALSE, the function attempts
+// to match the emergency string with the full pszNumber
+/// argument exactly.
+// pszNumber
+// [in] String to match. If this pointer is NULL or points
+// to an empty string, the function returns FALSE.
+// ppszEmergencyNumber
+// [out] On success, constant pointer to the emergency phone
+// number matched in pszNumber. Caller must not free. On
+// failure, this pointer is undefined. Optional, may be NULL.
+//
+// Return Value:
+// TRUE if pszNumber contains an emergency number; otherwise FALSE.
+//
+// Remarks:
+// The system merges the list of emergency phone numbers from
+// the registry and the SIM, if available. The list of emergency
+// numbers can vary by device.
+//
+
+function PhoneIsEmergencyNumber(fTailMatchOnly:BOOL;
+ pszNumber:LPCTSTR;
+ ppszEmergencyNumber:PLPWStr):BOOL;external PhoneDLL name 'PhoneIsEmergencyNumber';
+
+//
+// End PhoneIsEmergencyNumber
+//
+//------
+
+
+implementation
+
+end. \ No newline at end of file
diff --git a/packages/winceunits/src/ras.pp b/packages/winceunits/src/ras.pp
new file mode 100644
index 0000000000..8a1f10a07d
--- /dev/null
+++ b/packages/winceunits/src/ras.pp
@@ -0,0 +1,901 @@
+{
+ 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 Name:
+//
+// ras.h
+//
+// Abstract:
+//
+// Remote Access Service structures and defines
+//
+
+//
+// Microsoft Windows Mobile 6.0 for PocketPC SDK.
+//
+
+unit RAS;
+
+{$CALLING cdecl}
+
+interface
+
+uses Windows, Tapi;
+
+{$PACKRECORDS 4} // #include "pshpack4.h"
+
+const
+ RAS_MaxEntryName = 20;
+ RAS_MaxDeviceName = 128;
+ RAS_MaxDeviceType = 16;
+ RAS_MaxParamKey = 32;
+ RAS_MaxParamValue = 128;
+ RAS_MaxPhoneNumber = 128;
+ RAS_MaxCallbackNumber = 48;
+ RAS_MaxIpAddress = 15;
+ RAS_MaxIpxAddress = 21;
+
+// Ras extensions
+
+ RAS_MaxAreaCode = 10;
+ RAS_MaxPadType = 32;
+ RAS_MaxX25Address = 200;
+ RAS_MaxFacilities = 200;
+ RAS_MaxUserData = 200;
+
+// RAS IP Address
+
+type
+ tagRasIpAddr = record
+ a:byte;
+ b:byte;
+ c:byte;
+ d:byte;
+ end;
+ RASIPADDR = tagRasIpAddr;
+
+// RAS Entry Definition
+type
+ tagRASENTRYW = RECORD
+ dwSize:DWORD;
+ dwfOptions:DWORD;
+ dwCountryID:DWORD;
+ dwCountryCode:DWORD;
+ szAreaCode:array[0..RAS_MaxAreaCode] of WCHAR;
+ szLocalPhoneNumber:array[0..RAS_MaxPhoneNumber] of WCHAR;
+ dwAlternateOffset:DWORD;
+ ipaddr:RASIPADDR;
+ ipaddrDns:RASIPADDR;
+ ipaddrDnsAlt:RASIPADDR;
+ ipaddrWins:RASIPADDR;
+ ipaddrWinsAlt:RASIPADDR;
+ dwFrameSize:DWORD;
+ dwfNetProtocols:DWORD;
+ dwFramingProtocol:DWORD;
+ szScript:array[0..MAX_PATH-1] of WCHAR;
+ szAutodialDll:array[0..MAX_PATH-1] of WCHAR;
+ szAutodialFunc:array[0..MAX_PATH-1] of WCHAR;
+ szDeviceType:array[0..RAS_MaxDeviceType] of WCHAR;
+ szDeviceName:array[0..RAS_MaxDeviceName] of WCHAR;
+ szX25PadType:array[0..RAS_MaxPadType] of WCHAR;
+ szX25Address:array[0..RAS_MaxX25Address] of WCHAR;
+ szX25Facilities:array[0..RAS_MaxFacilities] of WCHAR;
+ szX25UserData:array[0..RAS_MaxUserData] of WCHAR;
+ dwChannels:DWORD;
+ dwReserved1:DWORD;
+ dwReserved2:DWORD;
+
+ dwCustomAuthKey:DWORD; // EAP extension type to use
+ end;
+ RASENTRYW = tagRASENTRYW;
+
+ RASENTRY = RASENTRYW;
+ LPRASENTRYW = ^RASENTRYW;
+ LPRASENTRY = ^RASENTRY;
+
+// Describes Country Information
+
+ RASCTRYINFO = record
+ dwSize:DWORD;
+ dwCountryID:DWORD;
+ dwNextCountryID:DWORD;
+ dwCountryCode:DWORD;
+ dwCountryNameOffset:DWORD;
+ end;
+
+ LPRASCTRYINFO = ^RASCTRYINFO;
+ RASCTRYINFOW = RASCTRYINFO;
+ LPRASCTRYINFOW = ^RASCTRYINFOW;
+
+// Describes RAS Device Information
+ tagRASDEVINFOW = record
+ dwSize:DWORD;
+ szDeviceType:array[0..RAS_MaxDeviceType] of WCHAR;
+ szDeviceName:array[0..RAS_MaxDeviceName] of WCHAR;
+ end;
+ RASDEVINFOW = tagRASDEVINFOW;
+ RASDEVINFO = RASDEVINFOW;
+ LPRASDEVINFOW = ^RASDEVINFOW;
+ LPRASDEVINFO = ^RASDEVINFO;
+
+// RASENTRY 'dwfOptions' bit flags.
+const
+ RASEO_UseCountryAndAreaCodes = $00000001;
+ RASEO_SpecificIpAddr = $00000002;
+ RASEO_SpecificNameServers = $00000004;
+ RASEO_IpHeaderCompression = $00000008;
+ RASEO_RemoteDefaultGateway = $00000010;
+ RASEO_DisableLcpExtensions = $00000020;
+ RASEO_TerminalBeforeDial = $00000040;
+ RASEO_TerminalAfterDial = $00000080;
+ RASEO_ModemLights = $00000100;
+ RASEO_SwCompression = $00000200;
+ RASEO_RequireEncryptedPw = $00000400;
+ RASEO_RequireMsEncryptedPw = $00000800;
+ RASEO_RequireDataEncryption = $00001000;
+ RASEO_NetworkLogon = $00002000;
+ RASEO_UseLogonCredentials = $00004000;
+ RASEO_PromoteAlternates = $00008000;
+ RASEO_SecureLocalFiles = $00010000;
+ RASEO_DialAsLocalCall = $00020000;
+
+ RASEO_ProhibitPAP = $00040000;
+ RASEO_ProhibitCHAP = $00080000;
+ RASEO_ProhibitMsCHAP = $00100000;
+ RASEO_ProhibitMsCHAP2 = $00200000;
+ RASEO_ProhibitEAP = $00400000;
+ RASEO_PreviewUserPw = $01000000;
+ RASEO_NoUserPwRetryDialog = $02000000;
+ RASEO_CustomScript = $80000000;
+
+
+// RASENTRY 'dwfNetProtocols' bit flags. (session negotiated protocols)
+ RASNP_NetBEUI = $00000001; // Negotiate NetBEUI
+ RASNP_Ipx = $00000002; // Negotiate IPX
+ RASNP_Ip = $00000004; // Negotiate TCP/IP
+
+
+// RASENTRY 'dwFramingProtocols' (framing protocols used by the server)
+ RASFP_Ppp = $00000001; // Point-to-Point Protocol (PPP)
+ RASFP_Slip = $00000002; // Serial Line Internet Protocol (SLIP)
+ RASFP_Ras = $00000004; // Microsoft proprietary protocol
+
+
+// RASENTRY 'szDeviceType' strings
+ RASDT_Direct = 'direct'; // Direct Connect (WINCE Extension)
+ RASDT_Modem = 'modem'; // Modem
+ RASDT_Isdn = 'isdn'; // ISDN
+ RASDT_X25 = 'x25'; // X.25
+ RASDT_Vpn = 'vpn'; // PPTP
+ RASDT_PPPoE = 'PPPoE'; // PPPoE
+
+type
+ HRASCONN = HANDLE;
+ LPHRASCONN = ^HRASCONN;
+
+// Identifies an active RAS connection. (See RasEnumConnections)
+
+ tagRASCONNW = record
+ dwSize:DWORD;
+ hrasconn:HRASCONN;
+ szEntryName:array[0..RAS_MaxEntryName] of WCHAR;
+ end;
+ RASCONNW = tagRASCONNW;
+ RASCONN = RASCONNW;
+
+ LPRASCONNW = ^RASCONNW;
+ LPRASCONN = ^RASCONN;
+
+
+// Enumerates intermediate states to a connection. (See RasDial)
+const
+ RASCS_PAUSED = $1000;
+ RASCS_DONE = $2000;
+
+type
+ tagRASCONNSTATE = (RASCS_OpenPort := 0,
+ RASCS_PortOpened,
+ RASCS_ConnectDevice,
+ RASCS_DeviceConnected,
+ RASCS_AllDevicesConnected,
+ RASCS_Authenticate,
+ RASCS_AuthNotify,
+ RASCS_AuthRetry,
+ RASCS_AuthCallback,
+ RASCS_AuthChangePassword,
+ RASCS_AuthProject,
+ RASCS_AuthLinkSpeed,
+ RASCS_AuthAck,
+ RASCS_ReAuthenticate,
+ RASCS_Authenticated,
+ RASCS_PrepareForCallback,
+ RASCS_WaitForModemReset,
+ RASCS_WaitForCallback,
+ RASCS_Projected,
+
+ RASCS_Interactive = RASCS_PAUSED,
+ RASCS_RetryAuthentication,
+ RASCS_CallbackSetByCaller,
+ RASCS_PasswordExpired,
+
+ RASCS_Connected = RASCS_DONE,
+ RASCS_Disconnected
+ );
+ RASCONNSTATE = tagRASCONNSTATE;
+ LPRASCONNSTATE = ^tagRASCONNSTATE;
+
+
+// Describes the status of a RAS connection. (See RasConnectionStatus)
+
+ tagRASCONNSTATUSW = record
+ dwSize:DWORD;
+ rasconnstate:RASCONNSTATE;
+ dwError:DWORD;
+ szDeviceType:array[0..RAS_MaxDeviceType] of WCHAR;
+ szDeviceName:array[0..RAS_MaxDeviceName] of WCHAR;
+ end;
+ RASCONNSTATUSW = tagRASCONNSTATUSW;
+ RASCONNSTATUS = RASCONNSTATUSW;
+ LPRASCONNSTATUSW = ^RASCONNSTATUSW;
+ LPRASCONNSTATUS = ^RASCONNSTATUS;
+
+// Describes connection establishment parameters. (See RasDial)
+
+ tagRASDIALPARAMSW = record
+ dwSize:DWORD;
+ szEntryName:array[0..RAS_MaxEntryName] of WCHAR;
+ szPhoneNumber:array[0..RAS_MaxPhoneNumber] of WCHAR;
+ szCallbackNumber:array[0..RAS_MaxCallbackNumber] of WCHAR;
+ szUserName:array[0..UNLEN] of WCHAR;
+ szPassword:array[0..PWLEN] of WCHAR;
+ szDomain:array[0..DNLEN] of WCHAR;
+ end;
+ RASDIALPARAMSW = tagRASDIALPARAMSW;
+ RASDIALPARAMS = RASDIALPARAMSW;
+
+ LPRASDIALPARAMSW = ^RASDIALPARAMSW;
+ LPRASDIALPARAMS = ^RASDIALPARAMS;
+
+// Describes extended connection establishment options. (See RasDial)
+
+ tagRASDIALEXTENSIONS = record
+ dwSize:DWORD;
+ dwfOptions:DWORD;
+ hwndParent:HWND;
+ reserved:DWORD;
+ end;
+ RASDIALEXTENSIONS = tagRASDIALEXTENSIONS;
+ LPRASDIALEXTENSIONS = ^RASDIALEXTENSIONS;
+
+// 'dwfOptions' bit flags.
+const
+ RDEOPT_UsePrefixSuffix = $00000001;
+ RDEOPT_PausedStates = $00000002;
+ RDEOPT_IgnoreModemSpeaker = $00000004;
+ RDEOPT_SetModemSpeaker = $00000008;
+ RDEOPT_IgnoreSoftwareCompression = $00000010;
+ RDEOPT_SetSoftwareCompression = $00000020;
+
+
+// Describes an enumerated RAS phone book entry name. (See RasEntryEnum)
+type
+ tagRASENTRYNAMEW = record
+ dwSize:DWORD;
+ szEntryName:array[0..RAS_MaxEntryName] of WCHAR;
+ end;
+ RASENTRYNAMEW = tagRASENTRYNAMEW;
+ RASENTRYNAME = RASENTRYNAMEW;
+ LPRASENTRYNAMEW = ^RASENTRYNAMEW;
+ LPRASENTRYNAME = ^RASENTRYNAME;
+
+//
+// Custom Script Dll Support
+//
+type
+ tagRASCOMMSETTINGS = record
+ dwSize:DWORD;
+ bParity:byte;
+ bStop:byte;
+ wAlign:word;
+ end;
+ RASCOMMSETTINGS = tagRASCOMMSETTINGS;
+ LPRASCOMMSETTINGS = ^tagRASCOMMSETTINGS;
+
+type
+ PFNRASSETCOMMSETTINGS = function(hPort:HANDLE;
+ pRasCommSettings:LPRASCOMMSETTINGS;
+ pvReserved:PVOID):DWORD; cdecl;
+
+type
+ RASCUSTOMSCRIPTEXTENSIONS = record
+ dwSize:DWORD;
+ pfRasSetCommSettings:PFNRASSETCOMMSETTINGS;
+ end;
+
+type
+ PFNRASGETBUFFER = function(ppBuffer:LPBYTE;
+ pdwSize:LPDWORD):DWORD; cdecl;
+
+ PFNRASFREEBUFFER = function (pBuffer:LPBYTE):DWORD; cdecl;
+
+ PFNRASSENDBUFFER = function(hPort:HANDLE;
+ pBuffer:LPBYTE;
+ dwSize:DWORD):DWORD; cdecl;
+
+ PFNRASRECEIVEBUFFER = function(hPort:HANDLE;
+ pBuffer:LPBYTE;
+ pdwSize:LPDWORD;
+ dwTimeoutMilliseconds:DWORD;
+ hEvent:HANDLE):DWORD; cdecl;
+
+ PFNRASRETRIEVEBUFFER = function(hPort:HANDLE;
+ pBuffer:LPBYTE;
+ pdwSize:LPDWORD):DWORD; cdecl;
+
+// Protocol code to projection data structure mapping.
+
+type
+ tagRASPROJECTION = (RASP_PppIp := $8021,
+ RASP_PppIpx := $802B,
+ RASP_PppNbf := $803F,
+ RASP_PppIpV6 := $8057,
+ RASP_PppLcp := $C021,
+ RASP_Amb := $10000,
+ RASP_Slip := $20000);
+ RASPROJECTION = tagRASPROJECTION;
+ LPRASPROJECTION = ^RASPROJECTION;
+
+{*
+** Describes the result of a RAS AMB (Authentication Message Block)
+** projection. This protocol is used with NT 3.1 and OS/2 1.3 downlevel
+** RAS servers.
+*}
+
+type
+ tagRASAMBA = record
+ dwSize:DWORD;
+ dwError:DWORD;
+ szNetBiosError:array[0..NETBIOS_NAME_LEN] of TCHAR;
+ bLana:byte;
+ end;
+ LPRASAMB = ^RASAMB;
+
+// Describes the result of a PPP NBF (NetBEUI) projection.
+
+type
+ tagRASPPPNBFW = record
+ dwSize:DWORD;
+ dwError:DWORD;
+ dwNetBiosError:DWORD;
+ szNetBiosError:array[0..NETBIOS_NAME_LEN] of TCHAR;
+ szWorkstationName:array[0..NETBIOS_NAME_LEN] of TCHAR;
+ bLana:byte;
+ end;
+
+ RASPPPNBF = tagRASPPPNBFW;
+ LPRASPPPNBF = ^tagRASPPPNBFW;
+
+
+// Describes the results of a PPP IPX (Internetwork Packet Exchange)
+// projection.
+
+type
+ tagRASIPX = record
+ dwSize:DWORD;
+ dwError:DWORD;
+ szIpxAddress:array[0..RAS_MaxIpxAddress] of TCHAR;
+ end;
+ RASPPPIPX = tagRASIPX;
+ LPRASPPPIPX = ^tagRASIPX;
+
+// Describes the results of an PPP IP (Internet) projection.
+
+ tagRASPPPIPW = record
+ dwSize:DWORD;
+ dwError:DWORD;
+ szIpAddress:array[0..RAS_MaxIpAddress] of WCHAR;
+ szServerIpAddress:array[0..RAS_MaxIpAddress] of WCHAR;
+ dwOptions:DWORD;
+ dwServerOptions:DWORD;
+ end;
+ RASPPPIPW = tagRASPPPIPW;
+ RASPPPIP = RASPPPIPW;
+
+ LPRASPPPIPW = ^RASPPPIPW;
+ LPRASPPPIP = ^RASPPPIP;
+
+//
+// RASPPPIP 'dwOptions' and 'dwServerOptions' flags.
+//
+const
+ RASIPO_VJ = $00000001; // Indicates that VJ compression is on
+
+// Describes the results of an PPP IPV6 (Internet) projection.
+type
+ tagRASPPPIPV6 = record
+ dwSize:DWORD;
+ dwError:DWORD;
+ LocalInterfaceIdentifier:array[0..7]of byte;
+ PeerInterfaceIdentifier:array[0..7] of byte;
+ LocalCompressionProtocol:array[0..1] of byte;
+ PeerCompressionProtocol:array[0..1] of byte;
+ end;
+ RASPPPIPV6 = tagRASPPPIPV6;
+ LPRASPPPIPV6 = ^RASPPPIPV6;
+
+// Describes results of a GET_WINS/DNS I/O control. If
+// the requested address has been negotiated the boolean
+// valid is TRUE and the IpAddress contains the address of
+// the requested server. If Valid is false IpAddress is
+// zero.
+
+ tagRASPPPAddr = record
+ dwSize:DWORD;
+ dwError:DWORD;
+ Valid:BOOL;
+ IpAddress:DWORD;
+ end;
+ RASPPPADDR = tagRASPPPAddr;
+
+// Describes the results of a SLIP (Serial Line IP) projection.
+type
+ tagRASSLIPW = record
+ dwSize:DWORD;
+ dwError:DWORD;
+ szIpAddress:array[0..RAS_MaxIpAddress] of WCHAR;
+ end;
+ RASSLIPW = tagRASSLIPW;
+ RASSLIP = RASSLIPW;
+ LPRASSLIPW = ^RASSLIPW;
+ LPRASSLIP = ^RASSLIP;
+
+
+// RAS Control Structures
+//
+// Control Request Enumeration
+type
+ tagRasCntlEnum = (RASCNTL_SET_DEBUG, // obsolete
+ RASCNTL_LOCK_STATUS, // obsolete
+ RASCNTL_PRINT_CS, // obsolete
+ RASCNTL_STATISTICS, // Get statistics
+ RASCNTL_ENUMDEV, // Enum Devices
+ RASCNTL_GETPROJINFO, // RasGetProjectionInfoW
+ RASCNTL_GETDISPPHONE, // RasGetDispPhoneNumW
+ RASCNTL_DEVCONFIGDIALOGEDIT, // RasDevConfigDialogEditW
+ RASCNTL_SERVER_GET_STATUS, // Get status of PPP server and lines NULL RASCNTL_SERVERSTATUS + dwNumLines * RASCNTL_SERVERLINE
+ RASCNTL_SERVER_ENABLE, // Turn the PPP server on NULL NULL
+ RASCNTL_SERVER_DISABLE, // Turn the PPP server off NULL NULL
+ RASCNTL_SERVER_GET_PARAMETERS, // Get global server parameters NULL RASCNTL_SERVERSTATUS
+ RASCNTL_SERVER_SET_PARAMETERS, // Set global server parameters RASCNTL_SERVERSTATUS NULL
+ RASCNTL_SERVER_LINE_ADD, // Add a line to be managed by the PPP server RASCNTL_SERVERLINE NULL
+ RASCNTL_SERVER_LINE_REMOVE, // Remove a line being managed by the PPP server RASCNTL_SERVERLINE NULL
+ RASCNTL_SERVER_LINE_ENABLE, // Enable management of a line RASCNTL_SERVERLINE NULL
+ RASCNTL_SERVER_LINE_DISABLE, // Disable management of a line RASCNTL_SERVERLINE NULL
+ RASCNTL_SERVER_LINE_GET_PARAMETERS, // Get line parameters RASCNTL_SERVERLINE RASCNTL_SERVERLINE
+ RASCNTL_SERVER_LINE_SET_PARAMETERS, // Set line parameters RASCNTL_SERVERLINE NULL
+ RASCNTL_SERVER_USER_SET_CREDENTIALS, // Allow a username/password RASCNTL_SERVERUSERCREDENTIALS NULL
+ RASCNTL_SERVER_USER_DELETE_CREDENTIALS, // Remove a username RASCNTL_SERVERUSERCREDENTIALS NULL
+ RASCNTL_EAP_GET_USER_DATA, // Get a ras entry's EAP user data
+ RASCNTL_EAP_SET_USER_DATA, // Set a ras entry's EAP user data
+ RASCNTL_EAP_GET_CONNECTION_DATA, // Get a ras entry's EAP conn data
+ RASCNTL_EAP_SET_CONNECTION_DATA, // Set a ras entry's EAP conn data
+ RASCNTL_ENABLE_LOGGING, // Load logging extension dll if present
+ RASCNTL_DISABLE_LOGGING, // Unload logging extension dll if loaded, stop logging
+ RASCNTL_SERVER_LINE_GET_CONNECTION_INFO, // Get state info on a server lines RASCNTL_SERVERLINE RASCNTL_SERVERCONNECTION
+ RASCNTL_SERVER_GET_IPV6_NET_PREFIX, // Get IPV6 Network prefix pool NULL RASCNTL_SERVER_IPV6_NET_PREFIX
+ RASCNTL_SERVER_SET_IPV6_NET_PREFIX, // Set IPV6 Network prefix pool PRASCNTL_SERVER_IPV6_NET_PREFIX NULL
+ RASCNTL_LAYER_OPEN, // Open LCP/Auth/CCP/IPCP DWORD (Layer Id) NULL
+ RASCNTL_LAYER_CLOSE, // Close LCP/Auth/CCP/IPCP DWORD (Layer Id) NULL
+ RASCNTL_LAYER_RENEGOTIATE, // Renegotiate LCP/Auth/CCP/IPCP DWORD (Layer Id) NULL
+ RASCNTL_LAYER_PARAMETER_GET, // Get LCP/Auth/CCP/IPCP value RASCNTL_LAYER_PARAMETER RASCNTL_LAYER_PARAMETER
+ RASCNTL_LAYER_PARAMETER_SET // Set LCP/Auth/CCP/IPCP value RASCNTL_LAYER_PARAMETER NULL
+ // Add others here
+ );
+ RasCntlEnum_t = tagRasCntlEnum;
+
+const
+ RASCNTL_LAYER_PARAMETER_TYPE_NONE = 0;
+ RASCNTL_LAYER_PARAMETER_TYPE_DWORD = 1;
+ RASCNTL_LAYER_PARAMETER_TYPE_BYTES = 2;
+
+type
+ _RASCNTL_LAYER_PARAMETER = record
+ dwProtocolType:DWORD;
+ dwParameterId:DWORD;
+ dwValueType:DWORD;
+ dwValueSize:DWORD;
+ case DWORD of
+ 0: (dwValue:DWORD); // for most (simple integer) values
+ 1: (bytesValue:array[0..0] of byte); // array of bytes (size 1 is placeholder)
+ end;
+ RASCNTL_LAYER_PARAMETER = _RASCNTL_LAYER_PARAMETER;
+ PRASCNTL_LAYER_PARAMETER = ^_RASCNTL_LAYER_PARAMETER;
+
+type
+ tagRasCntlDevConfigDlgEdit = record
+ szDeviceName:array[0..RAS_MaxDeviceName] of WCHAR;
+ szDeviceType:array[0..RAS_MaxDeviceType] of WCHAR;
+ hWndOwner:HWND;
+ dwSize:DWORD;
+ DataBuf:array[0..0] of byte;
+ end;
+ RASCNTL_DEVCFGDLGED = tagRasCntlDevConfigDlgEdit;
+ PRASCNTL_DEVCFGDLGED = ^tagRasCntlDevConfigDlgEdit;
+
+const
+ MAX_IF_NAME_LEN = 256;
+
+//
+// RASCNTL_SERVERSTATUS is...
+//
+// ..Returned by:
+// RASCNTL_SERVER_GET_STATUS
+// RASCNTL_SERVER_GET_PARAMETERS
+// ..Passed to:
+// RASCNTL_SERVER_SET_PARAMETERS
+//
+const
+ PPPSRV_FLAG_REQUIRE_DATA_ENCRYPTION = 1 shl 1; // Require encryption on this connection.
+ PPPSRV_FLAG_ALLOW_UNAUTHENTICATED_ACCESS = 1 shl 2; // Do not require authentication on the connection
+ PPPSRV_FLAG_NO_VJ_HEADER_COMPRESSION = 1 shl 3; // Prevent VJ TCP/IP header compression
+ PPPSRV_FLAG_NO_DATA_COMPRESSION = 1 shl 4; // Prevent MS data compression
+ PPPSRV_FLAG_ADD_CLIENT_SUBNET = 1 shl 5; // Add a subnet route for a client connection
+
+type
+ tagRasCntlServerStatus = record
+ bEnable:BOOL;
+ bmFlags:DWORD;
+ bUseDhcpAddresses:BOOL; // Obtain addresses from DHCP server rather than static pool
+ dwStaticIpAddrStart:DWORD; // If using static IP address pool, this is the first address
+ dwStaticIpAddrCount:DWORD; // Number of static IP addresses following IpAddrStart in pool
+ bmAuthenticationMethods:DWORD;// Bitmask of authentication methods to be disallowed, see
+ // RASEO_ProhibitXxx in ras.h
+
+ dwNumLines:DWORD;
+
+ bUseAutoIpAddresses:BOOL; // TRUE if IP addresses for clients should be generated from AutoIp pool
+ dwAutoIpSubnet:DWORD; // Defines AutoIP address pool
+ dwAutoIpSubnetMask:DWORD;
+
+ wszDhcpInterface:array[0..MAX_IF_NAME_LEN] of WCHAR;
+ end;
+ RASCNTL_SERVERSTATUS = tagRasCntlServerStatus;
+ PRASCNTL_SERVERSTATUS = ^tagRasCntlServerStatus;
+
+//
+// Structure passed to the following IOCTLs
+// RASCNTL_SERVER_LINE_GET_PARAMETERS
+// RASCNTL_SERVER_LINE_SET_PARAMETERS
+// RASCNTL_SERVER_LINE_ENABLE
+// RASCNTL_SERVER_LINE_DISABLE
+//
+type
+ tagRasCntlServerLine = record
+ rasDevInfo:RASDEVINFO; // szDeviceType and szDeviceName of the line
+ bEnable:BOOL;
+ bmFlags:DWORD;
+ DisconnectIdleSeconds:UINT;
+ dwDevConfigSize:DWORD;
+ DevConfig:array[0..0] of byte; // Variable size (dwDevConfigSize bytes) array of device config info
+ end;
+ RASCNTL_SERVERLINE = tagRasCntlServerLine;
+ PRASCNTL_SERVERLINE = ^tagRasCntlServerLine;
+
+//
+// Structure passed to the following IOCTLs
+// RASCNTL_SERVER_USER_SET_CREDENTIALS Allow a username/password
+// RASCNTL_SERVER_USER_DELETE_CREDENTIALS Remove a username
+//
+type
+ tagRasCntlServerUser = record
+ tszUserName:array[0..UNLEN] of TCHAR;
+ tszDomainName:array[0..DNLEN] of TCHAR; // may be null
+ password:array[0..PWLEN-1] of byte;
+ cbPassword:DWORD;
+ end;
+ RASCNTL_SERVERUSERCREDENTIALS = tagRasCntlServerUser;
+ PRASCNTL_SERVERUSERCREDENTIALS = ^tagRasCntlServerUser;
+
+//
+// Structure containing info describing an enabled line's connection status
+//
+// Used with the IOCTLS:
+// RASCNTL_SERVER_LINE_GET_CONNECTION_INFO
+//
+type
+ tagRasCntlServerConnection = record
+ rasDevInfo:RASDEVINFO; // szDeviceType and szDeviceName of the line
+ hrasconn:HRASCONN; // handle that can be used in RasGetLinkStatistics (NULL if line is not enabled)
+ dwServerIpAddress:DWORD; // IP Address for server line IP interface
+ dwClientIpAddress:DWORD; // IP Address that will be assigned to client connecting to this line
+ RasConnState:RASCONNSTATE; // RASCS_Disconnected, etc.
+ tszUserName:array[0..DNLEN+1+UNLEN] of TCHAR; // Name of user logged in to the port
+ end;
+ RASCNTL_SERVERCONNECTION = tagRasCntlServerConnection;
+ PRASCNTL_SERVERCONNECTION = ^tagRasCntlServerConnection;
+
+//
+// Structure containing info describing the pool of IPV6 network prefixes that
+// can be assigned by the server.
+// Used with the IOCTLS:
+// RASCNTL_SERVER_GET_IPV6_NET_PREFIX
+// RASCNTL_SERVER_SET_IPV6_NET_PREFIX
+//
+type
+ tagRasCntlServerIPV6NetPrefix = record
+ IPV6NetPrefix:array[0..15] of byte;
+ IPV6NetPrefixBitLength:DWORD;
+ IPV6NetPrefixCount:DWORD;
+ end;
+ RASCNTL_SERVER_IPV6_NET_PREFIX = tagRasCntlServerIPV6NetPrefix;
+ PRASCNTL_SERVER_IPV6_NET_PREFIX = ^tagRasCntlServerIPV6NetPrefix;
+
+//
+// RasDial message notifications are sent with Message ID set to
+// WM_RASDIALEVENT
+//
+const
+ RASDIALEVENT = 'RasDialEvent';
+
+ WM_RASDIALEVENT = $CCCD;
+
+
+type
+ _RAS_STATS = record
+ dwSize:DWORD;
+ dwBytesXmited:DWORD;
+ dwBytesRcved:DWORD;
+ dwFramesXmited:DWORD;
+ dwFramesRcved:DWORD;
+ dwCrcErr:DWORD;
+ dwTimeoutErr:DWORD;
+ dwAlignmentErr:DWORD;
+ dwHardwareOverrunErr:DWORD;
+ dwFramingErr:DWORD;
+ dwBufferOverrunErr:DWORD;
+ dwCompressionRatioIn:DWORD;
+ dwCompressionRatioOut:DWORD;
+ dwBps:DWORD;
+ dwConnectDuration:DWORD;
+ end;
+
+ RAS_STATS = _RAS_STATS;
+ PRAS_STATS = ^_RAS_STATS;
+
+
+{$IFDEF WINCE} // #ifdef UNDER_CE
+
+// This structure is used by the RnaApp application on WINCE
+// to signal when a connection has occured.
+
+type
+ tagRNAAppInfo = record
+ dwSize:DWORD; // The size of this structure
+ hWndRNAApp:DWORD; // The handle of the RNAApp window
+ Context:DWORD; // Context value specified on CmdLine
+ ErrorCode:DWORD; // Last error code
+ RasEntryName:array[0..RAS_MaxEntryName] of TCHAR;
+ end;
+ RNAAPP_INFO = tagRNAAppInfo;
+ PRNAAPP_INFO = ^tagRNAAppInfo;
+
+const
+ RNA_RASCMD = WM_USER+1;
+ RNA_ADDREF = 1;
+ RNA_DELREF = 2;
+{$ENDIF WINCE}
+
+{$PACKRECORDS DEFAULT} // #include "poppack.h"
+
+{$IFNDEF RASAPI}
+{$DEFINE RASAPI}
+{$ENDIF RASAPI}
+
+function RasDial(dialExtensions:LPRASDIALEXTENSIONS;
+ phoneBookPath:LPTSTR;
+ rasDialParam:LPRASDIALPARAMS;
+ NotifierType:DWORD;
+ notifier:LPVOID;
+ pRasConn:LPHRASCONN):DWORD; external KernelDLL name 'RasDial'; // index 1F3
+
+function RasDialW(dialExtensions:LPRASDIALEXTENSIONS;
+ phoneBookPath:LPTSTR;
+ rasDialParam:LPRASDIALPARAMS;
+ NotifierType:DWORD;
+ notifier:LPVOID;
+ pRasConn:LPHRASCONN):DWORD; external KernelDLL name 'RasDial'; // index 1F3
+
+function RasHangUp(Session:HRASCONN):DWORD; external KernelDLL name 'RasHangUp'; // index 1F4, 1F5
+function RasHangUpW(Session:HRASCONN):DWORD; external KernelDLL name 'RasHangUp'; // index 1F4, 1F5
+
+function RasEnumEntries(Reserved:LPWSTR;
+ lpszPhoneBookPath:LPWSTR;
+ lprasentryname:LPRASENTRYNAME;
+ lpcb:LPDWORD;
+ lpcEntries:LPDWORD):DWORD; external KernelDLL name 'RasEnumEntries'; // index 1F6
+function RasEnumEntriesW(Reserved:LPWSTR;
+ lpszPhoneBookPath:LPWSTR;
+ lprasentryname:LPRASENTRYNAME;
+ lpcb:LPDWORD;
+ lpcEntries:LPDWORD):DWORD; external KernelDLL name 'RasEnumEntries'; // index 1F6
+
+function RasGetEntryDialParams(lpszPhoneBook:LPWSTR;
+ lpRasDialParams:LPRASDIALPARAMS;
+ lpfPassword:LPBOOL):DWORD; external KernelDLL name 'RasGetEntryDialParams'; // index 1F7
+function RasGetEntryDialParamsW(lpszPhoneBook:LPWSTR;
+ lpRasDialParams:LPRASDIALPARAMS;
+ lpfPassword:LPBOOL):DWORD; external KernelDLL name 'RasGetEntryDialParams'; // index 1F7
+
+function RasSetEntryDialParams(lpszPhoneBook:LPWSTR;
+ lpRasDialParams:LPRASDIALPARAMS;
+ fRemovePassword:BOOL):DWORD; external KernelDLL name 'RasSetEntryDialParams'; // index 1F8
+function RasSetEntryDialParamsW(lpszPhoneBook:LPWSTR;
+ lpRasDialParams:LPRASDIALPARAMS;
+ fRemovePassword:BOOL):DWORD; external KernelDLL name 'RasSetEntryDialParams'; // index 1F8
+
+function RasGetEntryProperties(lpszPhoneBook:LPWSTR;
+ szEntry:LPWSTR;
+ lpEntry:LPRASENTRY;
+ lpdwEntrySize:LPDWORD;
+ lpb:LPBYTE;
+ lpdwSize:LPDWORD):DWORD; external KernelDLL name 'RasGetEntryProperties'; // index 1F9
+function RasGetEntryPropertiesW(lpszPhoneBook:LPWSTR;
+ szEntry:LPWSTR;
+ lpEntry:LPRASENTRY;
+ lpdwEntrySize:LPDWORD;
+ lpb:LPBYTE;
+ lpdwSize:LPDWORD):DWORD; external KernelDLL name 'RasGetEntryProperties'; // index 1F9
+
+
+function RasSetEntryProperties(lpszPhoneBook:LPWSTR;
+ szEntry:LPWSTR;
+ lpEntry:LPRASENTRY;
+ dwEntrySize:DWORD;
+ lpb:LPBYTE;
+ dwSize:DWORD):DWORD; external KernelDLL name 'RasSetEntryProperties'; // index 1FA
+function RasSetEntryPropertiesW(lpszPhoneBook:LPWSTR;
+ szEntry:LPWSTR;
+ lpEntry:LPRASENTRY;
+ dwEntrySize:DWORD;
+ lpb:LPBYTE;
+ dwSize:DWORD):DWORD; external KernelDLL name 'RasSetEntryProperties'; // index 1FA
+
+function RasValidateEntryName(lpszPhonebook:LPCWSTR;
+ lpszEntry:LPCWSTR):DWORD; external KernelDLL name 'RasValidateEntryName'; // index 1FB
+function RasValidateEntryNameW(lpszPhonebook:LPCWSTR;
+ lpszEntry:LPCWSTR):DWORD; external KernelDLL name 'RasValidateEntryName'; // index 1FB
+
+function RasDeleteEntry(lpszPhonebook:LPWSTR;
+ lpszEntry:LPWSTR):DWORD; external KernelDLL name 'RasDeleteEntry'; // index 1FC
+function RasDeleteEntryW(lpszPhonebook:LPWSTR;
+ lpszEntry:LPWSTR):DWORD; external KernelDLL name 'RasDeleteEntry'; // index 1FC
+
+function RasRenameEntry(lpszPhonebook:LPWSTR;
+ lpszOldEntry:LPWSTR;
+ lpszNewEntry:LPWSTR):DWORD; external KernelDLL name 'RasRenameEntry'; // index 1FD
+function RasRenameEntryW(lpszPhonebook:LPWSTR;
+ lpszOldEntry:LPWSTR;
+ lpszNewEntry:LPWSTR):DWORD; external KernelDLL name 'RasRenameEntry'; // index 1FD
+
+function RasEnumConnections(lprasconn:LPRASCONN;
+ lpcb:LPDWORD;
+ lpcConnections:LPDWORD):DWORD; external KernelDLL name 'RasEnumConnections'; // index 1FE
+function RasEnumConnectionsW(lprasconn:LPRASCONN;
+ lpcb:LPDWORD;
+ lpcConnections:LPDWORD):DWORD; external KernelDLL name 'RasEnumConnections'; // index 1FE
+
+function RasGetConnectStatus(rasconn:HRASCONN;
+ lprasconnstatus:LPRASCONNSTATUS):DWORD; external KernelDLL name 'RasGetConnectStatus'; // index 1FF
+function RasGetConnectStatusW(rasconn:HRASCONN;
+ lprasconnstatus:LPRASCONNSTATUS):DWORD; external KernelDLL name 'RasGetConnectStatus'; // index 1FF
+
+function RasGetEntryDevConfig(szPhonebook:LPCTSTR;
+ szEntry:LPCTSTR;
+ pdwDeviceID:LPDWORD;
+ pdwSize:LPDWORD;
+ pDeviceConfig:LPVARSTRING):DWORD; external KernelDLL name 'RasGetEntryDevConfig'; // index 200
+function RasGetEntryDevConfigW(szPhonebook:LPCTSTR;
+ szEntry:LPCTSTR;
+ pdwDeviceID:LPDWORD;
+ pdwSize:LPDWORD;
+ pDeviceConfig:LPVARSTRING):DWORD; external KernelDLL name 'RasGetEntryDevConfig'; // index 200
+
+function RasSetEntryDevConfig(szPhonebook:LPCTSTR;
+ szEntry:LPCTSTR;
+ dwDeviceID:DWORD;
+ lpDeviceConfig:LPVARSTRING):DWORD; external KernelDLL name 'RasSetEntryDevConfig'; // index 201
+function RasSetEntryDevConfigW(szPhonebook:LPCTSTR;
+ szEntry:LPCTSTR;
+ dwDeviceID:DWORD;
+ lpDeviceConfig:LPVARSTRING):DWORD; external KernelDLL name 'RasSetEntryDevConfig'; // index 201
+
+
+function RasEnumDevicesW(lpRasDevinfo:LPRASDEVINFOW;
+ lpcb:LPDWORD;
+ lpcDevices:LPDWORD):DWORD; external KernelDLL name 'RasEnumDevicesW'; // index 203
+function RasEnumDevices(lpRasDevinfo:LPRASDEVINFOW;
+ lpcb:LPDWORD;
+ lpcDevices:LPDWORD):DWORD; external KernelDLL name 'RasEnumDevicesW'; // index 203
+
+function RasGetProjectionInfoW(hrasconn:HRASCONN;
+ rasprojection:RASPROJECTION;
+ lpprojection:LPVOID;
+ lpcb:LPDWORD):DWORD; external KernelDLL name 'RasGetProjectionInfoW'; // index 204
+function RasGetProjectionInfo(hrasconn:HRASCONN;
+ rasprojection:RASPROJECTION;
+ lpprojection:LPVOID;
+ lpcb:LPDWORD):DWORD; external KernelDLL name 'RasGetProjectionInfoW'; // index 204
+
+function RasGetLinkStatistics(hRasConn:HRASCONN;
+ dwSubEntry:DWORD;
+ lpStatistics:PRAS_STATS):DWORD; external KernelDLL name 'RasGetLinkStatistics'; // index 205
+
+function RasGetDispPhoneNumW(szPhonebook:LPCWSTR;
+ szEntry:LPCWSTR;
+ szPhoneNum:LPWSTR;
+ dwPhoneNumLen:DWORD):DWORD; external KernelDLL name 'RasGetDispPhoneNumW'; // index 206
+function RasGetDispPhoneNum(szPhonebook:LPCWSTR;
+ szEntry:LPCWSTR;
+ szPhoneNum:LPWSTR;
+ dwPhoneNumLen:DWORD):DWORD; external KernelDLL name 'RasGetDispPhoneNumW'; // index 206
+
+function RasDevConfigDialogEditW(szDeviceName:LPCWSTR;
+ szDeviceType:LPCWSTR;
+ hWndOwner:HWND;
+ lpDeviceConfigIn:LPVOID;
+ dwSize:DWORD;
+ lpDeviceConfigOut:LPVARSTRING):DWORD; external KernelDLL name 'RasDevConfigDialogEditW'; // index 207
+function RasDevConfigDialogEdit(szDeviceName:LPCWSTR;
+ szDeviceType:LPCWSTR;
+ hWndOwner:HWND;
+ lpDeviceConfigIn:LPVOID;
+ dwSize:DWORD;
+ lpDeviceConfigOut:LPVARSTRING):DWORD; external KernelDLL name 'RasDevConfigDialogEditW'; // index 207
+
+function RasIOControl(hRasConn:LPVOID;
+ dwCode:DWORD;
+ pBufIn:LPBYTE;
+ dwLenIn:DWORD;
+ pBufOut:LPBYTE;
+ dwLenOut:DWORD;
+ pdwActualOut:LPDWORD):DWORD; external KernelDLL name 'RasIOControl'; // index 202
+
+function RasGetEapUserData(hToken:HANDLE; // access token for user
+ pszPhonebook:LPCTSTR; // path to phone book to use
+ pszEntry:LPCTSTR; // name of entry in phone book
+ pbEapData:LPBYTE; // retrieved data for the user
+ pdwSizeofEapData:LPDWORD // size of retrieved data
+ ):DWORD; external KernelDLL name 'RasGetEapUserData'; // index 208
+
+function RasSetEapUserData(hToken:HANDLE; // access token for user
+ pszPhonebook:LPCTSTR; // path to phone book to use
+ pszEntry:LPCTSTR; // name of entry in phone book
+ pbEapData:LPBYTE; // data to store for the user
+ dwSizeofEapData:DWORD // size of data
+ ):DWORD; external KernelDLL name 'RasSetEapUserData'; // index 209
+
+function RasGetEapConnectionData(pszPhonebook:LPCTSTR; // path to phone book to use
+ pszEntry:LPCTSTR; // name of entry in phone book
+ pbEapData:LPBYTE; // retrieved data for the user
+ pdwSizeofEapData:LPDWORD // size of retrieved data
+ ):DWORD; external KernelDLL name 'RasGetEapConnectionData'; // index 20A
+
+function RasSetEapConnectionData(pszPhonebook:LPCTSTR; // path to phone book to use
+ pszEntry:LPCTSTR; // name of entry in phone book
+ pbEapData:LPBYTE; // data to store for the connection
+ dwSizeofEapData:DWORD // size of data
+ ):DWORD; external KernelDLL name 'RasSetEapConnectionData'; // index 20B
+
+implementation
+
+end. \ No newline at end of file
diff --git a/packages/winceunits/src/raserror.pp b/packages/winceunits/src/raserror.pp
new file mode 100644
index 0000000000..65c00f7f81
--- /dev/null
+++ b/packages/winceunits/src/raserror.pp
@@ -0,0 +1,210 @@
+{
+ 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 Name:
+//
+// raserror.h
+//
+// Abstract:
+//
+// Remote Access external API
+// RAS specific error codes
+//
+
+//
+// Microsoft Windows Mobile 6.0 for PocketPC SDK.
+//
+
+unit RASError;
+
+interface
+
+const
+ RASBASE = 600;
+ SUCCESS = 0;
+
+
+ PENDING = RASBASE + 0;
+ ERROR_INVALID_PORT_HANDLE = RASBASE + 1;
+ ERROR_PORT_ALREADY_OPEN = RASBASE + 2;
+ ERROR_BUFFER_TOO_SMALL = RASBASE + 3;
+ ERROR_WRONG_INFO_SPECIFIED = RASBASE + 4;
+ ERROR_CANNOT_SET_PORT_INFO = RASBASE + 5;
+ ERROR_PORT_NOT_CONNECTED = RASBASE + 6;
+ ERROR_EVENT_INVALID = RASBASE + 7;
+ ERROR_DEVICE_DOES_NOT_EXIST = RASBASE + 8;
+ ERROR_DEVICETYPE_DOES_NOT_EXIST = RASBASE + 9;
+ ERROR_BUFFER_INVALID = RASBASE + 10;
+ ERROR_ROUTE_NOT_AVAILABLE = RASBASE + 11;
+ ERROR_ROUTE_NOT_ALLOCATED = RASBASE + 12;
+ ERROR_INVALID_COMPRESSION_SPECIFIED = RASBASE + 13;
+ ERROR_OUT_OF_BUFFERS = RASBASE + 14;
+ ERROR_PORT_NOT_FOUND = RASBASE + 15;
+ ERROR_ASYNC_REQUEST_PENDING = RASBASE + 16;
+ ERROR_ALREADY_DISCONNECTING = RASBASE + 17;
+ ERROR_PORT_NOT_OPEN = RASBASE + 18;
+ ERROR_PORT_DISCONNECTED = RASBASE + 19;
+ ERROR_NO_ENDPOINTS = RASBASE + 20;
+ ERROR_CANNOT_OPEN_PHONEBOOK = RASBASE + 21;
+ ERROR_CANNOT_LOAD_PHONEBOOK = RASBASE + 22;
+ ERROR_CANNOT_FIND_PHONEBOOK_ENTRY = RASBASE + 23;
+ ERROR_CANNOT_WRITE_PHONEBOOK = RASBASE + 24;
+ ERROR_CORRUPT_PHONEBOOK = RASBASE + 25;
+ ERROR_CANNOT_LOAD_STRING = RASBASE + 26;
+ ERROR_KEY_NOT_FOUND = RASBASE + 27;
+ ERROR_DISCONNECTION = RASBASE + 28;
+ ERROR_REMOTE_DISCONNECTION = RASBASE + 29;
+ ERROR_HARDWARE_FAILURE = RASBASE + 30;
+ ERROR_USER_DISCONNECTION = RASBASE + 31;
+ ERROR_INVALID_SIZE = RASBASE + 32;
+ ERROR_PORT_NOT_AVAILABLE = RASBASE + 33;
+ ERROR_CANNOT_PROJECT_CLIENT = RASBASE + 34;
+ ERROR_UNKNOWN = RASBASE + 35;
+ ERROR_WRONG_DEVICE_ATTACHED = RASBASE + 36;
+ ERROR_BAD_STRING = RASBASE + 37;
+ ERROR_REQUEST_TIMEOUT = RASBASE + 38;
+ ERROR_CANNOT_GET_LANA = RASBASE + 39;
+ ERROR_NETBIOS_ERROR = RASBASE + 40;
+ ERROR_SERVER_OUT_OF_RESOURCES = RASBASE + 41;
+ ERROR_NAME_EXISTS_ON_NET = RASBASE + 42;
+ ERROR_SERVER_GENERAL_NET_FAILURE = RASBASE + 43;
+ WARNING_MSG_ALIAS_NOT_ADDED = RASBASE + 44;
+ ERROR_AUTH_INTERNAL = RASBASE + 45;
+ ERROR_RESTRICTED_LOGON_HOURS = RASBASE + 46;
+ ERROR_ACCT_DISABLED = RASBASE + 47;
+ ERROR_PASSWD_EXPIRED = RASBASE + 48;
+ ERROR_NO_DIALIN_PERMISSION = RASBASE + 49;
+ ERROR_SERVER_NOT_RESPONDING = RASBASE + 50;
+ ERROR_FROM_DEVICE = RASBASE + 51;
+ ERROR_UNRECOGNIZED_RESPONSE = RASBASE + 52;
+ ERROR_MACRO_NOT_FOUND = RASBASE + 53;
+ ERROR_MACRO_NOT_DEFINED = RASBASE + 54;
+ ERROR_MESSAGE_MACRO_NOT_FOUND = RASBASE + 55;
+ ERROR_DEFAULTOFF_MACRO_NOT_FOUND = RASBASE + 56;
+ ERROR_FILE_COULD_NOT_BE_OPENED = RASBASE + 57;
+ ERROR_DEVICENAME_TOO_LONG = RASBASE + 58;
+ ERROR_DEVICENAME_NOT_FOUND = RASBASE + 59;
+ ERROR_NO_RESPONSES = RASBASE + 60;
+ ERROR_NO_COMMAND_FOUND = RASBASE + 61;
+ ERROR_WRONG_KEY_SPECIFIED = RASBASE + 62;
+ ERROR_UNKNOWN_DEVICE_TYPE = RASBASE + 63;
+ ERROR_ALLOCATING_MEMORY = RASBASE + 64;
+ ERROR_PORT_NOT_CONFIGURED = RASBASE + 65;
+ ERROR_DEVICE_NOT_READY = RASBASE + 66;
+ ERROR_READING_INI_FILE = RASBASE + 67;
+ ERROR_NO_CONNECTION = RASBASE + 68;
+ ERROR_BAD_USAGE_IN_INI_FILE = RASBASE + 69;
+ ERROR_READING_SECTIONNAME = RASBASE + 70;
+ ERROR_READING_DEVICETYPE = RASBASE + 71;
+ ERROR_READING_DEVICENAME = RASBASE + 72;
+ ERROR_READING_USAGE = RASBASE + 73;
+ ERROR_READING_MAXCONNECTBPS = RASBASE + 74;
+ ERROR_READING_MAXCARRIERBPS = RASBASE + 75;
+ ERROR_LINE_BUSY = RASBASE + 76;
+ ERROR_VOICE_ANSWER = RASBASE + 77;
+ ERROR_NO_ANSWER = RASBASE + 78;
+ ERROR_NO_CARRIER = RASBASE + 79;
+ ERROR_NO_DIALTONE = RASBASE + 80;
+ ERROR_IN_COMMAND = RASBASE + 81;
+ ERROR_WRITING_SECTIONNAME = RASBASE + 82;
+ ERROR_WRITING_DEVICETYPE = RASBASE + 83;
+ ERROR_WRITING_DEVICENAME = RASBASE + 84;
+ ERROR_WRITING_MAXCONNECTBPS = RASBASE + 85;
+ ERROR_WRITING_MAXCARRIERBPS = RASBASE + 86;
+ ERROR_WRITING_USAGE = RASBASE + 87;
+ ERROR_WRITING_DEFAULTOFF = RASBASE + 88;
+ ERROR_READING_DEFAULTOFF = RASBASE + 89;
+ ERROR_EMPTY_INI_FILE = RASBASE + 90;
+ ERROR_AUTHENTICATION_FAILURE = RASBASE + 91;
+ ERROR_PORT_OR_DEVICE = RASBASE + 92;
+ ERROR_NOT_BINARY_MACRO = RASBASE + 93;
+ ERROR_DCB_NOT_FOUND = RASBASE + 94;
+ ERROR_STATE_MACHINES_NOT_STARTED = RASBASE + 95;
+ ERROR_STATE_MACHINES_ALREADY_STARTED = RASBASE + 96;
+ ERROR_PARTIAL_RESPONSE_LOOPING = RASBASE + 97;
+ ERROR_UNKNOWN_RESPONSE_KEY = RASBASE + 98;
+ ERROR_RECV_BUF_FULL = RASBASE + 99;
+ ERROR_CMD_TOO_LONG = RASBASE + 100;
+ ERROR_UNSUPPORTED_BPS = RASBASE + 101;
+ ERROR_UNEXPECTED_RESPONSE = RASBASE + 102;
+ ERROR_INTERACTIVE_MODE = RASBASE + 103;
+ ERROR_BAD_CALLBACK_NUMBER = RASBASE + 104;
+ ERROR_INVALID_AUTH_STATE = RASBASE + 105;
+ ERROR_WRITING_INITBPS = RASBASE + 106;
+ ERROR_X25_DIAGNOSTIC = RASBASE + 107;
+ ERROR_ACCT_EXPIRED = RASBASE + 108;
+ ERROR_CHANGING_PASSWORD = RASBASE + 109;
+ ERROR_OVERRUN = RASBASE + 110;
+ ERROR_RASMAN_CANNOT_INITIALIZE = RASBASE + 111;
+ ERROR_BIPLEX_PORT_NOT_AVAILABLE = RASBASE + 112;
+ ERROR_NO_ACTIVE_ISDN_LINES = RASBASE + 113;
+ ERROR_NO_ISDN_CHANNELS_AVAILABLE = RASBASE + 114;
+ ERROR_TOO_MANY_LINE_ERRORS = RASBASE + 115;
+ ERROR_IP_CONFIGURATION = RASBASE + 116;
+ ERROR_NO_IP_ADDRESSES = RASBASE + 117;
+ ERROR_PPP_TIMEOUT = RASBASE + 118;
+ ERROR_PPP_REMOTE_TERMINATED = RASBASE + 119;
+ ERROR_PPP_NO_PROTOCOLS_CONFIGURED = RASBASE + 120;
+ ERROR_PPP_NO_RESPONSE = RASBASE + 121;
+ ERROR_PPP_INVALID_PACKET = RASBASE + 122;
+ ERROR_PHONE_NUMBER_TOO_LONG = RASBASE + 123;
+ ERROR_IPXCP_NO_DIALOUT_CONFIGURED = RASBASE + 124;
+ ERROR_IPXCP_NO_DIALIN_CONFIGURED = RASBASE + 125;
+ ERROR_IPXCP_DIALOUT_ALREADY_ACTIVE = RASBASE + 126;
+ ERROR_ACCESSING_TCPCFGDLL = RASBASE + 127;
+ ERROR_NO_IP_RAS_ADAPTER = RASBASE + 128;
+ ERROR_SLIP_REQUIRES_IP = RASBASE + 129;
+ ERROR_PROJECTION_NOT_COMPLETE = RASBASE + 130;
+ ERROR_PROTOCOL_NOT_CONFIGURED = RASBASE + 131;
+ ERROR_PPP_NOT_CONVERGING = RASBASE + 132;
+ ERROR_PPP_CP_REJECTED = RASBASE + 133;
+ ERROR_PPP_LCP_TERMINATED = RASBASE + 134;
+ ERROR_PPP_REQUIRED_ADDRESS_REJECTED = RASBASE + 135;
+ ERROR_PPP_NCP_TERMINATED = RASBASE + 136;
+ ERROR_PPP_LOOPBACK_DETECTED = RASBASE + 137;
+ ERROR_PPP_NO_ADDRESS_ASSIGNED = RASBASE + 138;
+ ERROR_CANNOT_USE_LOGON_CREDENTIALS = RASBASE + 139;
+ ERROR_TAPI_CONFIGURATION = RASBASE + 140;
+ ERROR_NO_LOCAL_ENCRYPTION = RASBASE + 141;
+ ERROR_NO_REMOTE_ENCRYPTION = RASBASE + 142;
+ ERROR_REMOTE_REQUIRES_ENCRYPTION = RASBASE + 143;
+ ERROR_IPXCP_NET_NUMBER_CONFLICT = RASBASE + 144;
+ ERROR_INVALID_SMM = RASBASE + 145;
+ ERROR_SMM_UNINITIALIZED = RASBASE + 146;
+ ERROR_NO_MAC_FOR_PORT = RASBASE + 147;
+ ERROR_SMM_TIMEOUT = RASBASE + 148;
+ ERROR_BAD_PHONE_NUMBER = RASBASE + 149;
+ ERROR_WRONG_MODULE = RASBASE + 150;
+ ERROR_PPP_MAC = RASBASE + 151;
+ ERROR_PPP_LCP = RASBASE + 152;
+ ERROR_PPP_AUTH = RASBASE + 153;
+ ERROR_PPP_NCP = RASBASE + 154;
+ ERROR_POWER_OFF = RASBASE + 155;
+ ERROR_POWER_OFF_CD = RASBASE + 156;
+
+
+ ERROR_DIAL_ALREADY_IN_PROGRESS = RASBASE + 157;
+ ERROR_RASAUTO_CANNOT_INITIALIZE = RASBASE + 158;
+ ERROR_UNABLE_TO_AUTHENTICATE_SERVER = RASBASE + 178;
+
+
+ RASBASEEND = RASBASE + 158;
+
+ ROUTEBASE = 900;
+
+ ERROR_IDLE_DISCONNECTED = ROUTEBASE + 26;
+// The port has been disconnected due to inactivity.%0
+
+implementation
+
+end. \ No newline at end of file
diff --git a/packages/winceunits/src/ril.pp b/packages/winceunits/src/ril.pp
new file mode 100644
index 0000000000..1c3a900d8b
--- /dev/null
+++ b/packages/winceunits/src/ril.pp
@@ -0,0 +1,8735 @@
+{
+ 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.
+
+ ********************************************************************** }
+//-----------------------------------------------------------------------------
+//
+// RIL.H - Radio Interface Layer
+//
+//-----------------------------------------------------------------------------
+
+//
+// Microsoft Windows Mobile 6.0 Platform Builder.
+//
+
+
+unit RIL;
+
+{$CALLING cdecl}
+{$INLINE ON}
+
+interface
+
+uses Windows;
+
+const
+ RILDLL = 'ril.dll';
+
+const
+ RIL_DRIVER_VERSION = $00020000;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Error Class | Each RIL error falls into a general error class bucket
+//
+// @comm In RIL, the low order 16 bits are divided into an 8-bit error class and
+// an 8-bit error value. Use the RILERRORCLASS macro to obtain the error
+// class from a RIL HRESULT.
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_ERRORCLASS_NONE = $00; // @constdefine Misc error
+ RIL_ERRORCLASS_PASSWORD = $01; // @constdefine Unspecified phone failure
+ RIL_ERRORCLASS_SIM = $02; // @constdefine Problem with the SIM
+ RIL_ERRORCLASS_NETWORKACCESS = $03; // @constdefine Can't access the network
+ RIL_ERRORCLASS_NETWORK = $04; // @constdefine Error in the network
+ RIL_ERRORCLASS_MOBILE = $05; // @constdefine Error in the mobile
+ RIL_ERRORCLASS_NETWORKUNSUPPORTED = $06; // @constdefine Unsupported by the network
+ RIL_ERRORCLASS_MOBILEUNSUPPORTED = $07; // @constdefine Unsupported by the mobile
+ RIL_ERRORCLASS_BADPARAM = $08; // @constdefine An invalid parameter was supplied
+ RIL_ERRORCLASS_STORAGE = $09; // @constdefine Error relating to storage
+ RIL_ERRORCLASS_SMSC = $0A; // @constdefine Error relates to the SMSC
+ RIL_ERRORCLASS_DESTINATION = $0B; // @constdefine Error in the destination mobile
+ RIL_ERRORCLASS_DESTINATIONUNSUPPORTED = $0C; // @constdefine Unsupported by destination mobile
+ RIL_ERRORCLASS_RADIOUNAVAILABLE = $0D; // @constdefine The Radio Module is Off or a radio module may not be present
+ RIL_ERRORCLASS_GPRS = $0E; // @constdefine GPRS related failures
+
+function MAKE_RILERROR(errclass:byte; code:byte):ULONG; inline;
+
+function RILERRORCLASS(rilerror:ULONG):byte; inline;
+
+function ISRILERROR(rilerror:ULONG):BOOL; inline;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Error | Error codes
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ FACILITY_RIL = $0100;
+
+ RIL_E_PHONEFAILURE = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_MOBILE shl 8) or $01); // @constdefine Unspecified phone failure
+ RIL_E_NOCONNECTION = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_MOBILE shl 8) or $02); // @constdefine RIL has no connection to the phone
+ RIL_E_LINKRESERVED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_MOBILE shl 8) or $03); // @constdefine RIL's link to the phone is reserved
+ RIL_E_OPNOTALLOWED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_MOBILEUNSUPPORTED shl 8) or $04); // @constdefine Attempted operation isn't allowed
+ RIL_E_OPNOTSUPPORTED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_MOBILEUNSUPPORTED shl 8) or $05); // @constdefine Attempted operation isn't supported
+ RIL_E_PHSIMPINREQUIRED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_PASSWORD shl 8) or $06); // @constdefine PH-SIM PIN is required to perform this operation
+ RIL_E_PHFSIMPINREQUIRED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_PASSWORD shl 8) or $07); // @constdefine PH-FSIM PIN is required to perform this operation
+ RIL_E_PHFSIMPUKREQUIRED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_PASSWORD shl 8) or $08); // @constdefine PH-FSIM PUK is required to perform this operation
+ RIL_E_SIMNOTINSERTED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_SIM shl 8) or $09); // @constdefine SIM isn't inserted into the phone
+ RIL_E_SIMPINREQUIRED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_PASSWORD shl 8) or $0A); // @constdefine SIM PIN is required to perform this operation
+ RIL_E_SIMPUKREQUIRED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_PASSWORD shl 8) or $0B); // @constdefine SIM PUK is required to perform this operation
+ RIL_E_SIMFAILURE = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_SIM shl 8) or $0C); // @constdefine SIM failure was detected
+ RIL_E_SIMBUSY = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_SIM shl 8) or $0D); // @constdefine SIM is busy
+ RIL_E_SIMWRONG = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_SIM shl 8) or $0E); // @constdefine Inorrect SIM was inserted
+ RIL_E_INCORRECTPASSWORD = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_PASSWORD shl 8) or $0F); // @constdefine Incorrect password was supplied
+ RIL_E_SIMPIN2REQUIRED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_PASSWORD shl 8) or $10); // @constdefine SIM PIN2 is required to perform this operation
+ RIL_E_SIMPUK2REQUIRED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_PASSWORD shl 8) or $11); // @constdefine SIM PUK2 is required to perform this operation
+ RIL_E_MEMORYFULL = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_STORAGE shl 8) or $12); // @constdefine Storage memory is full
+ RIL_E_INVALIDINDEX = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_STORAGE shl 8) or $13); // @constdefine Invalid storage index was supplied
+ RIL_E_NOTFOUND = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_STORAGE shl 8) or $14); // @constdefine A requested storage entry was not found
+ RIL_E_MEMORYFAILURE = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_STORAGE shl 8) or $15); // @constdefine Storage memory failure
+ RIL_E_TEXTSTRINGTOOLONG = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_BADPARAM shl 8) or $16); // @constdefine Supplied text string is too long
+ RIL_E_INVALIDTEXTSTRING = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_BADPARAM shl 8) or $17); // @constdefine Supplied text string contains invalid characters
+ RIL_E_DIALSTRINGTOOLONG = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_BADPARAM shl 8) or $18); // @constdefine Supplied dial string is too long
+ RIL_E_INVALIDDIALSTRING = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_BADPARAM shl 8) or $19); // @constdefine Supplied dial string contains invalid characters
+ RIL_E_NONETWORKSVC = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NETWORKACCESS shl 8) or $1A); // @constdefine Network service isn't available
+ RIL_E_NETWORKTIMEOUT = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NETWORK shl 8) or $1B); // @constdefine Network operation timed out
+ RIL_E_EMERGENCYONLY = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NETWORKACCESS shl 8) or $1C); // @constdefine Network can only be used for emergency calls
+ RIL_E_NETWKPINREQUIRED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_PASSWORD shl 8) or $1D); // @constdefine Network Personalization PIN is required to perform this operation
+ RIL_E_NETWKPUKREQUIRED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_PASSWORD shl 8) or $1E); // @constdefine Network Personalization PUK is required to perform this operation
+ RIL_E_SUBSETPINREQUIRED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_PASSWORD shl 8) or $1F); // @constdefine Network Subset Personalization PIN is required to perform this operation
+ RIL_E_SUBSETPUKREQUIRED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_PASSWORD shl 8) or $20); // @constdefine Network Subset Personalization PUK is required to perform this operation
+ RIL_E_SVCPINREQUIRED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_PASSWORD shl 8) or $21); // @constdefine Service Provider Personalization PIN is required to perform this operation
+ RIL_E_SVCPUKREQUIRED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_PASSWORD shl 8) or $22); // @constdefine Service Provider Personalization PUK is required to perform this operation
+ RIL_E_CORPPINREQUIRED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_PASSWORD shl 8) or $23); // @constdefine Corporate Personalization PIN is required to perform this operation
+ RIL_E_CORPPUKREQUIRED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_PASSWORD shl 8) or $24); // @constdefine Corporate Personalization PUK is required to perform this operation
+ RIL_E_TELEMATICIWUNSUPPORTED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NETWORKUNSUPPORTED shl 8) or $25); // @constdefine Telematic interworking isn't supported
+ RIL_E_SMTYPE0UNSUPPORTED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_SMSC shl 8) or $26); // @constdefine Type 0 messages aren't supported
+ RIL_E_CANTREPLACEMSG = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_SMSC shl 8) or $27); // @constdefine Existing message cannot be replaced
+ RIL_E_PROTOCOLIDERROR = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_SMSC shl 8) or $28); // @constdefine Uspecified error related to the message Protocol ID
+ RIL_E_DCSUNSUPPORTED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_SMSC shl 8) or $29); // @constdefine Specified message Data Coding Scheme isn't supported
+ RIL_E_MSGCLASSUNSUPPORTED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_SMSC shl 8) or $2A); // @constdefine Specified message class isn't supported
+ RIL_E_DCSERROR = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_SMSC shl 8) or $2B); // @constdefine Unspecified error related to the message Data Coding Scheme
+ RIL_E_CMDCANTBEACTIONED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_SMSC shl 8) or $2C); // @constdefine Specified message Command cannot be executed
+ RIL_E_CMDUNSUPPORTED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_SMSC shl 8) or $2D); // @constdefine Specified message Command isn't supported
+ RIL_E_CMDERROR = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_SMSC shl 8) or $2E); // @constdefine Unspecified error related to the message Command
+ RIL_E_MSGBODYHEADERERROR = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_SMSC shl 8) or $2F); // @constdefine Unspecified error related to the message Body or Header
+ RIL_E_SCBUSY = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_SMSC shl 8) or $30); // @constdefine Message Service Center is busy
+ RIL_E_NOSCSUBSCRIPTION = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_SMSC shl 8) or $31); // @constdefine No message Service Center subscription
+ RIL_E_SCSYSTEMFAILURE = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_SMSC shl 8) or $32); // @constdefine Message service Center system failure occurred
+ RIL_E_INVALIDADDRESS = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_SMSC shl 8) or $33); // @constdefine Specified address is invalid
+ RIL_E_DESTINATIONBARRED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_SMSC shl 8) or $34); // @constdefine Message destination is barred
+ RIL_E_REJECTEDDUPLICATE = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_SMSC shl 8) or $35); // @constdefine Duplicate message was rejected
+ RIL_E_VPFUNSUPPORTED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_SMSC shl 8) or $36); // @constdefine Specified message Validity Period Format isn't supported
+ RIL_E_VPUNSUPPORTED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_SMSC shl 8) or $37); // @constdefine Specified message Validity Period isn't supported
+ RIL_E_SIMMSGSTORAGEFULL = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_STORAGE shl 8) or $38); // @constdefine Message storage on the SIM is full
+ RIL_E_NOSIMMSGSTORAGE = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_SIM shl 8) or $39); // @constdefine SIM isn't capable of storing messages
+ RIL_E_SIMTOOLKITBUSY = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_SIM shl 8) or $3A); // @constdefine SIM Application Toolkit is busy
+ RIL_E_SIMDOWNLOADERROR = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_SIM shl 8) or $3B); // @constdefine SIM data download error
+ RIL_E_MSGSVCRESERVED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NETWORKUNSUPPORTED shl 8) or $3C); // @constdefine Messaging service is reserved
+ RIL_E_INVALIDMSGPARAM = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_BADPARAM shl 8) or $3D); // @constdefine One of the message parameters is invalid
+ RIL_E_UNKNOWNSCADDRESS = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_SMSC shl 8) or $3E); // @constdefine Unknown message Service Center address was specified
+ RIL_E_UNASSIGNEDNUMBER = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_DESTINATION shl 8) or $3F); // @constdefine Specified message destination address is a currently unassigned phone number
+ RIL_E_MSGBARREDBYOPERATOR = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NETWORKACCESS shl 8) or $40); // @constdefine Message sending was barred by an operator
+ RIL_E_MSGCALLBARRED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NETWORKACCESS shl 8) or $41); // @constdefine Message sending was prevented by outgoing calls barring
+ RIL_E_MSGXFERREJECTED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_DESTINATION shl 8) or $42); // @constdefine Sent message has been rejected by the receiving equipment
+ RIL_E_DESTINATIONOUTOFSVC = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_DESTINATION shl 8) or $43); // @constdefine Message could not be delivered because destination equipment is out of service
+ RIL_E_UNIDENTIFIEDSUBCRIBER = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NETWORKACCESS shl 8) or $44); // @constdefine Sender's mobile ID isn't registered
+ RIL_E_SVCUNSUPPORTED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NETWORKUNSUPPORTED shl 8) or $45); // @constdefine Requested messaging service isn't supported
+ RIL_E_UNKNOWNSUBSCRIBER = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NETWORKACCESS shl 8) or $46); // @constdefine Sender isn't recognized by the network
+ RIL_E_NETWKOUTOFORDER = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NETWORK shl 8) or $47); // @constdefine Long-term network failure
+ RIL_E_NETWKTEMPFAILURE = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NETWORK shl 8) or $48); // @constdefine Short-term network failure
+ RIL_E_CONGESTION = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NETWORK shl 8) or $49); // @constdefine Operation failed because of the high network traffic
+ RIL_E_RESOURCESUNAVAILABLE = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NONE shl 8) or $4A); // @constdefine Unspecified resources weren't available
+ RIL_E_SVCNOTSUBSCRIBED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NETWORKUNSUPPORTED shl 8) or $4B); // @constdefine Sender isn't subscribed for the requested messaging service
+ RIL_E_SVCNOTIMPLEMENTED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NETWORKUNSUPPORTED shl 8) or $4C); // @constdefine Requested messaging service isn't implemented on the network
+ RIL_E_INVALIDMSGREFERENCE = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_BADPARAM shl 8) or $4D); // @constdefine Imvalid message reference value was used
+ RIL_E_INVALIDMSG = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_BADPARAM shl 8) or $4E); // @constdefine Message was determined to be invalid for unspecified reasons
+ RIL_E_INVALIDMANDATORYINFO = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_BADPARAM shl 8) or $4F); // @constdefine Mandatory message information is invalid or missing
+ RIL_E_MSGTYPEUNSUPPORTED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NETWORKUNSUPPORTED shl 8) or $50); // @constdefine The message type is unsupported
+ RIL_E_ICOMPATIBLEMSG = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NETWORKUNSUPPORTED shl 8) or $51); // @constdefine Sent message isn't compatible with the network
+ RIL_E_INFOELEMENTUNSUPPORTED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NETWORKUNSUPPORTED shl 8) or $52); // @constdefine An information element specified in the message isn't supported
+ RIL_E_PROTOCOLERROR = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NETWORK shl 8) or $53); // @constdefine Unspefied protocol error
+ RIL_E_NETWORKERROR = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NETWORK shl 8) or $54); // @constdefine Unspecified network error
+ RIL_E_MESSAGINGERROR = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NETWORK shl 8) or $55); // @constdefine Unspecified messaging error
+ RIL_E_NOTREADY = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NONE shl 8) or $56); // @constdefine RIL isn't yet ready to perform the requested operation
+ RIL_E_TIMEDOUT = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NONE shl 8) or $57); // @constdefine Operation timed out
+ RIL_E_CANCELLED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NONE shl 8) or $58); // @constdefine Operation was cancelled
+ RIL_E_NONOTIFYCALLBACK = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NONE shl 8) or $59); // @constdefine Requested operation requires an RIL notification callback, which wasn't provided
+ RIL_E_OPFMTUNAVAILABLE = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NETWORKUNSUPPORTED shl 8) or $5A); // @constdefine Operator format isn't available
+ RIL_E_NORESPONSETODIAL = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NETWORKACCESS shl 8) or $5B); // @constdefine Dial operation hasn't received a response for a long time
+ RIL_E_SECURITYFAILURE = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NONE shl 8) or $5C); // @constdefine Security failure
+ RIL_E_RADIOFAILEDINIT = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NONE shl 8) or $5D); // @constdefine Radio failed to initialize correctly
+ RIL_E_DRIVERINITFAILED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_RADIOUNAVAILABLE shl 8) or $5E); // @constdefine There was a problem initializing the radio driver
+ RIL_E_RADIONOTPRESENT = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_RADIOUNAVAILABLE shl 8) or $5F); // @constdefine The Radio is not present
+ RIL_E_RADIOOFF = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_RADIOUNAVAILABLE shl 8) or $60); // @constdefine The Radio is in Off mode
+ RIL_E_ILLEGALMS = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_GPRS shl 8) or $61); // @constdefine Illegal MS
+ RIL_E_ILLEGALME = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_GPRS shl 8) or $62); // @constdefine Illegal ME
+ RIL_E_GPRSSERVICENOTALLOWED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_GPRS shl 8) or $63); // @constdefine GPRS Service not allowed
+ RIL_E_PLMNNOTALLOWED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_GPRS shl 8) or $64); // @constdefine PLMN not allowed
+ RIL_E_LOCATIONAREANOTALLOWED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_GPRS shl 8) or $65); // @constdefine Location area not allowed
+ RIL_E_ROAMINGNOTALLOWEDINTHISLOCATIONAREA = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_GPRS shl 8) or $66); // @constdefine Roaming not allowed in this location area
+ RIL_E_SERVICEOPTIONNOTSUPPORTED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_GPRS shl 8) or $67); // @constdefine Service option not supported
+ RIL_E_REQUESTEDSERVICEOPTIONNOTSUBSCRIBED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_GPRS shl 8) or $68); // @constdefine Requested service option not subscribed
+ RIL_E_SERVICEOPTIONTEMPORARILYOUTOFORDER = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_GPRS shl 8) or $69); // @constdefine Service option temporarily out of order
+ RIL_E_PDPAUTHENTICATIONFAILURE = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_GPRS shl 8) or $6A); // @constdefine PDP authentication failure
+ RIL_E_INVALIDMOBILECLASS = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_GPRS shl 8) or $6B); // @constdefine invalid mobile class
+ RIL_E_UNSPECIFIEDGPRSERROR = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_GPRS shl 8) or $6C); // @constdefine unspecific GPRS error
+ RIL_E_RADIOREBOOTED = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NONE shl 8) or $6D); // @constdefine the command failed because the radio reset itself unexpectedly
+ RIL_E_INVALIDCONTEXTSTATE = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NONE shl 8) or $6E); // @constdefine the command failed because the requested context state is invalid
+ RIL_E_MAXCONTEXTS = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NONE shl 8) or $6F); // @constdefine the command failed because there are no more radio contexts.
+ RIL_E_SYNCHRONOUS_DATA_UNAVAILABLE = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NONE shl 8) or $70); // @constdefine the cached notification data is not present
+ RIL_E_INVALIDASYNCCOMMANDRESPONSE = (SEVERITY_ERROR shl 31) or (FACILITY_RIL shl 16) or ((RIL_ERRORCLASS_NONE shl 8) or $71); // @constdefine The RIL driver has issued an invalid asynchronous command response (hr == 0)
+
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Notification Class | Notification classes
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_NCLASS_FUNCRESULT = $00000000; // @constdefine API call results
+ RIL_NCLASS_CALLCTRL = $00010000; // @constdefine Call control notifications
+ RIL_NCLASS_MESSAGE = $00020000; // @constdefine Messaging notifications
+ RIL_NCLASS_NETWORK = $00040000; // @constdefine Network-related notifications
+ RIL_NCLASS_SUPSERVICE = $00080000; // @constdefine Supplementary service notifications
+ RIL_NCLASS_PHONEBOOK = $00100000; // @constdefine Phonebook notifications
+ RIL_NCLASS_SIMTOOLKIT = $00200000; // @constdefine SIM Toolkit notifications
+ RIL_NCLASS_MISC = $00400000; // @constdefine Miscellaneous notifications
+ RIL_NCLASS_RADIOSTATE = $00800000; // @constdefine Notifications Pertaining to changes in Radio State
+ RIL_NCLASS_POLLING = $01000000; // @constdefine polling related APIs
+ RIL_NCLASS_NDIS = $40000000; // @constdefine Nofitifcations that won't be picked up by all.
+ RIL_NCLASS_DEVSPECIFIC = $80000000; // @constdefine Reserved for device specific notifications
+ RIL_NCLASS_ALL = $01FF0000; // @constdefine All notification classes (except DevSpecifc)
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants API Result | API call results (RIL_NCLASS_FUNCRESULT)
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_RESULT_OK = $00000001 or RIL_NCLASS_FUNCRESULT; // @constdefine RIL API call succeded; lpData is NULL
+ RIL_RESULT_NOCARRIER = $00000002 or RIL_NCLASS_FUNCRESULT; // @constdefine RIL API failed because no carrier was detected; lpData is NULL
+ RIL_RESULT_ERROR = $00000003 or RIL_NCLASS_FUNCRESULT; // @constdefine RIL API failed; lpData points to RIL_E_* constant
+ RIL_RESULT_NODIALTONE = $00000004 or RIL_NCLASS_FUNCRESULT; // @constdefine RIL API failed because no dialtone was detected; lpData is NULL
+ RIL_RESULT_BUSY = $00000005 or RIL_NCLASS_FUNCRESULT; // @constdefine RIL API failed because the line was busy; lpData is NULL
+ RIL_RESULT_NOANSWER = $00000006 or RIL_NCLASS_FUNCRESULT; // @constdefine RIL API failed because of the lack of answer; lpData is NULL
+ RIL_RESULT_CALLABORTED = $00000007 or RIL_NCLASS_FUNCRESULT; // @constdefine RIL API failed because it was cancelled prior to completion; lpData is NULL
+ RIL_RESULT_CALLDROPPED = $00000008 or RIL_NCLASS_FUNCRESULT; // @constdefine RIL API failed because the network dropped the call; lpData is NULL
+ RIL_RESULT_RADIOOFF = $00000009 or RIL_NCLASS_FUNCRESULT; // @constdefine RIL API failed because the radio was shut offl; lpData is NULL
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Notification Call Control | Call control notifications (RIL_NCLASS_CALLCTRL)
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_NOTIFY_RING = $00000001 or RIL_NCLASS_CALLCTRL; // @constdefine Incoming call; lpData points to RILRINGINFO
+ RIL_NOTIFY_CONNECT = $00000002 or RIL_NCLASS_CALLCTRL; // @constdefine Data/voice connection has been established; lpData points to RILCONNECTINFO
+ RIL_NOTIFY_DISCONNECT = $00000003 or RIL_NCLASS_CALLCTRL; // @constdefine Data/voice connection has been terminated; lpData points to RIL_DISCINIT_* constant
+ RIL_NOTIFY_DATASVCNEGOTIATED = $00000004 or RIL_NCLASS_CALLCTRL; // @constdefine Data connection service has been negotiated; lpData points to RILSERVICEINFO
+ RIL_NOTIFY_CALLSTATECHANGED = $00000005 or RIL_NCLASS_CALLCTRL; // @constdefine RIL has performed an operation that may have changed state of existing calls; lpData is NULL
+ RIL_NOTIFY_EMERGENCYMODEENTERED = $00000006 or RIL_NCLASS_CALLCTRL; // @constdefine RIL has enetered emergency mode; lpData is NULL
+ RIL_NOTIFY_EMERGENCYMODEEXITED = $00000007 or RIL_NCLASS_CALLCTRL; // @constdefine RIL has exited emergency mode; lpData is NULL
+ RIL_NOTIFY_EMERGENCYHANGUP = $00000008 or RIL_NCLASS_CALLCTRL; // @constdefine Existsing calls (if any) were hung up in RIL emergency mode; lpData is NULL
+ RIL_NOTIFY_HSCSDPARAMSNEGOTIATED = $00000009 or RIL_NCLASS_CALLCTRL; // @constdefine HSCSD parameters for a call has been negotiated; lpData points to RILCALLHSCSDINFO
+ RIL_NOTIFY_DIAL = $0000000A or RIL_NCLASS_CALLCTRL; // @constdefine Outgoing call; lpData points to RILDIALINFO
+ RIL_NOTIFY_CALLPROGRESSINFO = $0000000B or RIL_NCLASS_CALLCTRL; // @constdefine CPI notification; lpData points to RILCALLINFO
+ RIL_NOTIFY_CURRENTLINECHANGED = $0000000C or RIL_NCLASS_CALLCTRL; // @constdefine Current line has changed notification; lpData points to DWORD with new current address id
+ RIL_NOTIFY_GPRS_DISCONNECT = $0000000D or RIL_NCLASS_CALLCTRL; // @constdefine GPRS connection has been terminated; lpData points to RILGPRSCONTEXTACTIVATED sturct
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Notification Messaging | Messaging notifications (RIL_MCLASS_MESSAGE)
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_NOTIFY_MESSAGE = $00000001 or RIL_NCLASS_MESSAGE; // @constdefine Incoming message; lpData points to RILMESSAGE
+ RIL_NOTIFY_BCMESSAGE = $00000002 or RIL_NCLASS_MESSAGE; // @constdefine Incoming broadcast message; lpData points to RILMESSAGE
+ RIL_NOTIFY_STATUSMESSAGE = $00000003 or RIL_NCLASS_MESSAGE; // @constdefine Incoming status-report message; lpData points to RILMESSAGE
+ RIL_NOTIFY_MSGSTORED = $00000004 or RIL_NCLASS_MESSAGE; // @constdefine A message has been added to storage; lpData points to the storage index assigned to the new message
+ RIL_NOTIFY_MSGDELETED = $00000005 or RIL_NCLASS_MESSAGE; // @constdefine A message has been deleted from storage; lpData points to the storage index occupied by the deleted message
+ RIL_NOTIFY_MSGSTORAGECHANGED = $00000006 or RIL_NCLASS_MESSAGE; // @constdefine One of the message storage locations has been changed; lpData points to RILMSGSTORAGEINFO
+ RIL_NOTIFY_MESSAGE_IN_SIM = $00000007 or RIL_NCLASS_MESSAGE; // @constdefine Incoming message stored to SIM; lpData points to the storage RILMESSAGE_IN_SIM
+ RIL_NOTIFY_BCMESSAGE_IN_SIM = $00000008 or RIL_NCLASS_MESSAGE; // @constdefine Incoming broadcast message stored to SIM; lpData points to RILMESSAGE_IN_SIM
+ RIL_NOTIFY_STATUSMESSAGE_IN_SIM = $00000009 or RIL_NCLASS_MESSAGE; // @constdefine Incoming status-report message stored to SIM; lpData points to RILMESSAGE_IN_SIM
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Notification Network | Network-related notifications (RIL_NCLASS_NETWORK)
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_NOTIFY_REGSTATUSCHANGED = $00000001 or RIL_NCLASS_NETWORK; // @constdefine Network registration status has changed; lpData points to the new status (RIL_REGSTAT_* constant)
+ RIL_NOTIFY_CALLMETER = $00000002 or RIL_NCLASS_NETWORK; // @constdefine Call meter has changed; lpData points to a DWORD containing new current call meter value
+ RIL_NOTIFY_CALLMETERMAXREACHED = $00000003 or RIL_NCLASS_NETWORK; // @constdefine Call meter maximum has been reached; lpData is NULL
+ RIL_NOTIFY_GPRSREGSTATUSCHANGED = $00000004 or RIL_NCLASS_NETWORK; // @constdefine Network registration status has changed; lpData points to the new status (RIL_REGSTAT_* constant)
+ RIL_NOTIFY_SYSTEMCHANGED = $00000005 or RIL_NCLASS_NETWORK; // @constdefine This indicates that the type of coverage which is available has changed. Typically one would expect IS-95A or 1xRTT, however CDMA does allow overlay systems; lpData is <t DWORD> of type RIL_SYSTEMTYPE_ flags
+ RIL_NOTIFY_GPRSCONNECTIONSTATUS = $00000006 or RIL_NCLASS_NETWORK; // @constdefine This indicates the pdp context state has changed. lpData points to RILGPRSCONTEXTACTIVATED
+ RIL_NOTIFY_SYSTEMCAPSCHANGED = $00000007 or RIL_NCLASS_NETWORK; // @constdefine This indicates the system capability has changed. lpData points to the new system capability (RIL_SYSTEMCAPS_* constant)
+ RIL_NOTIFY_LOCATIONUPDATE = $00000008 or RIL_NCLASS_NETWORK; // @constdefine This indicates the location data has changed. lpData points to RILLOCATIONINFO
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Notification Supplementary Service | Supplementary service notifications (RIL_NCLASS_SUPSERVICE)
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_NOTIFY_CALLERID = $00000001 or RIL_NCLASS_SUPSERVICE; // @constdefine Incoming call CallerID information; lpData points to RILREMOTEPARTYINFO
+ RIL_NOTIFY_DIALEDID = $00000002 or RIL_NCLASS_SUPSERVICE; // @constdefine Initiated call DialedID information; lpData points to RILREMOTEPARTYINFO
+ RIL_NOTIFY_CALLWAITING = $00000003 or RIL_NCLASS_SUPSERVICE; // @constdefine Call Waiting information; lpData points to RILCALLWAITINGINFO
+ RIL_NOTIFY_SUPSERVICEDATA = $00000004 or RIL_NCLASS_SUPSERVICE; // @constdefine Ustructured supplementary service data; lpData points to RILSUPSERVICEDATA
+ RIL_NOTIFY_INTERMEDIATESS = $00000005 or RIL_NCLASS_SUPSERVICE; // @constdefine Ustructured supplementary service data; lpData points to RILINTERMEDIATESSINFO
+ RIL_NOTIFY_UNSOLICITEDSS = $00000006 or RIL_NCLASS_SUPSERVICE; // @constdefine Ustructured supplementary service data; lpData points to RILUNSOLICITEDSSINFO
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Notification Phonebook | Phonebook notifications (RIL_NCLASS_PHONEBOOK)
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_NOTIFY_PHONEBOOKENTRYSTORED = $00000001 or RIL_NCLASS_PHONEBOOK; // @constdefine A phonebook entry has been added to storage; lpData points to the storage
+ // index assigned to the new entry (ifdwIndex is RIL_PBINDEX_FIRSTAVAILABLE, the new entry was stored in the first available location)
+ RIL_NOTIFY_PHONEBOOKENTRYDELETED = $00000002 or RIL_NCLASS_PHONEBOOK; // @constdefine A phonebook entry has been deleted from storage; lpData points to the storage index occupied by the deleted entry
+ RIL_NOTIFY_PHONEBOOKSTORAGECHANGED = $00000003 or RIL_NCLASS_PHONEBOOK; // @constdefine Phonebook storage location has been changed; lpData points to RIL_PBLOC_* constant
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Notification Toolkit | SIM Toolkit notifications (RIL_NCLASS_SIMTOOLKIT)
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_NOTIFY_SIMTOOLKITCMD = $00000001 or RIL_NCLASS_SIMTOOLKIT; // @constdefine A SIM Toolkit command was not handled by the radio; lpData points to array of bytes containing the command
+ RIL_NOTIFY_SIMTOOLKITCALLSETUP = $00000002 or RIL_NCLASS_SIMTOOLKIT; // @constdefine SIM Toolkit is trying to set up a call and call conditions were successfully checked by the radio;
+ // lpData points to a DWORD containing the redial timeout for the call (in milliseconds)
+ RIL_NOTIFY_SIMTOOLKITEVENT = $00000003 or RIL_NCLASS_SIMTOOLKIT; // @constdefine A SIM Toolkit command was handled by the radio or the radio sent a SIm Toolkit command response to the SIM;
+ // lpData points to array of bytes containing the command or response sent
+ RIL_NOTIFY_SIMTOOLKITSESSIONEND = $00000004 or RIL_NCLASS_SIMTOOLKIT; // @constdefine A SIM Toolkit command session is ending
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Notification Radio State Change | Radio State Change notifications (RIL_NCLASS_RADIOSTATE)
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_NOTIFY_RADIOEQUIPMENTSTATECHANGED = $00000001 or RIL_NCLASS_RADIOSTATE; // @constdefine Carries a STRUCT (RILEQUIPMENTSTATE) stating The Radio equiptmentstate has changed, also notifies a driver defined Radio ON or OFF state
+ RIL_NOTIFY_RADIOPRESENCECHANGED = $00000002 or RIL_NCLASS_RADIOSTATE; // @constdefine Carries a dword (RIL_RADIOPRESENCE_*) stating that a Radio Module/Driver has been changed (removed, inserted, etc)
+ RIL_NOTIFY_RADIORESET = $00000003 or RIL_NCLASS_RADIOSTATE; // @constdefine The driver has detected that the radio reset itself. lpData points to NULL
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Notification Misc | Miscellaneous notifications (RIL_NCLASS_MISC)
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_NOTIFY_SIMNOTACCESSIBLE = $00000001 or RIL_NCLASS_MISC; // @constdefine SIM card has been removed or has failed to respond; lpData is NULL
+ RIL_NOTIFY_DTMFSIGNAL = $00000002 or RIL_NCLASS_MISC; // @constdefine A DTMF signal has been detected; lpData points to char
+ RIL_NOTIFY_GPRSCLASS_NETWORKCHANGED = $00000003 or RIL_NCLASS_MISC; // @constdefine Network has indicated a change in GPRS class
+ // lpData points to a DWORD containing the new RIL_GPRSCLASS_* value
+ RIL_NOTIFY_GPRSCLASS_RADIOCHANGED = $00000004 or RIL_NCLASS_MISC; // @constdefine The radio has indicated a change in GPRS class
+ // lpData points to a DWORD containing the new RIL_GPRSCLASS_* value
+ RIL_NOTIFY_SIGNALQUALITY = $00000005 or RIL_NCLASS_MISC; // @constdefine Signal Quality Notification
+ // lpData points to a RILSIGNALQUALITY structure
+ RIL_NOTIFY_MAINTREQUIRED = $00000006 or RIL_NCLASS_MISC; // @constdefine BS notification that MS requires servicing; lpdata is NULL
+ RIL_NOTIFY_PRIVACYCHANGED = $00000007 or RIL_NCLASS_MISC; // @constdefine Call Privacy Status; lpData points to DWORD of value RIL_CALLPRIVACY_*
+ RIL_NOTIFY_SIM_DATACHANGE = $00000008 or RIL_NCLASS_MISC; // @constdefine data change notification; lpData points to DWORD of value RIL_SIMDATACHANGE_*
+ RIL_NOTIFY_ATLOGGING = $00000009 or RIL_NCLASS_MISC; // @constdefine at command log data present
+ RIL_NOTIFY_SIMSTATUSCHANGED = $0000000A or RIL_NCLASS_MISC; // @constdefine SIM card state has changed. Carries a DWORD (RIL_SIMSTATUSCHANGED_*) with the current state.
+ // Notification is sent only when encountering error conditions from the radio.
+ RIL_NOTIFY_EONS = $0000000B or RIL_NCLASS_MISC; // @constdefine EONS information ready or updated; lpData is NULL
+ RIL_NOTIFY_SIMSECURITYSTATUS = $0000000C or RIL_NCLASS_MISC; // @constdefine SIM security status change; lpData points to LPRILSIMSECURITYSTATUS
+ RIL_NOTIFY_LINESTATE = $0000000D or RIL_NCLASS_MISC; // @constdefine line state; lpData points to a DWORD of value RIL_LINESTAT_*
+ RIL_NOTIFY_BEARERSVCINFO = $0000000E or RIL_NCLASS_MISC; // @constdefine bearer service information; lpData points to LPRILBEARERSVCINFO
+ RIL_NOTIFY_DATACOMPINFO = $0000000F or RIL_NCLASS_MISC; // @constdefine data compression information; lpData points to LPRILDATACOMPINFO
+ RIL_NOTIFY_EQUIPMENTINFO = $00000010 or RIL_NCLASS_MISC; // @constdefine equipment information; lpData points to LPRILEQUIPMENTINFO
+ RIL_NOTIFY_ERRORCORRECTIONINFO = $00000011 or RIL_NCLASS_MISC; // @constdefine error correction information; lpData points to LPRILERRORCORRECTIONINFO
+ RIL_NOTIFY_GPRSADDRESS = $00000012 or RIL_NCLASS_MISC; // @constdefine GPRS address; lpData points to an array of WCHAR values that indicate the address
+ RIL_NOTIFY_GPRSATTACHED = $00000013 or RIL_NCLASS_MISC; // @constdefine GPRS attach state; lpData points to a BOOL that indicates attach state
+ RIL_NOTIFY_GPRSCONTEXT = $00000014 or RIL_NCLASS_MISC; // @constdefine GPRS context list; lpData points to LPRILGPRSCONTEXT
+ RIL_NOTIFY_GPRSCONTEXTACTIVATED = $00000015 or RIL_NCLASS_MISC; // @constdefine GPRS context activated list; lpData points to LPRILGPRSCONTEXTACTIVATED
+ RIL_NOTIFY_QOSMIN = $00000016 or RIL_NCLASS_MISC; // @constdefine minimum quality of service profile ; lpData points to LPRILGPRSQOSPROFILE
+ RIL_NOTIFY_QOSREQ = $00000017 or RIL_NCLASS_MISC; // @constdefine requested quality of service profile ; lpData points to LPRILGPRSQOSPROFILE
+ RIL_NOTIFY_RLPOPTIONS = $00000018 or RIL_NCLASS_MISC; // @constdefine requested quality of service profile ; lpData points to LPRILRLPINFO
+ RIL_NOTIFY_NITZ = $00000019 or RIL_NCLASS_MISC; // @constdefine NITZ Date/Time notification. lpData points to a RILNITZINFO structure.
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Notification Device Specific | Device Specific notifications (RIL_NCLASS_DEVSPECIFIC)
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_NOTIFY_LOCATION = $00008000 or RIL_NCLASS_DEVSPECIFIC; // @constdefine Location Services; lpData points to DWORD of value RIL_LOCATION_*
+ RIL_NOTIFY_ROAMSTATUS = $00008001 or RIL_NCLASS_DEVSPECIFIC; // @constdefine Roaming Status; lpData points to DWORD of value RIL_ROAMSTATUS_*
+ // lpData ponts to DWORD of [ RIL_NDIS_XON |RIL_NDIS_XOFF ]
+
+//
+// Macro to extract notification class from notification code
+//
+function NCLASS_FROM_NOTIFICATION(code:ULONG):ULONG; inline;
+
+
+//
+// Structure parameter flags
+//
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILNDISIPCONFIG
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+//
+const
+ RIL_PARAM_NDISIPCONFIG_PROTOCOL_IPV4 = $00000001; // @paramdefine
+ RIL_PARAM_NDISIPCONFIG_PROTOCOL_IPV6 = $00000002; // @paramdefine
+//
+// ipv4 defines
+ RIL_PARAM_NDISIPCONFIG_IPADDR = $00000001; // @paramdefine
+ RIL_PARAM_NDISIPCONFIG_PRIMARYDNS = $00000002; // @paramdefine
+ RIL_PARAM_NDISIPCONFIG_SECONDARYDNS = $00000004; // @paramdefine
+ RIL_PARAM_NDISIPCONFIG_DEFAULTGATEWAY = $00000008; // @paramdefine
+ RIL_PARAM_NDISIPCONFIG_SUBNETMASK = $00000010; // @paramdefine
+ RIL_PARAM_NDISIPCONFIG_ALL = $0000001f; // @paramdefine
+//
+// ipv6 defines
+ RIL_PARAM_NDISIPCONFIG_IPV6_IPADDR = $00000001; // @paramdefine
+ RIL_PARAM_NDISIPCONFIG_IPV6_PRIMARYDNS = $00000002; // @paramdefine
+ RIL_PARAM_NDISIPCONFIG_IPV6_SECONDARYDNS = $00000004; // @paramdefine
+ RIL_PARAM_NDISIPCONFIG_IPV6_DEFAULTGATEWAY = $00000008; // @paramdefine
+ RIL_PARAM_NDISIPCONFIG_IPV6_SUBNETMASK = $00000010; // @paramdefine
+ RIL_PARAM_NDISIPCONFIG_IPV6_FLOWINFO = $00000020; // @paramdefine
+ RIL_PARAM_NDISIPCONFIG_IPV6_SCOPEID = $00000040; // @paramdefine
+ RIL_PARAM_NDISIPCONFIG_IPV6_ALL = $0000007f; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILNDISGPRSCONTEXT
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_RILNDISGPRSCONTEXT_USERNAME = $00000001; // @paramdefine
+ RIL_PARAM_RILNDISGPRSCONTEXT_PASSWORD = $00000002; // @paramdefine
+ RIL_PARAM_RILNDISGPRSCONTEXT_DNS1 = $00000004; // @paramdefine
+ RIL_PARAM_RILNDISGPRSCONTEXT_DNS2 = $00000008; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILNDISGPRSCONTEXTRESPONSE
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_RILNDISGPRSCONTEXTRESPONSE_IPCONFIG = $00000001; // @paramdefine
+ RIL_PARAM_RILNDISGPRSCONTEXTRESPONSE_FUNCTIONS = $00000002; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILNDISSTATUS
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_RILNDISSTATUS_IPCONFIG = $00000001; // @paramdefine
+ RIL_PARAM_RILNDISSTATUS_FLOWCONTROL = $00000002; // @paramdefine
+
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILADDRESS
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_A_TYPE = $00000001; // @paramdefine
+ RIL_PARAM_A_NUMPLAN = $00000002; // @paramdefine
+ RIL_PARAM_A_ADDRESS = $00000004; // @paramdefine
+ RIL_PARAM_A_ALL = $00000007; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILSUBADDRESS
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_SA_TYPE = $00000001; // @paramdefine
+ RIL_PARAM_SA_SUBADDRESS = $00000002; // @paramdefine
+ RIL_PARAM_SA_ALL = $00000003; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILSERIALPORTSTATS
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_SPS_READBITSPERSECOND = $00000001; // @paramdefine
+ RIL_PARAM_SPS_WRITTENBITSPERSECOND = $00000002; // @paramdefine
+ RIL_PARAM_SPS_ALL = $00000003; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILSUBSCRIBERINFO
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_SI_ADDRESS = $00000001; // @paramdefine
+ RIL_PARAM_SI_DESCRIPTION = $00000002; // @paramdefine
+ RIL_PARAM_SI_SPEED = $00000004; // @paramdefine
+ RIL_PARAM_SI_SERVICE = $00000008; // @paramdefine
+ RIL_PARAM_SI_ITC = $00000010; // @paramdefine
+ RIL_PARAM_SI_ADDRESSID = $00000020; // @paramdefine
+ RIL_PARAM_SI_ALL = $0000003f; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILOPERATORNAMES
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_ON_LONGNAME = $00000001; // @paramdefine
+ RIL_PARAM_ON_SHORTNAME = $00000002; // @paramdefine
+ RIL_PARAM_ON_NUMNAME = $00000004; // @paramdefine
+ RIL_PARAM_ON_COUNTRY_CODE = $00000008; // @paramdefine
+ RIL_PARAM_ON_GSM_ACT = $00000010; // @paramdefine
+ RIL_PARAM_ON_GSMCOMPACT_ACT = $00000020; // @paramdefine
+ RIL_PARAM_ON_UMTS_ACT = $00000040; // @paramdefine
+ RIL_PARAM_ON_ALL = $0000007F; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILOPERATORINFO
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_OI_INDEX = $00000001; // @paramdefine
+ RIL_PARAM_OI_STATUS = $00000002; // @paramdefine
+ RIL_PARAM_OI_NAMES = $00000004; // @paramdefine
+ RIL_PARAM_OI_ALL = $00000007; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILCALLERIDSETTINGS
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_CIDS_PROVISIONING = $00000001; // @paramdefine
+ RIL_PARAM_CIDS_STATUS = $00000002; // @paramdefine
+ RIL_PARAM_CIDS_ALL = $00000003; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILHIDEIDSETTINGS
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_HIDS_STATUS = $00000001; // @paramdefine
+ RIL_PARAM_HIDS_PROVISIONING = $00000002; // @paramdefine
+ RIL_PARAM_HIDS_ALL = $00000003; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILDIALEDIDSETTINGS
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_DIDS_PROVISIONING = $00000001; // @paramdefine
+ RIL_PARAM_DIDS_STATUS = $00000002; // @paramdefine
+ RIL_PARAM_DIDS_ALL = $00000003; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILHIDECONNECTEDIDSETTINGS
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_HCIDS_PROVISIONING = $00000001; // @paramdefine
+ RIL_PARAM_HCIDS_STATUS = $00000002; // @paramdefine
+ RIL_PARAM_HCIDS_ALL = $00000003; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILCLOSEDGROUPSETTINGS
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_CGS_STATUS = $00000001; // @paramdefine
+ RIL_PARAM_CGS_INDEX = $00000002; // @paramdefine
+ RIL_PARAM_CGS_INFO = $00000004; // @paramdefine
+ RIL_PARAM_CGS_ALL = $00000007; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILCALLFORWARDINGSETTINGS
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_CFS_STATUS = $00000001; // @paramdefine
+ RIL_PARAM_CFS_INFOCLASSES = $00000002; // @paramdefine
+ RIL_PARAM_CFS_ADDRESS = $00000004; // @paramdefine
+ RIL_PARAM_CFS_SUBADDRESS = $00000008; // @paramdefine
+ RIL_PARAM_CFS_DELAYTIME = $00000010; // @paramdefine
+ RIL_PARAM_CFS_ALL = $0000001f; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILCALLINFO
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_CI_ID = $00000001; // @paramdefine
+ RIL_PARAM_CI_DIRECTION = $00000002; // @paramdefine
+ RIL_PARAM_CI_STATUS = $00000004; // @paramdefine
+ RIL_PARAM_CI_TYPE = $00000008; // @paramdefine
+ RIL_PARAM_CI_MULTIPARTY = $00000010; // @paramdefine
+ RIL_PARAM_CI_ADDRESS = $00000020; // @paramdefine
+ RIL_PARAM_CI_DESCRIPTION = $00000040; // @paramdefine
+ RIL_PARAM_CI_CPISTATUS = $00000080; // @paramdefine
+ RIL_PARAM_CI_DISCONNECTCODE = $00000100; // @paramdefine
+//Note: RIL_PARAM_CI_STATUS and RIL_PARAM_CI_CPISTATUS are mutually exclusive
+// parameters because they define how the dwStatus variable is used.
+// Therefore, there is no RIL_PARAM_CI_ALL to avoid any ambiguity.
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILGAININFO
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_GI_TXGAIN = $00000001; // @paramdefine
+ RIL_PARAM_GI_RXGAIN = $00000002; // @paramdefine
+ RIL_PARAM_GI_ALL = $00000003; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILAUDIODEVICEINFO
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_ADI_TXDEVICE = $00000001; // @paramdefine
+ RIL_PARAM_ADI_RXDEVICE = $00000002; // @paramdefine
+ RIL_PARAM_ADI_ALL = $00000003; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILHSCSDINFO
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_HSCSDI_TRANSPRXTIMESLOTS = $00000001; // @paramdefine
+ RIL_PARAM_HSCSDI_TRANSPCHANNELCODINGS = $00000002; // @paramdefine
+ RIL_PARAM_HSCSDI_NONTRANSPRXTIMESLOTS = $00000004; // @paramdefine
+ RIL_PARAM_HSCSDI_NONTRANSPCHANNELCODINGS = $00000008; // @paramdefine
+ RIL_PARAM_HSCSDI_AIRINTERFACEUSERRATE = $00000010; // @paramdefine
+ RIL_PARAM_HSCSDI_RXTIMESLOTSLIMIT = $00000020; // @paramdefine
+ RIL_PARAM_HSCSDI_AUTOSVCLEVELUPGRADING = $00000040; // @paramdefine
+ RIL_PARAM_HSCSDI_ALL = $0000007f; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILCALLHSCSDINFO
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_CHSCSDI_RXTIMESLOTS = $00000001; // @paramdefine
+ RIL_PARAM_CHSCSDI_TXTIMESLOTS = $00000002; // @paramdefine
+ RIL_PARAM_CHSCSDI_AIRINTERFACEUSERRATE = $00000004; // @paramdefine
+ RIL_PARAM_CHSCSDI_CHANNELCODING = $00000008; // @paramdefine
+ RIL_PARAM_CHSCSDI_ALL = $0000000f; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILDATACOMPINFO
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_DCI_DIRECTION = $00000001; // @paramdefine
+ RIL_PARAM_DCI_NEGOTIATION = $00000002; // @paramdefine
+ RIL_PARAM_DCI_MAXDICTENTRIES = $00000004; // @paramdefine
+ RIL_PARAM_DCI_MAXSTRING = $00000008; // @paramdefine
+ RIL_PARAM_DCI_ALL = $0000000f; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILERRORCORRECTIONINFO
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_ECI_ORIGINALREQUEST = $00000001; // @paramdefine
+ RIL_PARAM_ECI_ORIGINALFALLBACK = $00000002; // @paramdefine
+ RIL_PARAM_ECI_ANSWERERFALLBACK = $00000004; // @paramdefine
+ RIL_PARAM_ECI_ALL = $00000007; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILBEARERSVCINFO
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_BSI_SPEED = $00000001; // @paramdefine
+ RIL_PARAM_BSI_SERVICENAME = $00000002; // @paramdefine
+ RIL_PARAM_BSI_CONNECTIONELEMENT = $00000004; // @paramdefine
+ RIL_PARAM_BSI_ALL = $00000007; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILRLPINFO
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_RLPI_IWS = $00000001; // @paramdefine
+ RIL_PARAM_RLPI_MWS = $00000002; // @paramdefine
+ RIL_PARAM_RLPI_ACKTIMER = $00000004; // @paramdefine
+ RIL_PARAM_RLPI_RETRANSMISSIONATTEMPTS = $00000008; // @paramdefine
+ RIL_PARAM_RLPI_VERSION = $00000010; // @paramdefine
+ RIL_PARAM_RPLI_RESEQUENCINGPERIOD = $00000020; // @paramdefine
+ RIL_PARAM_RPLI_ALL = $0000003f; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILMSGSERVICEINFO
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_MSI_SERVICE = $00000001; // @paramdefine
+ RIL_PARAM_MSI_MSGCLASSES = $00000002; // @paramdefine
+ RIL_PARAM_MSI_READLOCATION = $00000004; // @paramdefine
+ RIL_PARAM_MSI_READUSED = $00000008; // @paramdefine
+ RIL_PARAM_MSI_READTOTAL = $00000010; // @paramdefine
+ RIL_PARAM_MSI_WRITELOCATION = $00000020; // @paramdefine
+ RIL_PARAM_MSI_WRITEUSED = $00000040; // @paramdefine
+ RIL_PARAM_MSI_WRITETOTAL = $00000080; // @paramdefine
+ RIL_PARAM_MSI_STORELOCATION = $00000100; // @paramdefine
+ RIL_PARAM_MSI_STOREUSED = $00000200; // @paramdefine
+ RIL_PARAM_MSI_STORETOTAL = $00000400; // @paramdefine
+ RIL_PARAM_MSI_ALL = $000007ff; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILMSGDCS
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_MDCS_TYPE = $00000001; // @paramdefine
+ RIL_PARAM_MDCS_FLAGS = $00000002; // @paramdefine
+ RIL_PARAM_MDCS_MSGCLASS = $00000004; // @paramdefine
+ RIL_PARAM_MDCS_ALPHABET = $00000008; // @paramdefine
+ RIL_PARAM_MDCS_INDICATION = $00000010; // @paramdefine
+ RIL_PARAM_MDCS_LANGUAGE = $00000020; // @paramdefine
+ RIL_PARAM_MDCS_ALL = $0000003f; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILMSGCONFIG
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_MC_SVCCTRADDRESS = $00000001; // @paramdefine
+ RIL_PARAM_MC_ALL = $00000001; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILCBMSGCONFIG
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_CBMC_BROADCASTMSGIDS = $00000001; // @paramdefine
+ RIL_PARAM_CBMC_BROADCASTMSGLANGS = $00000002; // @paramdefine
+ RIL_PARAM_CBMC_ACCEPTIDS = $00000004; // @paramdefine
+ RIL_PARAM_CBMC_ALL = $00000007; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILMESSAGE
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+{ List of Unions Labeled
+GSM
+ID=RIL_MSGTYPE_IN_DELIVER
+ISt=RIL_MSGTYPE_IN_STATUS
+OS=RIL_MSGTYPE_OUT_SUBMIT
+OC=RIL_MSGTYPE_OUT_COMMAND
+OR=RIL_MSGTYPE_OUT_RAW
+BC=RIL_MSGTYPE_BC_GENERAL
+
+CDMA
+ID=RIL_MSGTYPE_IN_IS637DELIVER
+ISt=RIL_MSGTYPE_IN_IS637STATUS
+OS=RIL_MSGTYPE_OUT_IS637SUBMIT
+OSt=RIL_MSGTYPE_OUT_IS637STATUS
+}
+// -------This block is the GSM Params for RILMESSAGE (These values may have been recycled;
+// U = This value for the field has been reused in CDMA, and if the RILMESSAGE structure
+// is expanded, developer must careful not to use two recycled fields in the same union.)
+const
+ RIL_PARAM_M_SVCCTRADDRESS = $00000001; // @paramdefine GSM=[ID,ISt,OS,OC,OR,BC] CDMA=[ID,ISt,OS,OSt]
+ RIL_PARAM_M_TYPE = $00000002; // @paramdefine GSM=[ID,ISt,OS,OC,OR,BC] CDMA=[ID,ISt,OS,OSt]
+ RIL_PARAM_M_FLAGS = $00000004; // @paramdefine GSM=[ID,ISt,OS,OC,OR,BC] CDMA=[ID,ISt,OS,OSt]
+ RIL_PARAM_M_ORIGADDRESS = $00000008; // @paramdefine GSM=[ID] CDMA=[ID,ISt]
+ RIL_PARAM_M_TGTRECIPADDRESS = $00000010; // @paramdefine U GSM=[ISt]
+ RIL_PARAM_M_DESTADDRESS = $00000020; // @paramdefine GSM=[OS,OC] CDMA=[OSt,OS]
+ RIL_PARAM_M_SCRECEIVETIME = $00000040; // @paramdefine GSM=[ID] CDMA=[ID,Ist]
+ RIL_PARAM_M_TGTSCRECEIVETIME = $00000080; // @paramdefine U GSM=[ISt]
+ RIL_PARAM_M_TGTDISCHARGETIME = $00000100; // @paramdefine U GSM=[ISt]
+ RIL_PARAM_M_PROTOCOLID = $00000200; // @paramdefine U GSM=[ISt]
+ RIL_PARAM_M_DATACODING = $00000800; // @paramdefine U GSM=[ID,ISt,OS,BC]
+ RIL_PARAM_M_TGTDLVSTATUS = $00001000; // @paramdefine U GSM=[ISt]
+ RIL_PARAM_M_TGTMSGREFERENCE = $00002000; // @paramdefine U GSM=[OC]
+ RIL_PARAM_M_VPFORMAT = $00004000; // @paramdefine U GSM=[OS]
+ RIL_PARAM_M_VP = $00008000; // @paramdefine U GSM=[OS]
+ RIL_PARAM_M_COMMANDTYPE = $00010000; // @paramdefine U GSM=[OC]
+ RIL_PARAM_M_GEOSCOPE = $00020000; // @paramdefine U GSM=[BC]
+ RIL_PARAM_M_MSGCODE = $00040000; // @paramdefine U GSM=[BC]
+ RIL_PARAM_M_UPDATENUMBER = $00080000; // @paramdefine U GSM=[BC]
+ RIL_PARAM_M_ID = $00100000; // @paramdefine U GSM=[BC]
+ RIL_PARAM_M_TOTALPAGES = $00200000; // @paramdefine U GSM=[BC]
+ RIL_PARAM_M_PAGENUMBER = $00400000; // @paramdefine U GSM=[BC]
+ RIL_PARAM_M_HDRLENGTH = $00800000; // @paramdefine U GSM=[ID,ISt,OS]
+ RIL_PARAM_M_MSGLENGTH = $01000000; // @paramdefine GSM=[ID,ISt,OS,OR,BC] CDMA=[ID,ISt,OS,OSt]
+ RIL_PARAM_M_CMDLENGTH = $02000000; // @paramdefine GSM=[OC]
+ RIL_PARAM_M_HDR = $04000000; // @paramdefine GSM=[ID,ISt,OS]
+ RIL_PARAM_M_MSG = $08000000; // @paramdefine GSM=[ID,ISt,OS,OR,BC] CDMA=[ID,ISt,OS,OSt]
+ RIL_PARAM_M_CMD = $10000000; // @paramdefine U GSM=[OC]
+
+// CDMA Message parameter definitions
+const
+ RIL_PARAM_M_MSGID = $20000000; // @paramdefine CDMA=[ID,ISt,OS,OSt]
+
+ RIL_PARAM_M_ORIGSUBADDRESS = $40000000; // @paramdefine CDMA=[ID,ISt]
+ RIL_PARAM_M_DESTSUBADDRESS = $80000000; // @paramdefine CDMA=[OS,OSt]
+ RIL_PARAM_M_DIGIT = $00010000; // @paramdefine CDMA=[OS,OSt]
+
+ RIL_PARAM_M_PRIVACY = $00000100; // @paramdefine CDMA=[ID,OS]
+ RIL_PARAM_M_PRIORITY = $00000200; // @paramdefine CDMA=[ID,OS]
+ RIL_PARAM_M_TELESERVICE = $00000400; // @paramdefine CDMA=[ID,OS]
+ RIL_PARAM_M_LANG = $00000800; // @paramdefine CDMA=[ID,ISt,OS,OSt]
+
+ RIL_PARAM_M_VALIDITYPERIODABS = $00001000; // @paramdefine CDMA=[ID,OS]
+ RIL_PARAM_M_VALIDITYPERIODREL = $00002000; // @paramdefine CDMA=[OS]
+ RIL_PARAM_M_DEFERREDDELTIMEABS = $00004000; // @paramdefine CDMA=[OS]
+ RIL_PARAM_M_DEFERREDDELTIMEREL = $00008000; // @paramdefine CDMA=[OS]
+
+ RIL_PARAM_M_ENCODING = $00020000; // @paramdefine CDMA=[ID,ISt,OS,OSt]
+ RIL_PARAM_M_USERRESPONSECODE = $00040000; // @paramdefine CDMA=[ISt,OSt]
+ RIL_PARAM_M_DISPLAYMODE = $00080000; // @paramdefine CDMA=[ID,OS]
+
+ RIL_PARAM_M_CALLBACKNUM = $00000010; // @paramdefine CDMA=[ID,OS]
+ RIL_PARAM_M_NUMMSGS = $00000080; // @paramdefine CDMA=[ID]
+
+ RIL_PARAM_M_CAUSECODE = $00100000; // @paramdefine CDMA=[ISt]
+ RIL_PARAM_M_REPLYSEQNUMBER = $00200000; // @paramdefine CDMA=[ISt,OSt]
+
+ RIL_PARAM_M_BEARERREPLYACK = $00200000; // @paramdefine CDMA=[OS]
+ RIL_PARAM_M_USERACK = $00400000; // @paramdefine CDMA=[ID,OS]
+ RIL_PARAM_M_DELIVERYACK = $00800000; // @paramdefine CDMA=[OS]
+ RIL_PARAM_M_MSGSTATUSTYPE = $10000000; // @paramdefine CDMA=[ISt]
+
+ RIL_PARAM_M_ALL_IN_DELIVER = RIL_PARAM_M_TYPE or
+ RIL_PARAM_M_FLAGS or
+ RIL_PARAM_M_ORIGADDRESS or
+ RIL_PARAM_M_PROTOCOLID or
+ RIL_PARAM_M_DATACODING or
+ RIL_PARAM_M_SCRECEIVETIME or
+ RIL_PARAM_M_HDRLENGTH or
+ RIL_PARAM_M_MSGLENGTH or
+ RIL_PARAM_M_HDR or
+ RIL_PARAM_M_MSG; // @paramdefine
+
+ RIL_PARAM_M_ALL_IN_STATUS = RIL_PARAM_M_TYPE or
+ RIL_PARAM_M_FLAGS or
+ RIL_PARAM_M_TGTMSGREFERENCE or
+ RIL_PARAM_M_TGTRECIPADDRESS or
+ RIL_PARAM_M_TGTSCRECEIVETIME or
+ RIL_PARAM_M_TGTDISCHARGETIME or
+ RIL_PARAM_M_TGTDLVSTATUS or
+ RIL_PARAM_M_PROTOCOLID or
+ RIL_PARAM_M_DATACODING or
+ RIL_PARAM_M_HDRLENGTH or
+ RIL_PARAM_M_MSGLENGTH or
+ RIL_PARAM_M_HDR or
+ RIL_PARAM_M_MSG; // @paramdefine
+
+ RIL_PARAM_M_ALL_OUT_SUBMIT = RIL_PARAM_M_TYPE or
+ RIL_PARAM_M_FLAGS or
+ RIL_PARAM_M_DESTADDRESS or
+ RIL_PARAM_M_PROTOCOLID or
+ RIL_PARAM_M_DATACODING or
+ RIL_PARAM_M_VPFORMAT or
+ RIL_PARAM_M_VP or
+ RIL_PARAM_M_HDRLENGTH or
+ RIL_PARAM_M_MSGLENGTH or
+ RIL_PARAM_M_HDR or
+ RIL_PARAM_M_MSG; // @paramdefine
+
+ RIL_PARAM_M_ALL_OUT_COMMAND = RIL_PARAM_M_TYPE or
+ RIL_PARAM_M_FLAGS or
+ RIL_PARAM_M_PROTOCOLID or
+ RIL_PARAM_M_COMMANDTYPE or
+ RIL_PARAM_M_TGTMSGREFERENCE or
+ RIL_PARAM_M_DESTADDRESS or
+ RIL_PARAM_M_CMDLENGTH or
+ RIL_PARAM_M_CMD; // @paramdefine
+
+ RIL_PARAM_M_ALL_BC_GENERAL = RIL_PARAM_M_TYPE or
+ RIL_PARAM_M_GEOSCOPE or
+ RIL_PARAM_M_MSGCODE or
+ RIL_PARAM_M_UPDATENUMBER or
+ RIL_PARAM_M_ID or
+ RIL_PARAM_M_DATACODING or
+ RIL_PARAM_M_TOTALPAGES or
+ RIL_PARAM_M_PAGENUMBER or
+ RIL_PARAM_M_MSGLENGTH or
+ RIL_PARAM_M_MSG; // @paramdefine
+
+ RIL_PARAM_M_ALL_OUT_RAW = RIL_PARAM_M_TYPE or
+ RIL_PARAM_M_FLAGS or
+ RIL_PARAM_M_MSGLENGTH or
+ RIL_PARAM_M_MSG; // @paramdefine
+
+ RIL_PARAM_M_ALL_IN_IS637DELIVER = RIL_PARAM_M_TYPE or
+ RIL_PARAM_M_MSGID or
+ RIL_PARAM_M_TELESERVICE or
+ RIL_PARAM_M_DISPLAYMODE or
+ RIL_PARAM_M_USERACK or
+ RIL_PARAM_M_ORIGADDRESS or
+ RIL_PARAM_M_ORIGSUBADDRESS or
+ RIL_PARAM_M_SCRECEIVETIME or
+ RIL_PARAM_M_PRIORITY or
+ RIL_PARAM_M_PRIVACY or
+ RIL_PARAM_M_CALLBACKNUM or
+ RIL_PARAM_M_NUMMSGS or
+ RIL_PARAM_M_VALIDITYPERIODABS or
+ RIL_PARAM_M_LANG or
+ RIL_PARAM_M_ENCODING or
+ RIL_PARAM_M_MSGLENGTH or
+ RIL_PARAM_M_MSG; // @paramdefine
+
+ RIL_PARAM_M_ALL_OUT_IS637SUBMIT = RIL_PARAM_M_TYPE or
+ RIL_PARAM_M_MSGID or
+ RIL_PARAM_M_TELESERVICE or
+ RIL_PARAM_M_DISPLAYMODE or
+ RIL_PARAM_M_DESTADDRESS or
+ RIL_PARAM_M_DESTSUBADDRESS or
+ RIL_PARAM_M_DIGIT or
+ RIL_PARAM_M_BEARERREPLYACK or
+ RIL_PARAM_M_PRIORITY or
+ RIL_PARAM_M_PRIVACY or
+ RIL_PARAM_M_CALLBACKNUM or
+ RIL_PARAM_M_USERACK or
+ RIL_PARAM_M_DELIVERYACK or
+ RIL_PARAM_M_VALIDITYPERIODABS or
+ RIL_PARAM_M_VALIDITYPERIODREL or
+ RIL_PARAM_M_DEFERREDDELTIMEABS or
+ RIL_PARAM_M_DEFERREDDELTIMEREL or
+ RIL_PARAM_M_LANG or
+ RIL_PARAM_M_ENCODING or
+ RIL_PARAM_M_MSGLENGTH or
+ RIL_PARAM_M_MSG; // @paramdefine
+
+ RIL_PARAM_M_ALL_IN_IS637STATUS = RIL_PARAM_M_TYPE or
+ RIL_PARAM_M_MSGID or
+ RIL_PARAM_M_ORIGADDRESS or
+ RIL_PARAM_M_ORIGSUBADDRESS or
+ RIL_PARAM_M_SCRECEIVETIME or
+ RIL_PARAM_M_CAUSECODE or
+ RIL_PARAM_M_REPLYSEQNUMBER or
+ RIL_PARAM_M_LANG or
+ RIL_PARAM_M_ENCODING or
+ RIL_PARAM_M_MSGLENGTH or
+ RIL_PARAM_M_MSG or
+ RIL_PARAM_M_USERRESPONSECODE or
+ RIL_PARAM_M_MSGSTATUSTYPE; // @paramdefine
+
+ RIL_PARAM_M_ALL_OUT_IS637STATUS = RIL_PARAM_M_TYPE or
+ RIL_PARAM_M_MSGID or
+ RIL_PARAM_M_DESTADDRESS or
+ RIL_PARAM_M_DESTSUBADDRESS or
+ RIL_PARAM_M_REPLYSEQNUMBER or
+ RIL_PARAM_M_LANG or
+ RIL_PARAM_M_ENCODING or
+ RIL_PARAM_M_MSGLENGTH or
+ RIL_PARAM_M_MSG or
+ RIL_PARAM_M_USERRESPONSECODE or
+ RIL_PARAM_M_DIGIT; // @paramdefine
+
+
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILMESSAGE_IN_SIM
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_MIS_LOCATION = $00000001; // @paramdefine
+ RIL_PARAM_MIS_INDEX = $00000002; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILMESSAGEINFO
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_MI_INDEX = $00000001; // @paramdefine
+ RIL_PARAM_MI_STATUS = $00000002; // @paramdefine
+ RIL_PARAM_MI_MESSAGE = $00000004; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILEQUIPMENTINFO
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_EI_MANUFACTURER = $00000001; // @paramdefine
+ RIL_PARAM_EI_MODEL = $00000002; // @paramdefine
+ RIL_PARAM_EI_REVISION = $00000004; // @paramdefine
+ RIL_PARAM_EI_SERIALNUMBER = $00000008; // @paramdefine
+ RIL_PARAM_EI_ALL = $0000000f; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILPHONEBOOKINFO
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_PBI_STORELOCATION = $00000001; // @paramdefine
+ RIL_PARAM_PBI_USED = $00000002; // @paramdefine
+ RIL_PARAM_PBI_TOTAL = $00000004; // @paramdefine
+ RIL_PARAM_PBI_ALL = $00000007; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILPHONEBOOKENTRY
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_PBE_INDEX = $00000001; // @paramdefine
+ RIL_PARAM_PBE_ADDRESS = $00000002; // @paramdefine
+ RIL_PARAM_PBE_TEXT = $00000004; // @paramdefine
+ RIL_PARAM_PBE_ALL = $00000007; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILATRINFO
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_ATR_PHASE = $00000001; // @paramdefine
+ RIL_PARAM_ATR_SIZE = $00000002; // @paramdefine
+ RIL_PARAM_ATR_ATR = $00000004; // @paramdefine
+ RIL_PARAM_ATR_ALL = $00000007; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILSIMTOOLKITNOTIFYCAPS
+//
+// @comm Parameters for LPRILSIMTOOLKITNOTIFYCAPS -> dwParams
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_SIMTKN_REFRESH = $00000001; // @paramdefine
+ RIL_PARAM_SIMTKN_MORETIME = $00000002; // @paramdefine
+ RIL_PARAM_SIMTKN_POLLINTERVAL = $00000004; // @paramdefine
+ RIL_PARAM_SIMTKN_POLLINGOFF = $00000008; // @paramdefine
+ RIL_PARAM_SIMTKN_SETUPCALL = $00000010; // @paramdefine
+ RIL_PARAM_SIMTKN_SENDSS = $00000020; // @paramdefine
+ RIL_PARAM_SIMTKN_SENDSMS = $00000040; // @paramdefine
+ RIL_PARAM_SIMTKN_PLAYTONE = $00000080; // @paramdefine
+ RIL_PARAM_SIMTKN_DISPLAYTEXT = $00000100; // @paramdefine
+ RIL_PARAM_SIMTKN_GETINKEY = $00000200; // @paramdefine
+ RIL_PARAM_SIMTKN_GETINPUT = $00000400; // @paramdefine
+ RIL_PARAM_SIMTKN_SELECTITEM = $00000800; // @paramdefine
+ RIL_PARAM_SIMTKN_SETUPMENU = $00001000; // @paramdefine
+ RIL_PARAM_SIMTKN_LOCALINFO = $00002000; // @paramdefine
+ RIL_PARAM_SIMTKN_NOTIFYFLAGS = $00004000; // @paramdefine
+ RIL_PARAM_SIMTKN_SENDUSSD = $00008000; // @paramdefine
+ RIL_PARAM_SIMTKN_SETUPIDLEMODETEXT = $00010000; // @paramdefine
+ RIL_PARAM_SIMTKN_SETUPEVENTLIST = $00020000; // @paramdefine
+ RIL_PARAM_SIMTKN_SENDDTMF = $00040000; // @paramdefine
+ RIL_PARAM_SIMTKN_LAUNCHBROWSER = $00080000; // @paramdefine
+ RIL_PARAM_SIMTKN_OPENCHANNEL = $00100000; // @paramdefine
+ RIL_PARAM_SIMTKN_CLOSECHANNEL = $00200000; // @paramdefine
+ RIL_PARAM_SIMTKN_RECEIVEDATA = $00400000; // @paramdefine
+ RIL_PARAM_SIMTKN_SENDDATA = $00800000; // @paramdefine
+ RIL_PARAM_SIMTKN_TIMERMANAGEMENT = $01000000; // @paramdefine
+ RIL_PARAM_SIMTKN_EVENTS = $02000000; // @paramdefine
+ RIL_PARAM_SIMTKN_RUNATCMD = $04000000; // @paramdefine
+ RIL_PARAM_SIMTKN_ALL = $07ffffff; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILSIMTOOLKITEVENTCAPS
+//
+// @comm Parameters for LPRILSIMTOOLKITEVENTCAPS -> dwParams
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_SIMTKE_MTCALL = $00000001; // @paramdefine
+ RIL_PARAM_SIMTKE_CALLCONNECTED = $00000002; // @paramdefine
+ RIL_PARAM_SIMTKE_CALLDISCONNECTED = $00000004; // @paramdefine
+ RIL_PARAM_SIMTKE_LOCATIONSTATUS = $00000008; // @paramdefine
+ RIL_PARAM_SIMTKE_USERACTIVITY = $00000010; // @paramdefine
+ RIL_PARAM_SIMTKE_IDLESCREEN = $00000020; // @paramdefine
+ RIL_PARAM_SIMTKE_LANGUAGESELECTION = $00000040; // @paramdefine
+ RIL_PARAM_SIMTKE_BROWSERTERMINATION = $00000080; // @paramdefine
+ RIL_PARAM_SIMTKE_DATAAVAILABLE = $00000100; // @paramdefine
+ RIL_PARAM_SIMTKE_CHANNELSTATUS = $00000200; // @paramdefine
+ RIL_PARAM_SIMTKE_DISPLAYCHANGE = $00000400; // @paramdefine
+ RIL_PARAM_SIMTKE_ALL = $000007FF; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILSIMTOOLKITCMD
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_SIMTKIT_CMD_ID = $00000001; // @paramdefine
+ RIL_PARAM_SIMTKIT_CMD_TAG = $00000002; // @paramdefine
+ RIL_PARAM_SIMTKIT_CMD_TYPE = $00000004; // @paramdefine
+ RIL_PARAM_SIMTKIT_CMD_QUALIFIER = $00000008; // @paramdefine
+ RIL_PARAM_SIMTKIT_CMD_ERROR = $00000010; // @paramdefine
+ RIL_PARAM_SIMTKIT_CMD_DETAILS_OFFSET = $00000020; // @paramdefine
+ RIL_PARAM_SIMTKIT_CMD_DETAILS_SIZE = $00000040; // @paramdefine
+ RIL_PARAM_SIMTKIT_CMD_ALL = $0000007F; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILSIMTOOLKITRSP
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_SIMTKIT_RSP_ID = $00000001; // @paramdefine
+ RIL_PARAM_SIMTKIT_RSP_TAG = $00000002; // @paramdefine
+ RIL_PARAM_SIMTKIT_RSP_TYPE = $00000004; // @paramdefine
+ RIL_PARAM_SIMTKIT_RSP_QUALIFIER = $00000008; // @paramdefine
+ RIL_PARAM_SIMTKIT_RSP_RESPONSE = $00000010; // @paramdefine
+ RIL_PARAM_SIMTKIT_RSP_ADDITIONALINFO = $00000020; // @paramdefine
+ RIL_PARAM_SIMTKIT_RSP_ALL = $0000003F; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILSIMCMDPARAMETERS
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_SCP_FILEID = $00000001; // @paramdefine
+ RIL_PARAM_SCP_PARAM1 = $00000002; // @paramdefine
+ RIL_PARAM_SCP_PARAM2 = $00000004; // @paramdefine
+ RIL_PARAM_SCP_PARAM3 = $00000008; // @paramdefine
+ RIL_PARAM_SCP_ALL = $0000000f; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILSIMRESPONSE
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_SR_STATUSWORD1 = $00000001; // @paramdefine
+ RIL_PARAM_SR_STATUSWORD2 = $00000002; // @paramdefine
+ RIL_PARAM_SR_RESPONSE = $00000004; // @paramdefine
+ RIL_PARAM_SR_ALL = $00000007; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILSIMRECORDSTATUS
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_SRS_RECORDTYPE = $00000001; // @paramdefine
+ RIL_PARAM_SRS_ITEMCOUNT = $00000002; // @paramdefine
+ RIL_PARAM_SRS_SIZE = $00000004; // @paramdefine
+ RIL_PARAM_SRS_ALL = $00000007; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILCOSTINFO
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_CSTI_CCM = $00000001; // @paramdefine
+ RIL_PARAM_CSTI_ACM = $00000002; // @paramdefine
+ RIL_PARAM_CSTI_MAXACM = $00000004; // @paramdefine
+ RIL_PARAM_CSTI_COSTPERUNIT = $00000008; // @paramdefine
+ RIL_PARAM_CSTI_CURRENCY = $00000010; // @paramdefine
+ RIL_PARAM_CSTI_ALL = $0000001f; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILSIGNALQUALITY
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_SQ_SIGNALSTRENGTH = $00000001; // @paramdefine
+ RIL_PARAM_SQ_MINSIGNALSTRENGTH = $00000002; // @paramdefine
+ RIL_PARAM_SQ_MAXSIGNALSTRENGTH = $00000004; // @paramdefine
+ RIL_PARAM_SQ_BITERRORRATE = $00000008; // @paramdefine
+ RIL_PARAM_SQ_LOWSIGNALSTRENGTH = $00000010; // @paramdefine
+ RIL_PARAM_SQ_HIGHSIGNALSTRENGTH = $00000020; // @paramdefine
+ RIL_PARAM_SQ_ALL = $0000003f; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILCELLTOWERINFO
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_CTI_MOBILECOUNTRYCODE = $00000001; // @paramdefine
+ RIL_PARAM_CTI_MOBILENETWORKCODE = $00000002; // @paramdefine
+ RIL_PARAM_CTI_LOCATIONAREACODE = $00000004; // @paramdefine
+ RIL_PARAM_CTI_CELLID = $00000008; // @paramdefine
+ RIL_PARAM_CTI_BASESTATIONID = $00000010; // @paramdefine
+ RIL_PARAM_CTI_BROADCASTCONTROLCHANNEL = $00000020; // @paramdefine
+ RIL_PARAM_CTI_RXLEVEL = $00000040; // @paramdefine
+ RIL_PARAM_CTI_RXLEVELFULL = $00000080; // @paramdefine
+ RIL_PARAM_CTI_RXLEVELSUB = $00000100; // @paramdefine
+ RIL_PARAM_CTI_RXQUALITY = $00000200; // @paramdefine
+ RIL_PARAM_CTI_RXQUALITYFULL = $00000400; // @paramdefine
+ RIL_PARAM_CTI_RXQUALITYSUB = $00000800; // @paramdefine
+ RIL_PARAM_CTI_IDLETIMESLOT = $00001000; // @paramdefine
+ RIL_PARAM_CTI_TIMINGADVANCE = $00002000; // @paramdefine
+ RIL_PARAM_CTI_GPRSCELLID = $00004000; // @paramdefine
+ RIL_PARAM_CTI_GPRSBASESTATIONID = $00008000; // @paramdefine
+ RIL_PARAM_CTI_NUMBCCH = $00010000; // @paramdefine
+ RIL_PARAM_CTI_NMR = $00020000; // @paramdefine
+ RIL_PARAM_CTI_BCCH = $00040000; // @paramdefine
+ RIL_PARAM_CTI_ALL = $0007ffff; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILEQUIPMENTSTATE
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_EQUIPMENTSTATE_RADIOSUPPORT = $00000001; // @paramdefine
+ RIL_PARAM_EQUIPMENTSTATE_EQSTATE = $00000002; // @paramdefine
+ RIL_PARAM_EQUIPMENTSTATE_READYSTATE = $00000004; // @paramdefine
+ RIL_PARAM_EQUIPMENTSTATE_ALL = $00000007; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILREMOTEPARTYINFO
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_RPI_ADDRESS = $00000001; // @paramdefine
+ RIL_PARAM_RPI_SUBADDRESS = $00000002; // @paramdefine
+ RIL_PARAM_RPI_DESCRIPTION = $00000004; // @paramdefine
+ RIL_PARAM_RPI_VALIDITY = $00000008; // @paramdefine
+ RIL_PARAM_RPI_ALL = $0000000f; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILCALLWAITINGINFO
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_CWI_CALLTYPE = $00000001; // @paramdefine
+ RIL_PARAM_CWI_CALLERINFO = $00000002; // @paramdefine
+ RIL_PARAM_CWI_ADDRESSID = $00000004; // @paramdefine
+ RIL_PARAM_CWI_ALL = $00000007; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILINTERMEDIATESSINFO
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_INTSS_NOTIFICATIONCODE = $00000001; // @paramdefine
+ RIL_PARAM_INTSS_CUGINDEX = $00000002; // @paramdefine
+ RIL_PARAM_INTSS_ALL = $00000003; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILUNSOLICITEDSSINFO
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_UNSSS_NOTIFICATIONCODE = $00000001; // @paramdefine
+ RIL_PARAM_UNSSS_CUGINDEX = $00000002; // @paramdefine
+ RIL_PARAM_UNSSS_ADDRESS = $00000004; // @paramdefine
+ RIL_PARAM_UNSSS_SUBADDR = $00000008; // @paramdefine
+ RIL_PARAM_UNSSS_ALL = $0000000f; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILRINGINFO
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_RI_CALLTYPE = $00000001; // @paramdefine
+ RIL_PARAM_RI_SERVICEINFO = $00000002; // @paramdefine
+ RIL_PARAM_RI_ADDRESSID = $00000004; // @paramdefine
+ RIL_PARAM_RI_ALL = $00000007; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILDIALINFO
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_DI_CMDID = $00000001; // @paramdefine
+ RIL_PARAM_DI_CALLID = $00000002; // @paramdefine
+ RIL_PARAM_DI_ALL = $00000003; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILCONNECTINFO
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_CNI_CALLTYPE = $00000001; // @paramdefine
+ RIL_PARAM_CNI_BAUDRATE = $00000002; // @paramdefine
+ RIL_PARAM_CNI_ALL = $00000003; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILSERVICEINFO
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_SVCI_SYNCHRONOUS = $00000001; // @paramdefine
+ RIL_PARAM_SVCI_TRANSPARENT = $00000002; // @paramdefine
+ RIL_PARAM_SVCI_ALL = $00000003; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILMSGSTORAGEINFO
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_MSTI_READLOCATION = $00000001; // @paramdefine
+ RIL_PARAM_MSTI_WRITELOCATION = $00000002; // @paramdefine
+ RIL_PARAM_MSTI_STORELOCATION = $00000004; // @paramdefine
+ RIL_PARAM_MSTI_ALL = $00000007; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILSUPSERVICEDATA
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_SSDI_STATUS = $00000001; // @paramdefine
+ RIL_PARAM_SSDI_DATA = $00000002; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILCAPSDIAL
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_CD_CALLTYPES = $00000001; // @paramdefine
+ RIL_PARAM_CD_OPTIONS = $00000002; // @paramdefine
+ RIL_PARAM_CD_ALL = $00000003; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILCAPSBEARERSVC
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_CBS_SPEEDS1 = $00000001; // @paramdefine
+ RIL_PARAM_CBS_SPEEDS2 = $00000002; // @paramdefine
+ RIL_PARAM_CBS_SERVICENAMES = $00000004; // @paramdefine
+ RIL_PARAM_CBS_CONNECTIONELEMENTS = $00000008; // @paramdefine
+ RIL_PARAM_CBS_ALL = $0000000f; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILCAPSRLP
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_CRLP_VERSION = $00000001; // @paramdefine
+ RIL_PARAM_CRLP_IWSRANGE = $00000002; // @paramdefine
+ RIL_PARAM_CRLP_MWSRANGE = $00000004; // @paramdefine
+ RIL_PARAM_CRLP_ACKTIMERRANGE = $00000008; // @paramdefine
+ RIL_PARAM_CRLP_RETRANSMISSIONATTSRANGE = $00000010; // @paramdefine
+ RIL_PARAM_CRLP_RESEQPERIODRANGE = $00000020; // @paramdefine
+ RIL_PARAM_CRLP_ALL = $0000003f; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILCAPSMSGMEMORYLOCATIONS
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_CMML_READLOCATIONS = $00000001; // @paramdefine
+ RIL_PARAM_CMML_WRITELOCATIONS = $00000002; // @paramdefine
+ RIL_PARAM_CMML_STORELOCATIONS = $00000004; // @paramdefine
+ RIL_PARAM_CMML_ALL = $00000007; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILCAPSLOCKINGPWDLENGTH
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_CLPL_FACILITY = $00000001; // @paramdefine
+ RIL_PARAM_CLPL_PASSWORDLENGTH = $00000002; // @paramdefine
+ RIL_PARAM_CLPL_ALL = $00000003; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILCAPSBARRINGPWDLENGTH
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_CBPL_TYPE = $00000001; // @paramdefine
+ RIL_PARAM_CBPL_PASSWORDLENGTH = $00000002; // @paramdefine
+ RIL_PARAM_CBPL_ALL = $00000003; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILCAPSDATACOMPRESSION
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_CDC_DIRECTION = $00000001; // @paramdefine
+ RIL_PARAM_CDC_NEGOTIATION = $00000002; // @paramdefine
+ RIL_PARAM_CDC_MAXDICT = $00000004; // @paramdefine
+ RIL_PARAM_CDC_MAXSTRING = $00000008; // @paramdefine
+ RIL_PARAM_CDC_ALL = $0000000f; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILCAPSERRORCORRECTION
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_CEC_ORIGINALREQUEST = $00000001; // @paramdefine
+ RIL_PARAM_CEC_ORIGINALFALLBACK = $00000002; // @paramdefine
+ RIL_PARAM_CEC_ANSWERERFALLBACK = $00000004; // @paramdefine
+ RIL_PARAM_CEC_ALL = $00000007; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILCAPSHSCSD
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_CHSCSD_MULTISLOTCLASS = $00000001; // @paramdefine
+ RIL_PARAM_CHSCSD_MAXRXTIMESLOTS = $00000002; // @paramdefine
+ RIL_PARAM_CHSCSD_MAXTXTIMESLOTS = $00000004; // @paramdefine
+ RIL_PARAM_CHSCSD_MAXTOTALTIMESLOTS = $00000008; // @paramdefine
+ RIL_PARAM_CHSCSD_CHANNELCODINGS = $00000010; // @paramdefine
+ RIL_PARAM_CHSCSD_AIRINTERFACEUSERRATES = $00000020; // @paramdefine
+ RIL_PARAM_CHSCSD_TOPRXTIMESLOTRANGE = $00000040; // @paramdefine
+ RIL_PARAM_CHSCSD_ALL = $0000007f; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILCAPSPBENTRYLENGTH
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_CPBEL_MAXADDRESSLENGTH = $00000001; // @paramdefine
+ RIL_PARAM_CPBEL_MAXTEXTLENGTH = $00000002; // @paramdefine
+ RIL_PARAM_CPBEL_ALL = $00000003; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILGPRSCONTEXT
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_GCONT_CONTEXTID = $00000001; // @paramdefine
+ RIL_PARAM_GCONT_PROTOCOLTYPE = $00000002; // @paramdefine
+ RIL_PARAM_GCONT_ACCESSPOINTNAME = $00000004; // @paramdefine
+ RIL_PARAM_GCONT_ADDRESS = $00000008; // @paramdefine
+ RIL_PARAM_GCONT_DATACOMPRESSION = $00000010; // @paramdefine
+ RIL_PARAM_GCONT_HEADERCOMPRESSION = $00000020; // @paramdefine
+ RIL_PARAM_GCONT_PARAMETERLENGTH = $00000040; // @paramdefine
+ RIL_PARAM_GCONT_PARAMETERS = $00000080; // @paramdefine
+ RIL_PARAM_GCONT_ALL = $000000ff; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILGPRSQOSPROFILE
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_GQOSP_CONTEXTID = $00000001; // @paramdefine
+ RIL_PARAM_GQOSP_PRECEDENCECLASS = $00000002; // @paramdefine
+ RIL_PARAM_GQOSP_DELAYCLASS = $00000004; // @paramdefine
+ RIL_PARAM_GQOSP_RELIABILITYCLASS = $00000008; // @paramdefine
+ RIL_PARAM_GQOSP_PEAKTHRUCLASS = $00000010; // @paramdefine
+ RIL_PARAM_GQOSP_MEANTHRUCLASS = $00000020; // @paramdefine
+ RIL_PARAM_GQOSP_ALL = $0000003F; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILNITZINFO
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_NITZ_SYSTEMTIME = $00000001; // @paramdefine
+ RIL_PARAM_NITZ_TIMEZONEOFFSET = $00000002; // @paramdefine
+ RIL_PARAM_NITZ_DAYLIGHTSAVINGOFFSET = $00000004; // @paramdefine
+
+//
+// Other constants
+//
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants RILNDISSTATUS
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_NDIS_XON = BOOL(true);
+ RIL_NDIS_XOFF = BOOL(false);
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants RILGPRSCONTEXTACTIVATED
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_RILGPRSCONTEXTACTIVATED_NWDEACT = $00000001; // @constdefine
+ RIL_RILGPRSCONTEXTACTIVATED_NWDETACH = $00000002; // @constdefine
+ RIL_RILGPRSCONTEXTACTIVATED_MEDEACT = $00000003; // @constdefine
+ RIL_RILGPRSCONTEXTACTIVATED_MEDETACH = $00000004; // @constdefine
+ RIL_RILGPRSCONTEXTACTIVATED_MEACT = $00000005; // @constdefine
+ RIL_RILGPRSCONTEXTACTIVATED_RADIOOFF = $00000006; // @constdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Address Type | Different phone number representations
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_ADDRTYPE_UNKNOWN = $00000000; // @constdefine Unknown type
+ RIL_ADDRTYPE_INTERNATIONAL = $00000001; // @constdefine International number
+ RIL_ADDRTYPE_NATIONAL = $00000002; // @constdefine National number
+ RIL_ADDRTYPE_NETWKSPECIFIC = $00000003; // @constdefine Network specific number
+ RIL_ADDRTYPE_SUBSCRIBER = $00000004; // @constdefine Subscriber number (protocol-specific)
+ RIL_ADDRTYPE_ALPHANUM = $00000005; // @constdefine Alphanumeric address
+ RIL_ADDRTYPE_ABBREV = $00000006; // @constdefine Abbreviated number
+// additional CDMA ADDRTYPE definitions
+// See IS-2000.5-A-1 page 509 table 2.7.1.3.2.4-2
+ RIL_ADDRTYPE_IP = $00000007; // @constdefine IP Address (RFC 791)
+ RIL_ADDRTYPE_EMAIL = $00000008; // @constdefine Internet Email addresss (RFC 822)
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Numbering Plan | Different numbering shcemes
+//
+// @comm Used for <def RIL_ADDRTYPE_UNKNOWN>, <def RIL_ADDRTYPE_INTERNATIONAL>,
+// and <def RIL_ADDRTYPE_NATIONAL>
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_NUMPLAN_UNKNOWN = $00000000; // @constdefine Unknown numbering plan
+ RIL_NUMPLAN_TELEPHONE = $00000001; // @constdefine ISDN/telephone numbering plan (E.164/E.163)
+ RIL_NUMPLAN_DATA = $00000002; // @constdefine Data numbering plan (X.121)
+ RIL_NUMPLAN_TELEX = $00000003; // @constdefine Telex numbering plan
+ RIL_NUMPLAN_NATIONAL = $00000004; // @constdefine National numbering plan
+ RIL_NUMPLAN_PRIVATE = $00000005; // @constdefine Private numbering plan
+ RIL_NUMPLAN_ERMES = $00000006; // @constdefine ERMES numbering plan (ETSI DE/PS 3 01-3)
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Subaddress Type | Different subaddress types
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_SUBADDRTYPE_NSAP = $00000001; // @constdefine NSAP subaddress (CCITT Recommendation X.213 or ISO 8348 AD2)
+ RIL_SUBADDRTYPE_USER = $00000002; // @constdefine User defined subaddress
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Data Rate | Defines different protocol dependant data rates
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_SPEED_UNKNOWN = $00000000; // @constdefine Unknown speed
+ RIL_SPEED_AUTO = $00000001; // @constdefine Automatic selection of speed
+ RIL_SPEED_300_V21 = $00000002; // @constdefine 300 bps (V.21)
+ RIL_SPEED_300_V110 = $00000003; // @constdefine 300 bps (V.100)
+ RIL_SPEED_1200_V22 = $00000004; // @constdefine 1200 bps (V.22)
+ RIL_SPEED_1200_75_V23 = $00000005; // @constdefine 1200/75 bps (V.23)
+ RIL_SPEED_1200_V110 = $00000006; // @constdefine 1200 bps (V.100)
+ RIL_SPEED_1200_V120 = $00000007; // @constdefine 1200 bps (V.120)
+ RIL_SPEED_2400_V22BIS = $00000008; // @constdefine 2400 bps (V.22bis)
+ RIL_SPEED_2400_V26TER = $00000009; // @constdefine 2400 bps (V.26ter)
+ RIL_SPEED_2400_V110 = $0000000a; // @constdefine 2400 bps (V.110 or X.31 flag stuffing)
+ RIL_SPEED_2400_V120 = $0000000b; // @constdefine 2400 bps (V.120)
+ RIL_SPEED_4800_V32 = $0000000c; // @constdefine 4800 bps (V.32)
+ RIL_SPEED_4800_V110 = $0000000d; // @constdefine 4800 bps (V.110 or X.31 flag stuffing)
+ RIL_SPEED_4800_V120 = $0000000e; // @constdefine 4800 bps (V.120)
+ RIL_SPEED_9600_V32 = $0000000f; // @constdefine 9600 bps (V.32)
+ RIL_SPEED_9600_V34 = $00000010; // @constdefine 9600 bps (V.34)
+ RIL_SPEED_9600_V110 = $00000011; // @constdefine 9600 bps (V.110 or X.31 flag stuffing)
+ RIL_SPEED_9600_V120 = $00000012; // @constdefine 9600 bps (V.120)
+ RIL_SPEED_14400_V34 = $00000013; // @constdefine 14400 bps (V.34)
+ RIL_SPEED_14400_V110 = $00000014; // @constdefine 14400 bps (V.100 or X.31 flag stuffing)
+ RIL_SPEED_14400_V120 = $00000015; // @constdefine 14400 bps (V.120)
+ RIL_SPEED_19200_V34 = $00000016; // @constdefine 19200 bps (V.34)
+ RIL_SPEED_19200_V110 = $00000017; // @constdefine 19200 bps (V.110 or X.31 flag stuffing)
+ RIL_SPEED_19200_V120 = $00000018; // @constdefine 19200 bps (V.120)
+ RIL_SPEED_28800_V34 = $00000019; // @constdefine 28800 bps (V.34)
+ RIL_SPEED_28800_V110 = $0000001a; // @constdefine 28800 bps (V.110 or X.31 flag stuffing)
+ RIL_SPEED_28800_V120 = $0000001b; // @constdefine 28800 bps (V.120)
+ RIL_SPEED_38400_V110 = $0000001c; // @constdefine 38400 bps (V.110 or X.31 flag stuffing)
+ RIL_SPEED_38400_V120 = $0000001d; // @constdefine 38400 bps (V.120)
+ RIL_SPEED_48000_V110 = $0000001e; // @constdefine 48000 bps (V.110 or X.31 flag stuffing)
+ RIL_SPEED_48000_V120 = $0000001f; // @constdefine 48000 bps (V.120)
+ RIL_SPEED_56000_V110 = $00000020; // @constdefine 56000 bps (V.110 or X.31 flag stuffing)
+ RIL_SPEED_56000_V120 = $00000021; // @constdefine 56000 bps (V.120)
+ RIL_SPEED_56000_TRANSP = $00000022; // @constdefine 56000 bps (bit transparent)
+ RIL_SPEED_64000_TRANSP = $00000023; // @constdefine 64000 bps (bit transparent)
+ RIL_SPEED_32000_PIAFS32K = $00000024; // @constdefine 32000 bps (PIAFS32k;
+ RIL_SPEED_64000_PIAFS64K = $00000025; // @constdefine 64000 bps (PIAFS64k;
+ RIL_SPEED_28800_MULTIMEDIA = $00000026; // @constdefine 28800 bps (MultiMedia;
+ RIL_SPEED_32000_MULTIMEDIA = $00000027; // @constdefine 32000 bps (MultiMedia;
+ RIL_SPEED_33600_MULTIMEDIA = $00000028; // @constdefine 33600 bps (MultiMedia;
+ RIL_SPEED_56000_MULTIMEDIA = $00000029; // @constdefine 56000 bps (MultiMedia;
+ RIL_SPEED_64000_MULTIMEDIA = $0000002a; // @constdefine 64000 bps (MultiMedia;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Telephony Service | Telephony service types
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_SERVICE_UNKNOWN = $00000000; // @constdefine Unknown service
+ RIL_SERVICE_MODEM_ASYNC = $00000001; // @constdefine Asynchronous modem
+ RIL_SERVICE_MODEM_SYNC = $00000002; // @constdefine Synchronous modem
+ RIL_SERVICE_PADACCESS_ASYNC = $00000003; // @constdefine PAD Access (asynchronous)
+ RIL_SERVICE_PACKETACCESS_SYNC = $00000004; // @constdefine Packet Access (synchronous)
+ RIL_SERVICE_VOICE = $00000005; // @constdefine Voice
+ RIL_SERVICE_FAX = $00000006; // @constdefine Fax
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants ITC | Information trasnfer capability types
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_ITC_31KHZ = $00000001; // @constdefine 3.1 kHz
+ RIL_ITC_UDI = $00000002; // @constdefine Unrestricted Digital Information
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Operator Name | Operator name formats
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_OPFORMAT_LONG = $00000001; // @constdefine Long alphanumeric name
+ RIL_OPFORMAT_SHORT = $00000002; // @constdefine Short alphanumeric name
+ RIL_OPFORMAT_NUM = $00000003; // @constdefine Numeric name
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Operator Status | Operator status values
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_OPSTATUS_UNKNOWN = $00000000; // @constdefine Unknown status
+ RIL_OPSTATUS_AVAILABLE = $00000001; // @constdefine Operator is available
+ RIL_OPSTATUS_CURRENT = $00000002; // @constdefine Operator is current
+ RIL_OPSTATUS_FORBIDDEN = $00000003; // @constdefine Operator is forbidden
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Operator Selection | Operator selection modes
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_OPSELMODE_AUTOMATIC = $00000001; // @constdefine Automatic operator selection
+ RIL_OPSELMODE_MANUAL = $00000002; // @constdefine Manual operator selection
+ RIL_OPSELMODE_MANUALAUTOMATIC = $00000003; // @constdefine Manual/automatic operator selection
+ // (if manual selection fails, automatic selection mode is entered)
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Operator Special | Special preferred operator index value
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PREFOPINDEX_FIRSTAVAILABLE = $ffffffff; // @constdefine Used to specify that a preferred operator is
+ // to be stored at the first available index
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Information Class | Telephony information classes
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_INFOCLASS_NONE = $00000000; // @constdefine None
+ RIL_INFOCLASS_VOICE = $00000001; // @constdefine Voice
+ RIL_INFOCLASS_DATA = $00000002; // @constdefine Data
+ RIL_INFOCLASS_FAX = $00000004; // @constdefine Fax
+ RIL_INFOCLASS_SMS = $00000008; // @constdefine SMS
+ RIL_INFOCLASS_DATACIRCUITSYNC = $00000010; // @constdefine Data Circuit synchronous
+ RIL_INFOCLASS_DATACIRCUITASYNC = $00000020; // @constdefine Data Circuit asynchronous
+ RIL_INFOCLASS_PACKETACCESS = $00000040; // @constdefine Dedicated Packet Access
+ RIL_INFOCLASS_PADACCESS = $00000080; // @constdefine Dedicated PAD Access
+ RIL_INFOCLASS_ALL = $000000ff; // @constdefine All information classes
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Supplemental Activation | Supplementary service status values
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_SVCSTAT_UNKNOWN = $00000000; // @constdefine Unknown status
+ RIL_SVCSTAT_DISABLED = $00000001; // @constdefine Service is disabled
+ RIL_SVCSTAT_ENABLED = $00000002; // @constdefine Service is enabled
+ RIL_SVCSTAT_DEFAULT = $00000003; // @constdefine Default status
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Supplementary Service Provisioning | Supplementary service provisioning values
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_SVCPROV_UNKNOWN = $00000000; // @constdefine Unknown provisioning
+ RIL_SVCPROV_NOTPROVISIONED = $00000001; // @constdefine Service isn't provisioned
+ RIL_SVCPROV_PROVISIONED = $00000002; // @constdefine Service is provisioned
+ RIL_SVCPROV_TEMPMODERESTRICTED = $00000003; // @constdefine Service temporary mode is restricted
+ RIL_SVCPROV_TEMPMODEALLOWED = $00000004; // @constdefine Service temporary mode is allowed
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants CUG Special | Closed User Group special index value
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CUGINDEX_NONE = $ffffffff; // @constdefine Used to identify the absence of CUG index
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants CUG Info Level | Closed User Group information levels
+//
+// @comm This feature is not used and is untested.
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CUGINFO_NONE = $00000000; // @constdefine TBD
+ RIL_CUGINFO_SUPPRESSOA = $00000001; // @constdefine TBD
+ RIL_CUGINFO_SUPRESSPREF = $00000002; // @constdefine TBD
+ RIL_CUGINFO_SUPPRESSOAANDPREF = $00000003; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Forwarding Reason | Forwarding reasons
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_FWDREASON_UNCONDITIONAL = $00000001; // @constdefine Always forward
+ RIL_FWDREASON_MOBILEBUSY = $00000002; // @constdefine Forward when device busy
+ RIL_FWDREASON_NOREPLY = $00000003; // @constdefine Forward when no answer
+ RIL_FWDREASON_UNREACHABLE = $00000004; // @constdefine Forward device out of service
+ RIL_FWDREASON_ALLFORWARDING = $00000005; // @constdefine TBD
+ RIL_FWDREASON_ALLCONDITIONAL = $00000006; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Call Type | Call types
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CALLTYPE_UNKNOWN = $00000000; // @constdefine Unknown
+ RIL_CALLTYPE_VOICE = $00000001; // @constdefine Voice call
+ RIL_CALLTYPE_DATA = $00000002; // @constdefine Data call
+ RIL_CALLTYPE_FAX = $00000003; // @constdefine Fax call
+ RIL_CALLTYPE_PTT = $00000004; // @constdefine Push-To-Talk call
+ RIL_CALLTYPE_VT = $00000005; // @constdefine Video Telephony call
+ RIL_CALLTYPE_LAST = RIL_CALLTYPE_VT; // @constdefine last valid call
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Dialing Option | Dialing options
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_DIALOPT_NONE = $00000000; // @constdefine No options
+ RIL_DIALOPT_RESTRICTID = $00000001; // @constdefine Restrict CLI presentation
+ RIL_DIALOPT_PRESENTID = $00000002; // @constdefine Allow CLI presentation
+ RIL_DIALOPT_CLOSEDGROUP = $00000004; // @constdefine Closed User Group dialing
+ RIL_DIALOPT_ALL = $00000007; // @constdefine All options
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Call Option | Call options defaults
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_DIALTONEWAIT_DEFAULT = $00000000; // @constdefine TBD
+ RIL_DIALTIMEOUT_DEFAULT = $00000000; // @constdefine TBD
+ RIL_COMMAPAUSE_DEFAULT = $00000000; // @constdefine TBD
+ RIL_DISCONNECTTIMEOUT_DEFAULT = $00000000; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants DTMF Duration | DTMF tone duration default
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_DTMFDURATION_DEFAULT = $00000000; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Number of Calls to Track | Number of Calls to Track
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_MAX_TRACKED_CALL_ID = 10;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Call Direction | Call direction
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CALLDIR_INCOMING = $00000001; // @constdefine Incoming call
+ RIL_CALLDIR_OUTGOING = $00000002; // @constdefine Outgoing call
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Call Status | Call status values
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CALLSTAT_ACTIVE = $00000001; // @constdefine Active call
+ RIL_CALLSTAT_ONHOLD = $00000002; // @constdefine Call on hold
+ RIL_CALLSTAT_DIALING = $00000003; // @constdefine In the process of dialing
+ RIL_CALLSTAT_ALERTING = $00000004; // @constdefine In the process of ringing
+ RIL_CALLSTAT_INCOMING = $00000005; // @constdefine Incoming (unanswered) call
+ RIL_CALLSTAT_WAITING = $00000006; // @constdefine Incoming call waiting call
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants CPI Status | CPI status values
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CPISTAT_UNKNOWN = $00000000; // @constdefine
+ RIL_CPISTAT_NEW_OUTGOING = $00000001; // @constdefine
+ RIL_CPISTAT_NEW_INCOMING = $00000002; // @constdefine
+ RIL_CPISTAT_CONNECTED = $00000003; // @constdefine
+ RIL_CPISTAT_DISCONNECTED = $00000004; // @constdefine
+ RIL_CPISTAT_ONHOLD = $00000005; // @constdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Intermediate Supplementary Service | Intermediate Supplementary Service Codes
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_INTSSCODE_UNCONDITIONALCFACTIVE = $00000000; // @constdefine Unconditional call forwarding is active
+ RIL_INTSSCODE_SOMECONDITIONALCFACTIVE = $00000001; // @constdefine Some of the conditional call forwarding settings are active
+ RIL_INTSSCODE_CALLWASFORWARDED = $00000002; // @constdefine Call has been forwarded
+ RIL_INTSSCODE_CALLISWAITING = $00000003; // @constdefine Call is waiting
+ RIL_INTSSCODE_CUGCALL = $00000004; // @constdefine This is a CUG call (also <index> present;
+ RIL_INTSSCODE_OUTGOINGCALLSBARRED = $00000005; // @constdefine Outgoing calls are barred
+ RIL_INTSSCODE_INCOMINGCALLSBARRED = $00000006; // @constdefine Incoming calls are barred
+ RIL_INTSSCODE_CLIRSUPPRESSREJECT = $00000007; // @constdefine CLIR suppression rejected
+ RIL_INTSSCODE_CALLWASDEFLECTED = $00000008; // @constdefine Call has been deflected
+
+ RIL_INTSSCODE_MAX = RIL_INTSSCODE_CALLWASDEFLECTED; // @constdefine Maximum valid value
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Unsolicited Supplementary Service | Unsolicited Supplementary Service Codes
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_UNSSSCODE_FORWARDEDCALL = $00000000; // @constdefine This is a forwarded call (MT call setup;
+ RIL_UNSSSCODE_CUGCALL = $00000001; // @constdefine This is a CUG call (also <index> present; (MT call setup;
+ RIL_UNSSSCODE_CALLPUTONHOLD = $00000002; // @constdefine Call has been put on hold (during a voice call;
+ RIL_UNSSSCODE_CALLRETRIEVED = $00000003; // @constdefine Call has been retrieved (during a voice call;
+ RIL_UNSSSCODE_ENTEREDMULTIPARTY = $00000004; // @constdefine Multiparty call entered (during a voice call;
+ RIL_UNSSSCODE_HELDCALLRELEASED = $00000005; // @constdefine Call on hold has been released (this is not a SS notification; (during a voice call;
+ RIL_UNSSSCODE_FORWARDCHECKSS = $00000006; // @constdefine Forward check SS message received (can be received whenever;
+ RIL_UNSSSCODE_ALERTINGEXPLICITCALLXFER = $00000007; // @constdefine Call is being connected (alerting; with the remote party in alerting state in explicit call transfer operation (during a voice call;
+ RIL_UNSSSCODE_CONNECTEDEXPLICITCALLXFER = $00000008; // @constdefine Call has been connected with the other remote party in explicit call transfer operation (also number and subaddress parameters may be present; (during a voice call or MT call setup;
+ RIL_UNSSSCODE_DEFLECTEDCALL = $00000009; // @constdefine This is a deflected call (MT call setup;
+ RIL_UNSSSCODE_ADDITIONALINCOMINGCF = $0000000a; // @constdefine Additional incoming call forwarded
+
+ RIL_UNSSSCODE_MAX = RIL_UNSSSCODE_ADDITIONALINCOMINGCF; // @constdefine Maximum valid value
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Call Multiparty | Call multiparty status values
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CALL_SINGLEPARTY = $00000000; // @constdefine Not in a conference
+ RIL_CALL_MULTIPARTY = $00000001; // @constdefine Participating in a conference
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Call Management | Call management commands
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CALLCMD_RELEASEHELD = $00000001; // @constdefine Release all held calls, send "busy" to waiting call
+ RIL_CALLCMD_RELEASEACTIVE_ACCEPTHELD = $00000002; // @constdefine Release all active calls, accept waiting/held call
+ RIL_CALLCMD_RELEASECALL = $00000003; // @constdefine Release the specified call
+ RIL_CALLCMD_HOLDACTIVE_ACCEPTHELD = $00000004; // @constdefine Hold all active calls, accept waiting/held call
+ RIL_CALLCMD_HOLDALLBUTONE = $00000005; // @constdefine Hold all active calls, except for the specified call
+ RIL_CALLCMD_ADDHELDTOCONF = $00000006; // @constdefine Add all held calls to a conference
+ RIL_CALLCMD_ADDHELDTOCONF_DISCONNECT = $00000007; // @constdefine Connect held calls to a conference, disconnect the user
+ RIL_CALLCMD_INVOKECCBS = $00000008; // @constdefine Invokes completion of calls to busy subscribers
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Line Status | Line status values
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_LINESTAT_UNKNOWN = $00000000; // @constdefine Unknown
+ RIL_LINESTAT_READY = $00000001; // @constdefine Line is ready
+ RIL_LINESTAT_UNAVAILABLE = $00000002; // @constdefine Line is unavailable
+ RIL_LINESTAT_RINGING = $00000003; // @constdefine Incoming call on the line
+ RIL_LINESTAT_CALLINPROGRESS = $00000004; // @constdefine Call in progress
+ RIL_LINESTAT_ASLEEP = $00000005; // @constdefine Line is asleep
+ RIL_LINESTAT_CONNECTING = $00000006; // @constdefine The phone is connecting to a call, but the call is not in progress yet
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Line Registration | Line registration status values
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_REGSTAT_UNKNOWN = $00000000; // @constdefine Registration unknown
+ RIL_REGSTAT_UNREGISTERED = $00000001; // @constdefine Unregistered
+ RIL_REGSTAT_HOME = $00000002; // @constdefine Registered on home network
+ RIL_REGSTAT_ATTEMPTING = $00000003; // @constdefine Attempting to register
+ RIL_REGSTAT_DENIED = $00000004; // @constdefine Registration denied
+ RIL_REGSTAT_ROAMING = $00000005; // @constdefine Registered on roaming network
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Audio Device | Audio devices
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_AUDIO_NONE = $00000000; // @constdefine No audio devices
+ RIL_AUDIO_HANDSET = $00000001; // @constdefine Handset
+ RIL_AUDIO_SPEAKERPHONE = $00000002; // @constdefine Speakerphone
+ RIL_AUDIO_HEADSET = $00000003; // @constdefine Headset
+ RIL_AUDIO_CARKIT = $00000004; // @constdefine Carkit
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants HSCSD Traffic Channel | HSCSD traffic channel codings
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_HSCSDCODING_UNKNOWN = $00000000; // @constdefine Unknown channel coding
+ RIL_HSCSDCODING_4800_FULLRATE = $00000001; // @constdefine 4800 bits per second
+ RIL_HSCSDCODING_9600_FULLRATE = $00000002; // @constdefine 9600 bits per second
+ RIL_HSCSDCODING_14400_FULLRATE = $00000004; // @constdefine 14400 bits per second
+ RIL_HSCSDCODING_ALL = $00000007; // @constdefine All channel codings valid
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants HSCSD Air Interface | HSCSD air interface user rates
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_HSCSDAIURATE_UNKNOWN = $00000000; // @constdefine Air interface rate
+ RIL_HSCSDAIURATE_9600 = $00000001; // @constdefine 9600 bits per second
+ RIL_HSCSDAIURATE_14400 = $00000002; // @constdefine 14400 bits per second
+ RIL_HSCSDAIURATE_19200 = $00000003; // @constdefine 19200 bits per second
+ RIL_HSCSDAIURATE_28800 = $00000004; // @constdefine 28800 bits per second
+ RIL_HSCSDAIURATE_38400 = $00000005; // @constdefine 38400 bits per second
+ RIL_HSCSDAIURATE_43200 = $00000006; // @constdefine 43200 bits per second
+ RIL_HSCSDAIURATE_57600 = $00000007; // @constdefine 57600 bits per second
+ RIL_HSCSDAIURATE_DEFAULT = $ffffffff; // @constdefine A special value that indicates the radio stack
+ // should calculate the appropriate number of
+ // receive timeslots based on other paramaters
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants HSCSD Special | Special HSCSD receive timeslots value
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_HSCSDTIMESLOTS_DEFAULT = $00000000; // @constdefine Indicates that the radio stack should
+ // calculate apropriate number of timeslots
+ RIL_HSCSDTIMESLOTSLIMIT_NONE = $00000000; // @constdefine Indicates that number of receive numeslots will not
+ // be altered during the next non-transparent HSCSD call
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Data Compression | Data compression directions
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_DATACOMPDIR_NONE = $00000001; // @constdefine No data compression
+ RIL_DATACOMPDIR_TRANSMIT = $00000002; // @constdefine Data compession when sending
+ RIL_DATACOMPDIR_RECEIVE = $00000004; // @constdefine Data compession when receiving
+ RIL_DATACOMPDIR_BOTH = $00000008; // @constdefine Bi-directional data compession
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Data Compression Negotiation | Data compression negotiation options
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_DATACOMP_OPTIONAL = $00000001; // @constdefine Data compression optional
+ RIL_DATACOMP_REQUIRED = $00000002; // @constdefine Terminal will disconnect if no negotiation
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Error Correction | Error correction modes
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_ECMODE_UNKNOWN = $00000000; // @constdefine TBD
+ RIL_ECMODE_DIRECT = $00000001; // @constdefine TBD
+ RIL_ECMODE_BUFFERED = $00000002; // @constdefine TBD
+ RIL_ECMODE_NODETECT = $00000004; // @constdefine TBD
+ RIL_ECMODE_DETECT = $00000008; // @constdefine TBD
+ RIL_ECMODE_ALTERNATIVE = $00000010; // @constdefine TBD
+ RIL_ECMODE_OPTIONAL_USEBUFFERED = $00000020; // @constdefine TBD
+ RIL_ECMODE_OPTIONAL_USEDIRECT = $00000040; // @constdefine TBD
+ RIL_ECMODE_REQUIRED = $00000080; // @constdefine TBD
+ RIL_ECMODE_REQUIRED_LAPMONLY = $00000100; // @constdefine TBD
+ RIL_ECMODE_REQUIRED_ALTERNATIVEONLY = $00000200; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Bearer Service | Bearer service names
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_BSVCNAME_UNKNOWN = $00000000; // @constdefine TBD
+ RIL_BSVCNAME_DATACIRCUIT_ASYNC_UDI_MODEM = $00000001; // @constdefine TBD
+ RIL_BSVCNAME_DATACIRCUIT_SYNC_UDI_MODEM = $00000002; // @constdefine TBD
+ RIL_BSVCNAME_PADACCESS_ASYNC_UDI = $00000003; // @constdefine TBD
+ RIL_BSVCNAME_PACKETACCESS_SYNC_UDI = $00000004; // @constdefine TBD
+ RIL_BSVCNAME_DATACIRCUIT_ASYNC_RDI = $00000005; // @constdefine TBD
+ RIL_BSVCNAME_DATACIRCUIT_SYNC_RDI = $00000006; // @constdefine TBD
+ RIL_BSVCNAME_PADACCESS_ASYNC_RDI = $00000007; // @constdefine TBD
+ RIL_BSVCNAME_PACKETACCESS_SYNC_RDI = $00000008; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Bearer Service CE | Bearer service connection elements
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_BSVCCE_UNKNOWN = $00000000; // @constdefine Bearer service unknown
+ RIL_BSVCCE_TRANSPARENT = $00000001; // @constdefine Link layer correction enabled
+ RIL_BSVCCE_NONTRANSPARENT = $00000002; // @constdefine No link layer correction present
+ RIL_BSVCCE_BOTH_TRANSPARENT = $00000003; // @constdefine Both available, transparent preferred
+ RIL_BSVCCE_BOTH_NONTRANSPARENT = $00000004; // @constdefine Both available, non-transparent preferred
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Message Service | Messaging service types
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_MSGSVCTYPE_UNKNOWN = $00000000; // @constdefine Unknown
+ RIL_MSGSVCTYPE_PHASE2 = $00000001; // @constdefine GSM 07.05 Phase 2 ver. 4.7.0 messaging service
+ RIL_MSGSVCTYPE_PHASE2PLUS = $00000002; // @constdefine GSM 07.05 Pahse 2+ messaging service
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Message Storage | Message storage locations
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_MSGLOC_UNKNOWN = $00000000; // @constdefine Unknown
+ RIL_MSGLOC_BROADCAST = $00000001; // @constdefine Broadcast message storage location
+ RIL_MSGLOC_SIM = $00000002; // @constdefine SIM storage location
+ RIL_MSGLOC_STATUSREPORT = $00000003; // @constdefine Status report storage location
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants IS637 Teleservices | Message Teleservice types
+//
+// @comm TIA/EIA-41-D Supported Teleservices
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_MSGTELESERVICE_PAGING = $00000001; // @constdefine Wireless Paging Teleservice CPT-95 //@ Only callback number
+ RIL_MSGTELESERVICE_MESSAGING = $00000002; // @constdefine Wireless Messaging Teleservice CMT-95 //@ Text Message
+ RIL_MSGTELESERVICE_VOICEMAIL = $00000003; // @constdefine Voice Mail Notification VMN-95 //@ Voice Mail
+ RIL_MSGTELESERVICE_WAP = $00000004; // @constdefine Wireless Application Protocol WAP //@ To be investigated (Test message??)
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Message Privacy Class | Message Privacy types
+//
+// @comm IS-637 Message Privacy Classes
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_MSGPRIVACYCLASS_NOTRESTRICTED = $00000001; // @constdefine Not restricted (Level 0)
+ RIL_MSGPRIVACYCLASS_RESTRICTED = $00000002; // @constdefine Restricted (Level 1)
+ RIL_MSGPRIVACYCLASS_CONFIDENTIAL = $00000003; // @constdefine Confidential (Level 2)
+ RIL_MSGPRIVACYCLASS_SECRET = $00000004; // @constdefine Secret (Level 3)
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Message Priority Class | Message Priority types
+//
+// @comm IS-637 Message Priority Classes
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_MSGPRIORITY_NORMAL = $00000001; // @constdefine Message Urgency Normal
+ RIL_MSGPRIORITY_HIGH = $00000002; // @constdefine Message Urgency Interactive (S N/A)
+ RIL_MSGPRIORITY_URGENT = $00000003; // @constdefine Message Urgency Urgent
+ RIL_MSGPRIORITY_EMERGENCY = $00000004; // @constdefine Message Urgency Emergency (S N/A)
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Status Message Class | Message Statustypes
+//
+// @comm IS-637 Message Priority Classes
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_MSGSTATUSTYPE_BEARERACK = $00000001; // @constdefine The Acknowledgement Message is a Bearer Ack
+ RIL_MSGSTATUSTYPE_DELIVERYACK = $00000002; // @constdefine The Acknowledgement Message is a Delivery Ack
+ RIL_MSGSTATUSTYPE_USERACK = $00000003; // @constdefine The Acknowledgement Message is a User Ack
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Message Display Modes | Message Display Modes
+//
+// @comm Message Display Modes - Determines if the message is shown immediately or in the inbox (Ask Carrier if this feature is implemented)
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_MSGDISPLAYMODE_IMMEDIATE = $00000001; // @constdefine The message must be show immediately.
+//In the UI, Mobile Default and User Default should be treated as the same.
+ RIL_MSGDISPLAYMODE_MOBILEDEFAULT = $00000002; // @constdefine The message is to be displayed depending on a predefined mobile setting.
+ RIL_MSGDISPLAYMODE_USERDEFAULT = $00000003; // @constdefine The message is to be displayed depending on the user's mode.
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Message Encoding | Message Encoding types
+//
+// @comm Message Encoding - Determines the format of the incoming message body
+//
+// -----------------------------------------------------------------------------
+const
+//Analog Only - RIL_MSGCODING_IS91EPP = $00000001; // @constdefine IS-91 Character Format
+ RIL_MSGCODING_7BITASCII = $00000002; // @constdefine This the the verizon default
+ RIL_MSGCODING_UNICODE = $00000003; // @constdefine Unicode (double byte) format
+ RIL_MSGCODING_7BITGSM = $00000004; // @constdefine 7-bit GSM Alphabet
+ RIL_MSGCODING_8BITGSM = $00000005; // @constdefine 8-bit GSM Alphabet
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Message DCS | Message data coding scheme types
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_DCSTYPE_GENERAL = $00000001; // @constdefine TBD
+ RIL_DCSTYPE_MSGWAIT = $00000002; // @constdefine TBD
+ RIL_DCSTYPE_MSGCLASS = $00000003; // @constdefine TBD
+ RIL_DCSTYPE_LANGUAGE = $00000004; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Message DCS Flags | Message data coding scheme flags
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_DCSFLAG_NONE = $00000000; // @constdefine TBD
+ RIL_DCSFLAG_COMPRESSED = $00000001; // @constdefine TBD
+ RIL_DCSFLAG_INDICATIONACTIVE = $00000002; // @constdefine TBD
+ RIL_DCSFLAG_DISCARD = $00000004; // @constdefine Only for RIL_DCSTYPE_MSGWAIT
+ RIL_DCSFLAG_ALL = $00000007; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Message DCS Classes | Message data coding scheme message classes
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_DCSMSGCLASS_0 = $00000001; // @constdefine TBD
+ RIL_DCSMSGCLASS_1 = $00000002; // @constdefine TBD
+ RIL_DCSMSGCLASS_2 = $00000003; // @constdefine TBD
+ RIL_DCSMSGCLASS_3 = $00000004; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Message DCS Alphabets | Message data coding scheme alphabets
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_DCSALPHABET_DEFAULT = $00000001; // @constdefine TBD
+ RIL_DCSALPHABET_8BIT = $00000002; // @constdefine TBD
+ RIL_DCSALPHABET_UCS2 = $00000003; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Message DCS Indication | Message data coding scheme indication types
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_DCSINDICATION_VOICEMAIL = $00000001; // @constdefine Voicemail indication
+ RIL_DCSINDICATION_FAX = $00000002; // @constdefine Fax indication
+ RIL_DCSINDICATION_EMAIL = $00000003; // @constdefine E-Mail indication
+ RIL_DCSINDICATION_OTHER = $00000004; // @constdefine Other indication
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Message DCS Broadcast| Message broadcast data coding scheme languages
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_DCSLANG_UNKNOWN = $00000001; // @constdefine TBD
+ RIL_DCSLANG_GERMAN = $00000002; // @constdefine TBD
+ RIL_DCSLANG_ENGLISH = $00000004; // @constdefine TBD
+ RIL_DCSLANG_ITALIAN = $00000008; // @constdefine TBD
+ RIL_DCSLANG_FRENCH = $00000010; // @constdefine TBD
+ RIL_DCSLANG_SPANISH = $00000020; // @constdefine TBD
+ RIL_DCSLANG_DUTCH = $00000040; // @constdefine TBD
+ RIL_DCSLANG_SWEDISH = $00000080; // @constdefine TBD
+ RIL_DCSLANG_DANISH = $00000100; // @constdefine TBD
+ RIL_DCSLANG_PORTUGUESE = $00000200; // @constdefine TBD
+ RIL_DCSLANG_FINNISH = $00000400; // @constdefine TBD
+ RIL_DCSLANG_NORWEGIAN = $00000800; // @constdefine TBD
+ RIL_DCSLANG_GREEK = $00001000; // @constdefine TBD
+ RIL_DCSLANG_TURKISH = $00002000; // @constdefine TBD
+ RIL_DCSLANG_HUNGARIAN = $00004000; // @constdefine TBD
+ RIL_DCSLANG_POLISH = $00008000; // @constdefine TBD
+ RIL_DCSLANG_CZECH = $00010000; // @constdefine TBD
+ RIL_DCSLANG_HEBREW = $00020000; // @constdefine TBD
+ RIL_DCSLANG_ARABIC = $00040000; // @constdefine TBD
+ RIL_DCSLANG_RUSSIAN = $00080000; // @constdefine TBD
+ RIL_DCSLANG_ICELANDIC = $00100000; // @constdefine TBD
+ RIL_DCSLANG_ALL = $001fffff; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Message Class | Message classes
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_MSGCLASS_NONE = $00000000; // @constdefine TBD
+ RIL_MSGCLASS_INCOMING = $00010000; // @constdefine TBD
+ RIL_MSGCLASS_OUTGOING = $00020000; // @constdefine TBD
+ RIL_MSGCLASS_BROADCAST = $00040000; // @constdefine TBD
+ RIL_MSGCLASS_ALL = $00070000; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Message Type | Message types
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_MSGTYPE_IN_DELIVER = $00000001 or RIL_MSGCLASS_INCOMING; // @constdefine Incoming message
+ RIL_MSGTYPE_IN_STATUS = $00000002 or RIL_MSGCLASS_INCOMING; // @constdefine Incoming status message
+ RIL_MSGTYPE_OUT_SUBMIT = $00000001 or RIL_MSGCLASS_OUTGOING; // @constdefine Outgoing message
+ RIL_MSGTYPE_OUT_COMMAND = $00000002 or RIL_MSGCLASS_OUTGOING; // @constdefine Outgoing command message
+ RIL_MSGTYPE_OUT_RAW = $00000004 or RIL_MSGCLASS_OUTGOING;
+ RIL_MSGTYPE_BC_GENERAL = $00000001 or RIL_MSGCLASS_BROADCAST; // @constdefine Broadcast message (incoming only)
+
+// Macro to extract message class from message type
+function MSGCLASS_FROM_MSGTYPE(itype:ULONG):ULONG; inline;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Message Flag | Message flags
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_MSGFLAG_NONE = $00000000; // @constdefine None
+ RIL_MSGFLAG_MORETOSEND = $00000001; // @constdefine More messages to send (valid for <def RIL_MSGTYPE_IN_DELIVER> and <def RIL_MSGTYPE_IN_STATUS>)
+ RIL_MSGFLAG_REPLYPATH = $00000002; // @constdefine Message contains a reply path (valid for <def RIL_MSGTYPE_IN_DELIVER> and <def RIL_MSGTYPE_OUT_SUBMIT>)
+ RIL_MSGFLAG_HEADER = $00000004; // @constdefine TBD (valid for <def RIL_MSGTYPE_IN_DELIVER>, <def RIL_MSGTYPE_OUT_SUBMIT>,
+ // <def RIL_MSGTYPE_IN_STATUS>, and <def RIL_MSGTYPE_OUT_COMMAND>)
+ RIL_MSGFLAG_REJECTDUPS = $00000008; // @constdefine TBD (valid for <def RIL_MSGTYPE_OUT_SUBMIT> only)
+ RIL_MSGFLAG_STATUSREPORTRETURNED = $00000010; // @constdefine (valid for <def RIL_MSGTYPE_IN_DELIVER> only)
+ RIL_MSGFLAG_STATUSREPORTREQUESTED = $00000020; // @constdefine (valid for <def RIL_MSGTYPE_OUT_SUBMIT> and <def RIL_MSGTYPE_OUT_COMMAND>)
+ RIL_MSGFLAG_CAUSEDBYCOMMAND = $00000040; // @constdefine (valid for <def RIL_MSGTYPE_IN_STATUS> only)
+ RIL_MSGFLAG_ALL = $0000007f; // @constdefine All flags are on
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Message Protocol | Message protocol IDs
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_MSGPROTOCOL_UNKNOWN = $00000000; // @constdefine TBD
+ RIL_MSGPROTOCOL_SMETOSME = $00000001; // @constdefine TBD
+ RIL_MSGPROTOCOL_IMPLICIT = $00000002; // @constdefine TBD
+ RIL_MSGPROTOCOL_TELEX = $00000003; // @constdefine TBD
+ RIL_MSGPROTOCOL_TELEFAX_GROUP3 = $00000004; // @constdefine TBD
+ RIL_MSGPROTOCOL_TELEFAX_GROUP4 = $00000005; // @constdefine TBD
+ RIL_MSGPROTOCOL_VOICEPHONE = $00000006; // @constdefine TBD
+ RIL_MSGPROTOCOL_ERMES = $00000007; // @constdefine TBD
+ RIL_MSGPROTOCOL_PAGING = $00000008; // @constdefine TBD
+ RIL_MSGPROTOCOL_VIDEOTEX = $00000009; // @constdefine TBD
+ RIL_MSGPROTOCOL_TELETEX = $0000000a; // @constdefine TBD
+ RIL_MSGPROTOCOL_TELETEX_PSPDN = $0000000b; // @constdefine TBD
+ RIL_MSGPROTOCOL_TELETEX_CSPDN = $0000000c; // @constdefine TBD
+ RIL_MSGPROTOCOL_TELETEX_PSTN = $0000000d; // @constdefine TBD
+ RIL_MSGPROTOCOL_TELETEX_ISDN = $0000000e; // @constdefine TBD
+ RIL_MSGPROTOCOL_UCI = $0000000f; // @constdefine TBD
+ RIL_MSGPROTOCOL_MSGHANDLING = $00000010; // @constdefine TBD
+ RIL_MSGPROTOCOL_X400 = $00000011; // @constdefine TBD
+ RIL_MSGPROTOCOL_EMAIL = $00000012; // @constdefine TBD
+ RIL_MSGPROTOCOL_SCSPECIFIC1 = $00000013; // @constdefine TBD
+ RIL_MSGPROTOCOL_SCSPECIFIC2 = $00000014; // @constdefine TBD
+ RIL_MSGPROTOCOL_SCSPECIFIC3 = $00000015; // @constdefine TBD
+ RIL_MSGPROTOCOL_SCSPECIFIC4 = $00000016; // @constdefine TBD
+ RIL_MSGPROTOCOL_SCSPECIFIC5 = $00000017; // @constdefine TBD
+ RIL_MSGPROTOCOL_SCSPECIFIC6 = $00000018; // @constdefine TBD
+ RIL_MSGPROTOCOL_SCSPECIFIC7 = $00000019; // @constdefine TBD
+ RIL_MSGPROTOCOL_GSMSTATION = $0000001a; // @constdefine TBD
+ RIL_MSGPROTOCOL_SM_TYPE0 = $0000001b; // @constdefine TBD
+ RIL_MSGPROTOCOL_RSM_TYPE1 = $0000001c; // @constdefine TBD
+ RIL_MSGPROTOCOL_RSM_TYPE2 = $0000001d; // @constdefine TBD
+ RIL_MSGPROTOCOL_RSM_TYPE3 = $0000001e; // @constdefine TBD
+ RIL_MSGPROTOCOL_RSM_TYPE4 = $0000001f; // @constdefine TBD
+ RIL_MSGPROTOCOL_RSM_TYPE5 = $00000020; // @constdefine TBD
+ RIL_MSGPROTOCOL_RSM_TYPE6 = $00000021; // @constdefine TBD
+ RIL_MSGPROTOCOL_RSM_TYPE7 = $00000022; // @constdefine TBD
+ RIL_MSGPROTOCOL_RETURNCALL = $00000023; // @constdefine TBD
+ RIL_MSGPROTOCOL_ME_DOWNLOAD = $00000024; // @constdefine TBD
+ RIL_MSGPROTOCOL_DEPERSONALIZATION = $00000025; // @constdefine TBD
+ RIL_MSGPROTOCOL_SIM_DOWNLOAD = $00000026; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Message Delivery | Message delivery status values
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_MSGDLVSTATUS_RECEIVEDBYSME = $00000001; // @constdefine TBD
+ RIL_MSGDLVSTATUS_FORWARDEDTOSME = $00000002; // @constdefine TBD
+ RIL_MSGDLVSTATUS_REPLACEDBYSC = $00000003; // @constdefine TBD
+ RIL_MSGDLVSTATUS_CONGESTION_TRYING = $00000004; // @constdefine TBD
+ RIL_MSGDLVSTATUS_SMEBUSY_TRYING = $00000005; // @constdefine TBD
+ RIL_MSGDLVSTATUS_SMENOTRESPONDING_TRYING = $00000006; // @constdefine TBD
+ RIL_MSGDLVSTATUS_SVCREJECTED_TRYING = $00000007; // @constdefine TBD
+ RIL_MSGDLVSTATUS_QUALITYUNAVAIL_TRYING = $00000008; // @constdefine TBD
+ RIL_MSGDLVSTATUS_SMEERROR_TRYING = $00000009; // @constdefine TBD
+ RIL_MSGDLVSTATUS_CONGESTION = $0000000a; // @constdefine TBD
+ RIL_MSGDLVSTATUS_SMEBUSY = $0000000b; // @constdefine TBD
+ RIL_MSGDLVSTATUS_SMENOTRESPONDING = $0000000c; // @constdefine TBD
+ RIL_MSGDLVSTATUS_SVCREJECTED = $0000000d; // @constdefine TBD
+ RIL_MSGDLVSTATUS_QUALITYUNAVAIL_TEMP = $0000000e; // @constdefine TBD
+ RIL_MSGDLVSTATUS_SMEERROR = $0000000f; // @constdefine TBD
+ RIL_MSGDLVSTATUS_REMOTEPROCERROR = $00000010; // @constdefine TBD
+ RIL_MSGDLVSTATUS_INCOMPATIBLEDEST = $00000011; // @constdefine TBD
+ RIL_MSGDLVSTATUS_CONNECTIONREJECTED = $00000012; // @constdefine TBD
+ RIL_MSGDLVSTATUS_NOTOBTAINABLE = $00000013; // @constdefine TBD
+ RIL_MSGDLVSTATUS_NOINTERNETWORKING = $00000014; // @constdefine TBD
+ RIL_MSGDLVSTATUS_VPEXPIRED = $00000015; // @constdefine TBD
+ RIL_MSGDLVSTATUS_DELETEDBYORIGSME = $00000016; // @constdefine TBD
+ RIL_MSGDLVSTATUS_DELETEDBYSC = $00000017; // @constdefine TBD
+ RIL_MSGDLVSTATUS_NOLONGEREXISTS = $00000018; // @constdefine TBD
+ RIL_MSGDLVSTATUS_QUALITYUNAVAIL = $00000019; // @constdefine TBD
+ RIL_MSGDLVSTATUS_RESERVED_COMPLETED = $0000001a; // @constdefine TBD
+ RIL_MSGDLVSTATUS_RESERVED_TRYING = $0000001b; // @constdefine TBD
+ RIL_MSGDLVSTATUS_RESERVED_ERROR = $0000001c; // @constdefine TBD
+ RIL_MSGDLVSTATUS_RESERVED_TMPERROR = $0000001d; // @constdefine TBD
+ RIL_MSGDLVSTATUS_SCSPECIFIC_COMPLETED = $0000001e; // @constdefine TBD
+ RIL_MSGDLVSTATUS_SCSPECIFIC_TRYING = $0000001f; // @constdefine TBD
+ RIL_MSGDLVSTATUS_SCSPECIFIC_ERROR = $00000020; // @constdefine TBD
+ RIL_MSGDLVSTATUS_SCSPECIFIC_TMPERROR = $00000021; // @constdefine TBD
+
+
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Message Validity | Message validity period formats
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_MSGVP_NONE = $00000000; // @constdefine TBD
+ RIL_MSGVP_RELATIVE = $00000001; // @constdefine TBD
+ RIL_MSGVP_ENHANCED = $00000002; // @constdefine TBD
+ RIL_MSGVP_ABSOLUTE = $00000003; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Message Command | Message command types
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_MSGCMDTYPE_STATUSREQ = $00000001; // @constdefine TBD
+ RIL_MSGCMDTYPE_CANCELSTATUSREQ = $00000002; // @constdefine TBD
+ RIL_MSGCMDTYPE_DELETEMESSAGE = $00000003; // @constdefine TBD
+ RIL_MSGCMDTYPE_ENABLESTATUSREQ = $00000004; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Message Geographic | Message geographic scopes
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_GEOSCOPE_CELL_IMMEDIATE = $00000001; // @constdefine TBD
+ RIL_GEOSCOPE_CELL = $00000002; // @constdefine TBD
+ RIL_GEOSCOPE_PLMN = $00000003; // @constdefine TBD
+ RIL_GEOSCOPE_LOCATIONAREA = $00000004; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Message Status | Message status values
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_MSGSTATUS_UNKNOWN = $00000000; // @constdefine TBD
+ RIL_MSGSTATUS_RECUNREAD = $00000001; // @constdefine TBD
+ RIL_MSGSTATUS_RECREAD = $00000002; // @constdefine TBD
+ RIL_MSGSTATUS_STOUNSENT = $00000003; // @constdefine TBD
+ RIL_MSGSTATUS_STOSENT = $00000004; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Message Send | Send message options
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_SENDOPT_NONE = $00000000; // @constdefine TBD
+ RIL_SENDOPT_PERSISTLINK = $00000001; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Phone Locked | Phone locked states
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_LOCKEDSTATE_UNKNOWN = $00000000; // @constdefine Locking state unknown
+ RIL_LOCKEDSTATE_READY = $00000001; // @constdefine ME not locked
+ RIL_LOCKEDSTATE_SIM_PIN = $00000002; // @constdefine ME awaiting PIN
+ RIL_LOCKEDSTATE_SIM_PUK = $00000003; // @constdefine ME awaiting PUK
+ RIL_LOCKEDSTATE_PH_SIM_PIN = $00000004; // @constdefine ME awaiting phone-to-sim password
+ RIL_LOCKEDSTATE_PH_FSIM_PIN = $00000005; // @constdefine ME awaiting phone-to-first-sim password
+ RIL_LOCKEDSTATE_PH_FSIM_PUK = $00000006; // @constdefine ME awaiting phone-to-first-sim PUK
+ RIL_LOCKEDSTATE_SIM_PIN2 = $00000007; // @constdefine ME awaiting PIN2/CHV2
+ RIL_LOCKEDSTATE_SIM_PUK2 = $00000008; // @constdefine ME awaiting PUK2
+ RIL_LOCKEDSTATE_PH_NET_PIN = $00000009; // @constdefine ME awaiting network personilzation PIN
+ RIL_LOCKEDSTATE_PH_NET_PUK = $0000000a; // @constdefine ME awaiting network personilzation PUK
+ RIL_LOCKEDSTATE_PH_NETSUB_PIN = $0000000b; // @constdefine ME awaiting network subset personilzation PIN
+ RIL_LOCKEDSTATE_PH_NETSUB_PUK = $0000000c; // @constdefine ME awaiting network subset personilzation PUK
+ RIL_LOCKEDSTATE_PH_SP_PIN = $0000000d; // @constdefine ME awaiting service provider PIN
+ RIL_LOCKEDSTATE_PH_SP_PUK = $0000000e; // @constdefine ME awaiting service provider PUK
+ RIL_LOCKEDSTATE_PH_CORP_PIN = $0000000f; // @constdefine ME awaiting corporate personilzation PIN
+ RIL_LOCKEDSTATE_PH_CORP_PUK = $00000010; // @constdefine ME awaiting corporate personilzation PUK
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Lock Facility | Facilities for phone locking
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_LOCKFACILITY_CNTRL = $00000001; // @constdefine Lock control curface
+ RIL_LOCKFACILITY_PH_SIM = $00000002; // @constdefine Lock phone to SIM card
+ RIL_LOCKFACILITY_PH_FSIM = $00000003; // @constdefine Lock phone to first SIM card
+ RIL_LOCKFACILITY_SIM = $00000004; // @constdefine Lock SIM card
+ RIL_LOCKFACILITY_SIM_PIN2 = $00000005; // @constdefine SIM PIN2 (only for RIL_ChangeLockingPassword())
+ RIL_LOCKFACILITY_SIM_FIXEDIALING = $00000006; // @constdefine SIM fixed dialing memory
+ RIL_LOCKFACILITY_NETWORKPERS = $00000007; // @constdefine Network personalization
+ RIL_LOCKFACILITY_NETWORKSUBPERS = $00000008; // @constdefine Network subset personalization
+ RIL_LOCKFACILITY_SERVICEPROVPERS = $00000009; // @constdefine Service provider personalization
+ RIL_LOCKFACILITY_CORPPERS = $0000000a; // @constdefine Corporate personalization
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Lock Status | Locking status values
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_LOCKINGSTATUS_DISABLED = $00000001; // @constdefine Disable
+ RIL_LOCKINGSTATUS_ENABLED = $00000002; // @constdefine Enabled
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants SIM Security | SIM Security states
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_SIMSECURITYSTATE_UNKNOWN = $00000000; // @constdefine SIM security state unknown
+ RIL_SIMSECURITYSTATE_PINREQUESTED = $00000001; // @constdefine SIM security state requested PIN
+ RIL_SIMSECURITYSTATE_PINRECEIVED = $00000002; // @constdefine SIM security state received PIN
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Call Barr Facility | Types of call barring
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_BARRTYPE_ALLOUTGOING = $00000001; // @constdefine Barr all outgoing calls
+ RIL_BARRTYPE_OUTGOINGINT = $00000002; // @constdefine Barr outgoing international calls
+ RIL_BARRTYPE_OUTGOINGINTEXTOHOME = $00000003; // @constdefine Barr outgoing international calls except to home country
+ RIL_BARRTYPE_ALLINCOMING = $00000004; // @constdefine Barr all incoming calls
+ RIL_BARRTYPE_INCOMINGROAMING = $00000005; // @constdefine Barr incoming calls when roaming outside of home country
+ RIL_BARRTYPE_INCOMINGNOTINSIM = $00000006; // @constdefine Barr incoming calls from numbers not stored to SIM memory
+ RIL_BARRTYPE_ALLBARRING = $00000007; // @constdefine All barring services
+ RIL_BARRTYPE_ALLOUTGOINGBARRING = $00000008; // @constdefine All outgoing barring services
+ RIL_BARRTYPE_ALLINCOMINGBARRING = $00000009; // @constdefine All incoming barring services
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Call Barr Status | Status values for call barring
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_BARRINGSTATUS_DISABLED = $00000001; // @constdefine Disable
+ RIL_BARRINGSTATUS_ENABLED = $00000002; // @constdefine Disable
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Equipment State | Equipment states
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_EQSTATE_UNKNOWN = $00000000; // @constdefine Unknown
+ RIL_EQSTATE_MINIMUM = $00000001; // @constdefine Minimum power state
+ RIL_EQSTATE_FULL = $00000002; // @constdefine Full functionality
+ RIL_EQSTATE_DISABLETX = $00000003; // @constdefine Transmitter disabled
+ RIL_EQSTATE_DISABLERX = $00000004; // @constdefine Receiver disabled
+ RIL_EQSTATE_DISABLETXANDRX = $00000005; // @constdefine Transmitter & receiver disabled
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Radio Presence States | Radio Presence States
+//
+// @comm These states are determined by whether the driver is loaded or not
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_RADIOPRESENCE_NOTPRESENT = $00000000; // @constdefine There is not radio module present in the device
+ RIL_RADIOPRESENCE_PRESENT = $00000001; // @constdefine There is a radio module present that RIL can use
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Driver defined Radio ON vs OFF State | Radio ON/OFF states
+//
+// @comm These values normally depend on the Equiptment state
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_RADIOSUPPORT_UNKNOWN = $00000000; // @constdefine The Radio Functionality is in an intermediate state
+ RIL_RADIOSUPPORT_OFF = $00000001; // @constdefine The Radio Functionality is OFF (DOES NOT Neccessarily mean safe for flight)
+ RIL_RADIOSUPPORT_ON = $00000002; // @constdefine The Radio Functionality is ON
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Various components of the Radio are ready for external usage
+//
+// @comm This will be a mask of the below values
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_READYSTATE_NONE = $00000000; // @constdefine Nothing is ready yet
+ RIL_READYSTATE_INITIALIZED = $00000001; // @constdefine The Radio has been initialized (but may not be ready)
+ RIL_READYSTATE_SIM = $00000002; // @constdefine The Radio is ready for SIM Access
+ RIL_READYSTATE_SMS = $00000004; // @constdefine The Radio is ready for SMS messages
+ RIL_READYSTATE_UNLOCKED = $00000008; // @constdefine The SIM is unlocked
+ RIL_READYSTATE_SIM_PB = $00000010; // @constdefine The SIM PB has been fully copied to volatile memory and is ready for access
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Various SIM card states.
+//
+// @comm NONE
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_SIMSTATUSCHANGED_NONE = $00000000; // @constdefine No status yet
+ RIL_SIMSTATUSCHANGED_FULL = $00000001; // @constdefine SIM card memory is full
+ RIL_SIMSTATUSCHANGED_NO_SIM = $00000002; // @constdefine No SIM card available
+ RIL_SIMSTATUSCHANGED_INVALID = $00000004; // @constdefine SIM card is invalid
+ RIL_SIMSTATUSCHANGED_BLOCKED = $00000008; // @constdefine SIM card is blocked
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Phonebook Storage | Phonebook storage locations
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PBLOC_UNKNOWN = $00000000; // @constdefine Unknown
+ RIL_PBLOC_SIMEMERGENCY = $00000001; // @constdefine Emergency numbers
+ RIL_PBLOC_SIMFIXDIALING = $00000002; // @constdefine Fixed dialing
+ RIL_PBLOC_SIMLASTDIALING = $00000003; // @constdefine Recent calls list
+ RIL_PBLOC_OWNNUMBERS = $00000004; // @constdefine TBD
+ RIL_PBLOC_SIMPHONEBOOK = $00000005; // @constdefine SIM phonebook
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Special Phonebook | Special phonebook index value
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PBINDEX_FIRSTAVAILABLE = $ffffffff; // @constdefine User first available entry
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants SIM Command | SIM commands
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_SIMCMD_READBINARY = $00000001; // @constdefine Read a binary
+ RIL_SIMCMD_READRECORD = $00000002; // @constdefine Read contents of a record
+ RIL_SIMCMD_GETRESPONSE = $00000003; // @constdefine Required to get output data for some commands
+ RIL_SIMCMD_UPDATEBINARY = $00000004; // @constdefine Update a transparent file
+ RIL_SIMCMD_UPDATERECORD = $00000005; // @constdefine Update a linear fixed or cyclic file
+ RIL_SIMCMD_STATUS = $00000006; // @constdefine Get status on a file
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants SIM Record | Different SIM file types
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_SIMRECORDTYPE_UNKNOWN = $00000000; // @constdefine An unknown file type
+ RIL_SIMRECORDTYPE_TRANSPARENT = $00000001; // @constdefine A single veriable lengthed record
+ RIL_SIMRECORDTYPE_CYCLIC = $00000002; // @constdefine A cyclic set of records, each of the same length
+ RIL_SIMRECORDTYPE_LINEAR = $00000003; // @constdefine A linear set of records, each of the same length
+ RIL_SIMRECORDTYPE_MASTER = $00000004; // @constdefine Every SIM has a single master record, effectively the head node
+ RIL_SIMRECORDTYPE_DEDICATED = $00000005; // @constdefine Effectively a "directory" file which is a parent of other records
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants SIM Toolkit Terminate | SIM Toolkit session termination causes
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_SIMTKITTERMCAUSE_USERSTOPPEDREDIAL = $00000001; // @constdefine User stopped redial attempts
+ RIL_SIMTKITTERMCAUSE_ENDOFREDIAL = $00000002; // @constdefine End of redial period
+ RIL_SIMTKITTERMCAUSE_USERENDEDSESSION = $00000003; // @constdefine Session terminated by user
+
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILSIMTOOLKITNOTIFYCAPS
+//
+// @constants Unavailable | Detailed reason for support of toolkit functions
+//
+// @comm Values that variables information variables in RILSIMTOOLKITNOTIFYCAPS can take on
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_SIMTKN_MEIMPLEMENTS = $00000001; // @constdefine The ME must implement this notification
+ RIL_SIMTKN_RADIOIMPLEMENTS_NONOTIFICATION = $00000002; // @constdefine The radio will implement and not give a notification to the ME
+ RIL_SIMTKN_RADIOIMPLEMENTS_NOTIFICATION = $00000003; // @constdefine The radio will implement and give a notification to the ME that it was done
+ RIL_SIMTKN_RADIOIMPLEMENTS_REQUESTMEINPUT = $00000004; // @constdefine The radio will implement, but requests information from the ME first
+ RIL_SIMTKN_NOSUPPORT = $FFFFFFFF; // @constdefine RIL knows of this type of command but does not support.
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Signal Strength | Special signal strength value
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_SIGNALSTRENGTH_UNKNOWN = $ffffffff; // @constdefine Unknown signal strength
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Bit Error Rate | Special bit error rate value
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_BITERRORRATE_UNKNOWN = $ffffffff; // @constdefine Unknown signal strength
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Remote Party | Remote party information validity types
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_REMOTEPARTYINFO_VALID = $00000001; // @constdefine Information valid
+ RIL_REMOTEPARTYINFO_WITHHELD = $00000002; // @constdefine Information withheld by other user
+ RIL_REMOTEPARTYINFO_UNAVAILABLE = $00000003; // @constdefine Network unable to send info
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Disconnect Initiation | Disconnect initiation values
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_DISCINIT_NULL = $00000000; // @constdefine Nothing
+ RIL_DISCINIT_LOCAL = $00000001; // @constdefine Local party initiated
+ RIL_DISCINIT_REMOTE = $00000002; // @constdefine Remote party initiated
+ RIL_DISCINIT_NETWORKERROR = $00000003; // @constdefine The call was disconnected due to a network error condition
+ RIL_DISCINIT_BUSY = $00000004; // @constdefine Busy
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Subaddress Type | Supplementary service data status values
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_SUPSVCDATASTATUS_NOINFOREQUIRED = $00000001; // @constdefine TBD
+ RIL_SUPSVCDATASTATUS_FURTHERINFOREQUIRED = $00000002; // @constdefine TBD
+ RIL_SUPSVCDATASTATUS_TERMINATED = $00000003; // @constdefine TBD
+ RIL_SUPSVCDATASTATUS_OTHERCLIENTRESPONDED = $00000004; // @constdefine TBD
+ RIL_SUPSVCDATASTATUS_UNSUPPORTED = $00000005; // @constdefine TBD
+ RIL_SUPSVCDATASTATUS_TIMEOUT = $00000006; // @constdefine TBD
+ RIL_SUPSVCDATASTATUS_ERROR = $00000007; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants GPRS Protocol | GPRS Packet Protocols
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_GPRSPROTOCOL_UNKNOWN = $00000000; // @constdefine Unknown
+ RIL_GPRSPROTOCOL_X25 = $00000001; // @constdefine ITU-T/CCITT X.25 Layer 4
+ RIL_GPRSPROTOCOL_IP = $00000002; // @constdefine Internet Protocol (IETF STD 5)
+ RIL_GPRSPROTOCOL_IHOSP = $00000004; // @constdefine Internet Hosted Octet Stream Protocol
+ RIL_GPRSPROTOCOL_PPP = $00000008; // @constdefine Point to Point Protocol
+ RIL_GPRSPROTOCOL_ALL = $0000000f;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants GPRS Protocol | GPRS L2 Protocols
+//
+// @comm None
+//
+// See GSM 07.07 10.1.6 for definitions
+// -----------------------------------------------------------------------------
+const
+ RIL_GPRSL2PROTOCOL_UNKNOWN = $00000000; // @constdefine
+ RIL_GPRSL2PROTOCOL_NULL = $00000001; // @constdefine none, for PDP type OSP:IHOSS
+ RIL_GPRSL2PROTOCOL_PPP = $00000002; // @constdefine Point-to-point protocol for a PDP such as IP
+ RIL_GPRSL2PROTOCOL_PAD = $00000004; // @constdefine character stream for X.25 character (triple X PAD) mode
+ RIL_GPRSL2PROTOCOL_X25 = $00000008; // @constdefine X.25 L2 (LAPB) for X.25 packet mode
+ RIL_GPRSL2PROTOCOL_ALL = $0000000f;
+
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants GPRS Data Comp | GPRS Data Compression
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_GPRSDATACOMP_OFF = $00000001; // @constdefine compression off
+ RIL_GPRSDATACOMP_ON = $00000002; // @constdefine compression off
+ RIL_GPRSDATACOMP_ALL = $00000003;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants GPRS Header Comp | GPRS Header Compression
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_GPRSHEADERCOMP_OFF = $00000001; // @constdefine compression off
+ RIL_GPRSHEADERCOMP_ON = $00000002; // @constdefine compression off
+ RIL_GPRSHEADERCOMP_ALL = $00000003;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants GPRS Precedence Class | GPRS Precedence Class
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_GPRSPRECEDENCECLASS_SUBSCRIBED = $00000001; // @constdefine subscribed value stored in network
+ RIL_GPRSPRECEDENCECLASS_HIGH = $00000002; // @constdefine high priority
+ RIL_GPRSPRECEDENCECLASS_NORMAL = $00000004; // @constdefine normal priority
+ RIL_GPRSPRECEDENCECLASS_LOW = $00000008; // @constdefine low priority
+ RIL_GPRSPRECEDENCECLASS_ALL = $0000000f;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants GPRS Delay Class | GPRS Delay Class
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_GPRSDELAYCLASS_SUBSCRIBED = $00000001; // @constdefine subscribed value stored in network
+ RIL_GPRSDELAYCLASS_PREDICTIVE1 = $00000002; // @constdefine see gsm 02.60
+ RIL_GPRSDELAYCLASS_PREDICTIVE2 = $00000004; // @constdefine see gsm 02.60
+ RIL_GPRSDELAYCLASS_PREDICTIVE3 = $00000008; // @constdefine see gsm 02.60
+ RIL_GPRSDELAYCLASS_BESTEFFORT = $00000010; // @constdefine see gsm 02.60
+ RIL_GPRSDELAYCLASS_ALL = $0000001f;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants GPRS Reliability Class | GPRS Reliability Class
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_GPRSRELIABILITYCLASS_SUBSCRIBED = $00000001; // @constdefine subscribed value stored in network
+ RIL_GPRSRELIABILITYCLASS_1 = $00000002; // @constdefine see gsm 03.60
+ RIL_GPRSRELIABILITYCLASS_2 = $00000004; // @constdefine see gsm 03.60
+ RIL_GPRSRELIABILITYCLASS_3 = $00000008; // @constdefine see gsm 03.60
+ RIL_GPRSRELIABILITYCLASS_4 = $00000010; // @constdefine see gsm 03.60
+ RIL_GPRSRELIABILITYCLASS_5 = $00000020; // @constdefine see gsm 03.60
+ RIL_GPRSRELIABILITYCLASS_ALL = $0000003f;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants GPRS Class | GPRS Class
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_GPRSCLASS_UNKNOWN = $00000000; // @constdefine GPRS class unknown
+ RIL_GPRSCLASS_GSMANDGPRS = $00000001; // @constdefine Simultaneous voice and GPRS data
+ RIL_GPRSCLASS_GSMORGPRS = $00000002; // @constdefine Simultaneous voice and GPRS traffic channel, one or other data
+ RIL_GPRSCLASS_GSMORGPRS_EXCLUSIVE = $00000004; // @constdefine Either all voice or all GPRS, both traffic channels unmonitored
+ RIL_GPRSCLASS_GPRSONLY = $00000008; // @constdefine Only GPRS
+ RIL_GPRSCLASS_GSMONLY = $00000010; // @constdefine Only circuit switched voice and data
+ RIL_GPRSCLASS_ALL = $0000001f;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants GPRS Peak Throughput Class | GPRS Peak Throughput Class
+//
+// @comm Constants represent bits per second
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PEAKTHRUCLASS_SUBSCRIBED = $00000001; // @constdefine subscribed value stored in network
+ RIL_PEAKTHRUCLASS_8000 = $00000002; // @constdefine bits per second
+ RIL_PEAKTHRUCLASS_16000 = $00000004; // @constdefine bits per second
+ RIL_PEAKTHRUCLASS_32000 = $00000008; // @constdefine bits per second
+ RIL_PEAKTHRUCLASS_64000 = $00000010; // @constdefine bits per second
+ RIL_PEAKTHRUCLASS_128000 = $00000020; // @constdefine bits per second
+ RIL_PEAKTHRUCLASS_256000 = $00000040; // @constdefine bits per second
+ RIL_PEAKTHRUCLASS_512000 = $00000080; // @constdefine bits per second
+ RIL_PEAKTHRUCLASS_1024000 = $00000100; // @constdefine bits per second
+ RIL_PEAKTHRUCLASS_2048000 = $00000200; // @constdefine bits per second
+ RIL_PEAKTHRUCLASS_ALL = $000003ff;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants GPRS Mean Throughput Class | GPRS Mean Throughput Class
+//
+// @comm Constants represent octets per hour
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_MEANTHRUCLASS_SUBSCRIBED = $00000001; // @constdefine subscribed value stored in network
+ RIL_MEANTHRUCLASS_100 = $00000002; // @constdefine 0.22 bits/second
+ RIL_MEANTHRUCLASS_200 = $00000004; // @constdefine 0.44 bits/second
+ RIL_MEANTHRUCLASS_500 = $00000008; // @constdefine 1.11 bits/second
+ RIL_MEANTHRUCLASS_1000 = $00000010; // @constdefine 2.2 bits/second
+ RIL_MEANTHRUCLASS_2000 = $00000020; // @constdefine 4.4 bits/second
+ RIL_MEANTHRUCLASS_5000 = $00000040; // @constdefine 11.1 bits/second
+ RIL_MEANTHRUCLASS_10000 = $00000080; // @constdefine 22 bits/second
+ RIL_MEANTHRUCLASS_20000 = $00000100; // @constdefine 44 bits/second
+ RIL_MEANTHRUCLASS_50000 = $00000200; // @constdefine 111 bits/second
+ RIL_MEANTHRUCLASS_100000 = $00000400; // @constdefine 220 bits/second
+ RIL_MEANTHRUCLASS_200000 = $00000800; // @constdefine 440 bits/second
+ RIL_MEANTHRUCLASS_500000 = $00001000; // @constdefine 1,110 bits/second
+ RIL_MEANTHRUCLASS_1000000 = $00002000; // @constdefine 2,200 bits/second
+ RIL_MEANTHRUCLASS_2000000 = $00004000; // @constdefine 4,400 bits/second
+ RIL_MEANTHRUCLASS_5000000 = $00008000; // @constdefine 11,100 bits/second
+ RIL_MEANTHRUCLASS_10000000 = $00010000; // @constdefine 22,000 bits/second
+ RIL_MEANTHRUCLASS_20000000 = $00020000; // @constdefine 44,000 bits/second
+ RIL_MEANTHRUCLASS_50000000 = $00040000; // @constdefine 111,000 bits/second
+ RIL_MEANTHRUCLASS_DONTCARE = $80000000; // @constdefine best effort
+ RIL_MEANTHRUCLASS_ALL = $8007ffff;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Complete Call Busy | Special value for all CCBS
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CCBS_ALL = $ffffffff; // @constdefine All CCBS
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants GPRS SMS | Mobile Originated SMS Service Constants
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_MOSMSSERVICE_CIRCUIT = $00000001; // @constdefine circuit switched
+ RIL_MOSMSSERVICE_GPRS = $00000002; // @constdefine GPRS
+ RIL_MOSMSSERVICE_CIRCUITPREFERRED = $00000004; // @constdefine use both, circuit switched preferred
+ RIL_MOSMSSERVICE_GPRSPREFERRED = $00000008; // @constdefine use both, GPRS preferred
+ RIL_MOSMSSERVICE_ALL = $0000000f;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Password type | PIN or PUK password
+//
+// @comm Used to distiguish between a password that is a PIN vs PUK for RIL_ChangeLockingPassword
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PASSWORDTYPE_PIN = $00000001; //@ The password type is a SIM PIN (editable password)
+ RIL_PASSWORDTYPE_PUK = $00000002; //@ The password type is a SIM PUK (Non-user editable)
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants System Capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_SYSTEMCAPS_NONE = $00000000; // @constdefine The system does not support any special capabilities.
+ RIL_SYSTEMCAPS_VOICEDATA = $00000001; // @constdefine The system supports simultaneous voice+Data
+ RIL_SYSTEMCAPS_ALL = $00000001; // @constdefine The system supports all special capabilities.
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Caps Type | Capability types
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CAPSTYPE_DIAL = $00000001; // @constdefine TBD
+ RIL_CAPSTYPE_DTMFDURATIONRANGE = $00000002; // @constdefine TBD
+ RIL_CAPSTYPE_CALLMGTCMDS = $00000003; // @constdefine TBD
+ RIL_CAPSTYPE_BEARERSERVICE = $00000004; // @constdefine TBD
+ RIL_CAPSTYPE_RLP = $00000005; // @constdefine TBD
+ RIL_CAPSTYPE_EQUIPMENTSTATES = $00000006; // @constdefine TBD
+ RIL_CAPSTYPE_PBSTORELOCATIONS = $00000007; // @constdefine TBD
+ RIL_CAPSTYPE_PBINDEXRANGE = $00000008; // @constdefine TBD
+ RIL_CAPSTYPE_PBENTRYLENGTH = $00000009; // @constdefine TBD
+ RIL_CAPSTYPE_MSGSERVICETYPES = $0000000a; // @constdefine TBD
+ RIL_CAPSTYPE_MSGMEMORYLOCATIONS = $0000000b; // @constdefine TBD
+ RIL_CAPSTYPE_BROADCASTMSGLANGS = $0000000c; // @constdefine TBD
+ RIL_CAPSTYPE_MSGCONFIGINDEXRANGE = $0000000d; // @constdefine TBD
+ RIL_CAPSTYPE_MSGSTATUSVALUES = $0000000e; // @constdefine TBD
+ RIL_CAPSTYPE_PREFOPINDEXRANGE = $0000000f; // @constdefine TBD
+ RIL_CAPSTYPE_LOCKFACILITIES = $00000010; // @constdefine TBD
+ RIL_CAPSTYPE_LOCKINGPWDLENGTHS = $00000011; // @constdefine TBD
+ RIL_CAPSTYPE_BARRTYPES = $00000012; // @constdefine TBD
+ RIL_CAPSTYPE_BARRINGPWDLENGTHS = $00000013; // @constdefine TBD
+ RIL_CAPSTYPE_FORWARDINGREASONS = $00000014; // @constdefine TBD
+ RIL_CAPSTYPE_INFOCLASSES = $00000015; // @constdefine TBD
+ RIL_CAPSTYPE_HSCSD = $00000016; // @constdefine TBD
+ RIL_CAPSTYPE_SIMTOOLKITNOTIFICATIONS = $00000017; // @constdefine TBD
+ RIL_CAPSTYPE_GPRSCLASS = $00000018; // @constdefine TBD
+ RIL_CAPSTYPE_GPRSCONTEXT = $00000019; // @constdefine TBD
+ RIL_CAPSTYPE_GPRSQOS = $0000001a; // @constdefine TBD
+ RIL_CAPSTYPE_GPRSQOSMIN = $0000001b; // @constdefine TBD
+ RIL_CAPSTYPE_GPRSMOSMS = $0000001c; // @constdefine TBD
+ RIL_CAPSTYPE_DATACOMPRESSION = $0000001d; // @constdefine TBD
+ RIL_CAPSTYPE_ERRORCORRECTION = $0000001e; // @constdefine TBD
+ RIL_CAPSTYPE_SIGNALQUALITYIMPLEMENTATION = $0000001f; // @constdefine TBD
+
+ RIL_CAPSTYPE_SIMSUPPORT = $00000020; // @constdefine TBD
+ RIL_CAPSTYPE_CALLPROGRESSNOTIFICATION = $00000021; // @constdefine TBD
+ RIL_CAPSTYPE_NOTIFICATIONIMPLEMENTATION = $00000022; // @constdefine TBD
+ RIL_CAPSTYPE_NITZNOTIFICATION = $00000023; // @constdefine TBD
+
+ RIL_CAPSTYPE_ARG_SMALLEST = RIL_CAPSTYPE_DIAL;
+ RIL_CAPSTYPE_ARG_LARGEST = RIL_CAPSTYPE_NITZNOTIFICATION;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Caps Call Type | NITZ type capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CAPS_NITZ_DISABLED = $00000001; // @constdefine TBD
+ RIL_CAPS_NITZ_ENABLED = $00000002; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Caps Call Type | Call type capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CAPS_CALLTYPE_VOICE = $00000001; // @constdefine TBD
+ RIL_CAPS_CALLTYPE_DATA = $00000002; // @constdefine TBD
+ RIL_CAPS_CALLTYPE_FAX = $00000004; // @constdefine TBD
+ RIL_CAPS_CALLTYPE_PTT = $00000008; // @constdefine TBD
+ RIL_CAPS_CALLTYPE_VT = $00000010; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Caps Dialing Option | Dialing options capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CAPS_DIALOPT_RESTRICTID = RIL_DIALOPT_RESTRICTID; // @constdefine TBD
+ RIL_CAPS_DIALOPT_PRESENTID = RIL_DIALOPT_PRESENTID; // @constdefine TBD
+ RIL_CAPS_DIALOPT_CLOSEDGROUP = RIL_DIALOPT_CLOSEDGROUP; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Caps Call Mgmt | Call management command capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CAPS_CALLCMD_RELEASEHELD = $00000001; // @constdefine TBD
+ RIL_CAPS_CALLCMD_RELEASEACTIVE_ACCEPTHELD = $00000002; // @constdefine TBD
+ RIL_CAPS_CALLCMD_RELEASECALL = $00000004; // @constdefine TBD
+ RIL_CAPS_CALLCMD_HOLDACTIVE_ACCEPTHELD = $00000008; // @constdefine TBD
+ RIL_CAPS_CALLCMD_HOLDALLBUTONE = $00000010; // @constdefine TBD
+ RIL_CAPS_CALLCMD_ADDHELDTOCONF = $00000020; // @constdefine TBD
+ RIL_CAPS_CALLCMD_ADDHELDTOCONF_DISCONNECT = $00000040; // @constdefine TBD
+ RIL_CAPS_CALLCMD_INVOKECCBS = $00000080; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Caps Bearer Speed1 | Bearer service speed capabilities (first set)
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CAPS_SPEED1_AUTO = $00000001; // @constdefine TBD
+ RIL_CAPS_SPEED1_300_V21 = $00000002; // @constdefine TBD
+ RIL_CAPS_SPEED1_300_V110 = $00000004; // @constdefine TBD
+ RIL_CAPS_SPEED1_1200_V22 = $00000008; // @constdefine TBD
+ RIL_CAPS_SPEED1_1200_75_V23 = $00000010; // @constdefine TBD
+ RIL_CAPS_SPEED1_1200_V110 = $00000020; // @constdefine TBD
+ RIL_CAPS_SPEED1_1200_V120 = $00000040; // @constdefine TBD
+ RIL_CAPS_SPEED1_2400_V22BIS = $00000080; // @constdefine TBD
+ RIL_CAPS_SPEED1_2400_V26TER = $00000100; // @constdefine TBD
+ RIL_CAPS_SPEED1_2400_V110 = $00000200; // @constdefine TBD
+ RIL_CAPS_SPEED1_2400_V120 = $00000400; // @constdefine TBD
+ RIL_CAPS_SPEED1_4800_V32 = $00000800; // @constdefine TBD
+ RIL_CAPS_SPEED1_4800_V110 = $00001000; // @constdefine TBD
+ RIL_CAPS_SPEED1_4800_V120 = $00002000; // @constdefine TBD
+ RIL_CAPS_SPEED1_9600_V32 = $00004000; // @constdefine TBD
+ RIL_CAPS_SPEED1_9600_V34 = $00008000; // @constdefine TBD
+ RIL_CAPS_SPEED1_9600_V110 = $00010000; // @constdefine TBD
+ RIL_CAPS_SPEED1_9600_V120 = $00020000; // @constdefine TBD
+ RIL_CAPS_SPEED1_14400_V34 = $00040000; // @constdefine TBD
+ RIL_CAPS_SPEED1_14400_V110 = $00080000; // @constdefine TBD
+ RIL_CAPS_SPEED1_14400_V120 = $00100000; // @constdefine TBD
+ RIL_CAPS_SPEED1_19200_V34 = $00200000; // @constdefine TBD
+ RIL_CAPS_SPEED1_19200_V110 = $00400000; // @constdefine TBD
+ RIL_CAPS_SPEED1_19200_V120 = $00800000; // @constdefine TBD
+ RIL_CAPS_SPEED1_28800_V34 = $01000000; // @constdefine TBD
+ RIL_CAPS_SPEED1_28800_V110 = $02000000; // @constdefine TBD
+ RIL_CAPS_SPEED1_28800_V120 = $04000000; // @constdefine TBD
+ RIL_CAPS_SPEED1_38400_V110 = $08000000; // @constdefine TBD
+ RIL_CAPS_SPEED1_38400_V120 = $10000000; // @constdefine TBD
+ RIL_CAPS_SPEED1_48000_V110 = $20000000; // @constdefine TBD
+ RIL_CAPS_SPEED1_48000_V120 = $40000000; // @constdefine TBD
+ RIL_CAPS_SPEED1_56000_V110 = $80000000; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Caps Bearer Speed2 | Bearer service speed capabilities (second set)
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CAPS_SPEED2_56000_V120 = $00000001; // @constdefine TBD
+ RIL_CAPS_SPEED2_56000_TRANSP = $00000002; // @constdefine TBD
+ RIL_CAPS_SPEED2_64000_TRANSP = $00000004; // @constdefine TBD
+ RIL_CAPS_SPEED2_32000_PIAFS32K = $00000008; // @constdefine TBD
+ RIL_CAPS_SPEED2_64000_PIAFS64K = $00000010; // @constdefine TBD
+ RIL_CAPS_SPEED2_28800_MULTIMEDIA = $00000020; // @constdefine TBD
+ RIL_CAPS_SPEED2_32000_MULTIMEDIA = $00000040; // @constdefine TBD
+ RIL_CAPS_SPEED2_33600_MULTIMEDIA = $00000080; // @constdefine TBD
+ RIL_CAPS_SPEED2_56000_MULTIMEDIA = $00000100; // @constdefine TBD
+ RIL_CAPS_SPEED2_64000_MULTIMEDIA = $00000200; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Caps Bearer Name | Bearer service name capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CAPS_BSVCNAME_DATACIRCUIT_ASYNC_UDI_MODEM = $00000001; // @constdefine TBD
+ RIL_CAPS_BSVCNAME_DATACIRCUIT_SYNC_UDI_MODEM = $00000002; // @constdefine TBD
+ RIL_CAPS_BSVCNAME_PADACCESS_ASYNC_UDI = $00000004; // @constdefine TBD
+ RIL_CAPS_BSVCNAME_PACKETACCESS_SYNC_UDI = $00000008; // @constdefine TBD
+ RIL_CAPS_BSVCNAME_DATACIRCUIT_ASYNC_RDI = $00000010; // @constdefine TBD
+ RIL_CAPS_BSVCNAME_DATACIRCUIT_SYNC_RDI = $00000020; // @constdefine TBD
+ RIL_CAPS_BSVCNAME_PADACCESS_ASYNC_RDI = $00000040; // @constdefine TBD
+ RIL_CAPS_BSVCNAME_PACKETACCESS_SYNC_RDI = $00000080; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Bearer CE | Bearer service connection element capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CAPS_BSVCCE_TRANSPARENT = $00000001; // @constdefine TBD
+ RIL_CAPS_BSVCCE_NONTRANSPARENT = $00000002; // @constdefine TBD
+ RIL_CAPS_BSVCCE_BOTH_TRANSPARENT = $00000004; // @constdefine TBD
+ RIL_CAPS_BSVCCE_BOTH_NONTRANSPARENT = $00000008; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Caps Equipment | Equipment state capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CAPS_EQSTATE_MINIMUM = $00000001; // @constdefine TBD
+ RIL_CAPS_EQSTATE_FULL = $00000002; // @constdefine TBD
+ RIL_CAPS_EQSTATE_DISABLETX = $00000004; // @constdefine TBD
+ RIL_CAPS_EQSTATE_DISABLERX = $00000008; // @constdefine TBD
+ RIL_CAPS_EQSTATE_DISABLETXANDRX = $00000010; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Caps Phonebook | Phonebook storage location capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CAPS_PBLOC_SIMEMERGENCY = $00000001; // @constdefine TBD
+ RIL_CAPS_PBLOC_SIMFIXDIALING = $00000002; // @constdefine TBD
+ RIL_CAPS_PBLOC_SIMLASTDIALING = $00000004; // @constdefine TBD
+ RIL_CAPS_PBLOC_OWNNUMBERS = $00000008; // @constdefine TBD
+ RIL_CAPS_PBLOC_SIMPHONEBOOK = $00000010; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Caps Message Service | Message service type capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CAPS_MSGSVCTYPE_PHASE2 = $00000001; // @constdefine TBD
+ RIL_CAPS_MSGSVCTYPE_PHASE2PLUS = $00000002; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Caps Message Storage | Message storage location capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CAPS_MSGLOC_BROADCAST = $00000001; // @constdefine TBD
+ RIL_CAPS_MSGLOC_SIM = $00000002; // @constdefine TBD
+ RIL_CAPS_MSGLOC_STATUSREPORT = $00000004; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Caps DCS Language | Message broadcast data coding scheme language capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CAPS_DCSLANG_GERMAN = RIL_DCSLANG_GERMAN; // @constdefine TBD
+ RIL_CAPS_DCSLANG_ENGLISH = RIL_DCSLANG_ENGLISH; // @constdefine TBD
+ RIL_CAPS_DCSLANG_ITALIAN = RIL_DCSLANG_ITALIAN; // @constdefine TBD
+ RIL_CAPS_DCSLANG_FRENCH = RIL_DCSLANG_FRENCH; // @constdefine TBD
+ RIL_CAPS_DCSLANG_SPANISH = RIL_DCSLANG_SPANISH; // @constdefine TBD
+ RIL_CAPS_DCSLANG_DUTCH = RIL_DCSLANG_DUTCH; // @constdefine TBD
+ RIL_CAPS_DCSLANG_SWEDISH = RIL_DCSLANG_SWEDISH; // @constdefine TBD
+ RIL_CAPS_DCSLANG_DANISH = RIL_DCSLANG_DANISH; // @constdefine TBD
+ RIL_CAPS_DCSLANG_PORTUGUESE = RIL_DCSLANG_PORTUGUESE; // @constdefine TBD
+ RIL_CAPS_DCSLANG_FINNISH = RIL_DCSLANG_FINNISH; // @constdefine TBD
+ RIL_CAPS_DCSLANG_NORWEGIAN = RIL_DCSLANG_NORWEGIAN; // @constdefine TBD
+ RIL_CAPS_DCSLANG_GREEK = RIL_DCSLANG_GREEK; // @constdefine TBD
+ RIL_CAPS_DCSLANG_TURKISH = RIL_DCSLANG_TURKISH; // @constdefine TBD
+ RIL_CAPS_DCSLANG_HUNGARIAN = RIL_DCSLANG_HUNGARIAN; // @constdefine TBD
+ RIL_CAPS_DCSLANG_POLISH = RIL_DCSLANG_POLISH; // @constdefine TBD
+ RIL_CAPS_DCSLANG_CZECH = RIL_DCSLANG_CZECH; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Caps Message Status | Message status capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CAPS_MSGSTATUS_RECUNREAD = $00000001; // @constdefine TBD
+ RIL_CAPS_MSGSTATUS_RECREAD = $00000002; // @constdefine TBD
+ RIL_CAPS_MSGSTATUS_STOUNSENT = $00000004; // @constdefine TBD
+ RIL_CAPS_MSGSTATUS_STOSENT = $00000008; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Caps SIM | SIM capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CAPS_SIM_NONE = $00000000; // @constdefine TBD
+ RIL_CAPS_SIM_BASIC = $00000001; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Caps Phone Lock | Locking faciliy capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CAPS_LOCKFACILITY_NONE = $00000000; // @constdefine TBD
+ RIL_CAPS_LOCKFACILITY_CNTRL = $00000001; // @constdefine TBD
+ RIL_CAPS_LOCKFACILITY_PH_SIM = $00000002; // @constdefine TBD
+ RIL_CAPS_LOCKFACILITY_PH_FSIM = $00000004; // @constdefine TBD
+ RIL_CAPS_LOCKFACILITY_SIM = $00000008; // @constdefine TBD
+ RIL_CAPS_LOCKFACILITY_SIM_PIN2 = $00000010; // @constdefine TBD
+ RIL_CAPS_LOCKFACILITY_SIM_FIXEDIALING = $00000020; // @constdefine TBD
+ RIL_CAPS_LOCKFACILITY_NETWORKPERS = $00000040; // @constdefine TBD
+ RIL_CAPS_LOCKFACILITY_NETWORKSUBPERS = $00000080; // @constdefine TBD
+ RIL_CAPS_LOCKFACILITY_SERVICEPROVPERS = $00000100; // @constdefine TBD
+ RIL_CAPS_LOCKFACILITY_CORPPERS = $00000200; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Caps Call Barr | Call barring capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CAPS_BARRTYPE_ALLOUTGOING = $00000001; // @constdefine TBD
+ RIL_CAPS_BARRTYPE_OUTGOINGINT = $00000002; // @constdefine TBD
+ RIL_CAPS_BARRTYPE_OUTGOINGINTEXTOHOME = $00000004; // @constdefine TBD
+ RIL_CAPS_BARRTYPE_ALLINCOMING = $00000008; // @constdefine TBD
+ RIL_CAPS_BARRTYPE_INCOMINGROAMING = $00000010; // @constdefine TBD
+ RIL_CAPS_BARRTYPE_INCOMINGNOTINSIM = $00000020; // @constdefine TBD
+ RIL_CAPS_BARRTYPE_ALLBARRING = $00000040; // @constdefine TBD
+ RIL_CAPS_BARRTYPE_ALLOUTGOINGBARRING = $00000080; // @constdefine TBD
+ RIL_CAPS_BARRTYPE_ALLINCOMINGBARRING = $00000100; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Caps Forwarding | Forwarding reason capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CAPS_FWDREASON_UNCONDITIONAL = $00000001; // @constdefine TBD
+ RIL_CAPS_FWDREASON_MOBILEBUSY = $00000002; // @constdefine TBD
+ RIL_CAPS_FWDREASON_NOREPLY = $00000004; // @constdefine TBD
+ RIL_CAPS_FWDREASON_UNREACHABLE = $00000008; // @constdefine TBD
+ RIL_CAPS_FWDREASON_ALLFORWARDING = $00000010; // @constdefine TBD
+ RIL_CAPS_FWDREASON_ALLCONDITIONAL = $00000020; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Caps Info Class | Telephony information class capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CAPS_INFOCLASS_VOICE = RIL_INFOCLASS_VOICE; // @constdefine TBD
+ RIL_CAPS_INFOCLASS_DATA = RIL_INFOCLASS_DATA; // @constdefine TBD
+ RIL_CAPS_INFOCLASS_FAX = RIL_INFOCLASS_FAX; // @constdefine TBD
+ RIL_CAPS_INFOCLASS_SMS = RIL_INFOCLASS_SMS; // @constdefine TBD
+ RIL_CAPS_INFOCLASS_DATACIRCUITSYNC = RIL_INFOCLASS_DATACIRCUITSYNC; // @constdefine TBD
+ RIL_CAPS_INFOCLASS_DATACIRCUITASYNC = RIL_INFOCLASS_DATACIRCUITASYNC; // @constdefine TBD
+ RIL_CAPS_INFOCLASS_PACKETACCESS = RIL_INFOCLASS_PACKETACCESS; // @constdefine TBD
+ RIL_CAPS_INFOCLASS_PADACCESS = RIL_INFOCLASS_PADACCESS; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Caps HSCSD Traffic Channel | HSCSD traffic channel coding capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CAPS_HSCSDCODING_4800_FULLRATE = RIL_HSCSDCODING_4800_FULLRATE; // @constdefine TBD
+ RIL_CAPS_HSCSDCODING_9600_FULLRATE = RIL_HSCSDCODING_9600_FULLRATE; // @constdefine TBD
+ RIL_CAPS_HSCSDCODING_14400_FULLRATE = RIL_HSCSDCODING_14400_FULLRATE; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Caps HSCSD Air Interface | HSCSD air interface user rate capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CAPS_HSCSDAIURATE_9600 = $00000001; // @constdefine TBD
+ RIL_CAPS_HSCSDAIURATE_14400 = $00000002; // @constdefine TBD
+ RIL_CAPS_HSCSDAIURATE_19200 = $00000004; // @constdefine TBD
+ RIL_CAPS_HSCSDAIURATE_28800 = $00000008; // @constdefine TBD
+ RIL_CAPS_HSCSDAIURATE_38400 = $00000010; // @constdefine TBD
+ RIL_CAPS_HSCSDAIURATE_43200 = $00000020; // @constdefine TBD
+ RIL_CAPS_HSCSDAIURATE_57600 = $00000040; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Caps SIM Toolkit | SIM Toolkit notification capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CAPS_NOTIFY_SIMTOOLKITCMD = $00000001; // @constdefine TBD
+ RIL_CAPS_NOTIFY_SIMTOOLKITCALLSETUP = $00000002; // @constdefine TBD
+ RIL_CAPS_NOTIFY_SIMTOOLKITEVENT = $00000004; // @constdefine TBD
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Caps Signal Implemetation Quality | Signal Quality Implemetation Capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CAPS_SIGNALQUALITY_NOTIFICATION = $00000001; // @constdefine The Radio Module can deliver unsolicited Signal Quality Notifications
+ RIL_CAPS_SIGNALQUALITY_POLLING = $00000002; // @constdefine The Higher layers can poll the radio module in order to get the Signal Quality
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Caps Radio Notificaiton Implemetation | Radio Notificaiton Implemetation Capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CAPS_NOTIFICATION_CALLLIST = $00000001; // @constdefine The Radio Module can deliver unsolicited notifications of call list information
+ RIL_CAPS_NOTIFICATION_LINESTATUS = $00000002; // @constdefine The Radio Module can deliver unsolicited notifications of line status
+ RIL_CAPS_NOTIFICATION_SIGNALQUALITY = $00000004; // @constdefine The Radio Module can deliver unsolicited notifications of signal quality
+ RIL_CAPS_NOTIFICATION_BEARERSERVICEOPTIONS = $00000008; // @constdefine The Radio Module can deliver unsolicited notifications of bearer service options
+ RIL_CAPS_NOTIFICATION_DATACOMPRESSION = $00000010; // @constdefine The Radio Module can deliver unsolicited notifications of data compression
+ RIL_CAPS_NOTIFICATION_EQUIPMENTSTATE = $00000020; // @constdefine The Radio Module can deliver unsolicited notifications of equipment state
+ RIL_CAPS_NOTIFICATION_ERRORCORRECTION = $00000040; // @constdefine The Radio Module can deliver unsolicited notifications of error correction
+ RIL_CAPS_NOTIFICATION_GPRSADDRESS = $00000080; // @constdefine The Radio Module can deliver unsolicited notifications of GPRS address
+ RIL_CAPS_NOTIFICATION_GPRSATTACHED = $00000100; // @constdefine The Radio Module can deliver unsolicited notifications of GPRS attached status
+ RIL_CAPS_NOTIFICATION_GPRSCONTEXTLIST = $00000200; // @constdefine The Radio Module can deliver unsolicited notifications of GPRS context list
+ RIL_CAPS_NOTIFICATION_GPRSCONTEXTACTIVATEDLIST = $00000400; // @constdefine The Radio Module can deliver unsolicited notifications of GPRS context activated list
+ RIL_CAPS_NOTIFICATION_GPRSREGISTRATIONSTATUS = $00000800; // @constdefine The Radio Module can deliver unsolicited notifications of GPRS registration status
+ RIL_CAPS_NOTIFICATION_MINIMUMQUALITYOFSERVICELIST = $00001000; // @constdefine The Radio Module can deliver unsolicited notifications of minimum QoS list
+ RIL_CAPS_NOTIFICATION_REGISTRATIONSTATUS = $00002000; // @constdefine The Radio Module can deliver unsolicited notifications of registration status
+ RIL_CAPS_NOTIFICATION_REQUESTEDQUALITYOFSERVICELIST = $00004000; // @constdefine The Radio Module can deliver unsolicited notifications of requested QoS list
+ RIL_CAPS_NOTIFICATION_RLPOPTIONS = $00008000; // @constdefine The Radio Module can deliver unsolicited notifications of RLP options
+
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Caps Radio Notificaiton Implemetation Registry Key | Radio Notificaiton Implemetation Capabilities Registry Key
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CAPS_NOTIFICATION_KEY = 'Comm\Cellular\RIL';
+ RIL_CAPS_NOTIFICATION_IMPL_PARAMS = 'CapsNotificationImplParams';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Maximum size | Maximum size for a call list returned from radio
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CALLLIST_MAXSIZE = 10;
+
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Maximum size | Maximum size for a GPRS context list returned from radio
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_GPRSCONTEXTLIST_MAXSIZE = 10;
+
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Maximum size | Maximum size for a GPRS context activated list returned from radio
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_GPRSCONTEXTACTIVATEDLIST_MAXSIZE = 10;
+
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Maximum size | Maximum size for a QoS list returned from radio
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_QOSLIST_MAXSIZE = 10;
+
+
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants Maximum lengths | Maximum lengths for string parameters
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ MAXLENGTH_ADDRESS = 256; // @constdefine 256
+ MAXLENGTH_SUBADDR = 256; // @constdefine 256
+ MAXLENGTH_DESCRIPTION = 256; // @constdefine 256
+ MAXLENGTH_OPERATOR = 32; // @constdefine 32
+ MAXLENGTH_OPERATOR_LONG = 32; // @constdefine 32
+ MAXLENGTH_OPERATOR_SHORT = 16; // @constdefine 16
+ MAXLENGTH_OPERATOR_NUMERIC = 16; // @constdefine 16
+ MAXLENGTH_OPERATOR_COUNTRY_CODE = 8; // @constdefine 8
+ MAXLENGTH_SERVCTR = 256; // @constdefine 256
+ MAXLENGTH_PASSWORD = 256; // @constdefine 256
+ MAXLENGTH_ERRSHORT = 256; // @constdefine 256
+ MAXLENGTH_ERRLONG = 256; // @constdefine 256
+ MAXLENGTH_EQUIPINFO = 128; // @constdefine 128
+ MAXLENGTH_PHONEBOOKADDR = 256; // @constdefine 256
+ MAXLENGTH_PHONEBOOKTEXT = 256; // @constdefine 256
+ MAXLENGTH_CURRENCY = 256; // @constdefine 256
+ MAXLENGTH_AREAID = 256; // @constdefine 256
+ MAXLENGTH_CELLID = 256; // @constdefine 256
+ MAXLENGTH_HDR = 256; // @constdefine 256
+ MAXLENGTH_MSG = 256; // @constdefine 256
+ MAXLENGTH_CMD = 256; // @constdefine 256
+ MAXLENGTH_MSGIDS = 256; // @constdefine 256
+ MAXLENGTH_USERID = 256; // @constdefine 256
+ MAXLENGTH_DTMF = 256; // @constdefine 256
+ MAXLENGTH_GPRSADDRESS = 64; // @constdefine 64
+ MAXLENGTH_GPRSACCESSPOINTNAME = 64; // @constdefine 64
+ MAXLENGTH_BCCH = 48; // @constdefine 48
+ MAXLENGTH_NMR = 16; // @constdefine 16
+ MAXLENGTH_ATR = 33; // @constdefine 33
+ MAXLENGTH_RADIOLOG = 128; // @constdefine 128
+ MAXLENGTH_CALLTYPEKEY = 128; // @constdefine 128
+ MAXLENGTH_MMISTRING = 256; // @constdefine 256
+
+//
+// Registry path and variable defintions
+//
+const
+ RIL_REGISTRY_ROOT = HKEY_LOCAL_MACHINE;
+ RIL_SECURE_REGISTRY_KEY = 'Comm\Cellular\Ril';
+ RIL_REGISTRY_VALUE_PDPCONTEXTS = 'Contexts';
+ RIL_REGISTRY_VALUE_PACKETIO = 'Packet';
+ RIL_REGISTRY_VALUE_WAITFORGPRSDEACTRESPONSE = 'WaitForDeactRsp';
+ RIL_REGISTRY_VALUE_EONSENABLED = 'EONSEnabled';
+
+//
+// Event logging registry definitions
+//
+const
+ CELLULAR_REGISTRYKEY_EVENTLOGGING = 'Comm\Cellular\EventLogging';
+ CELLULAR_REGISTRYVALUE_EVENTLOGGING_ENABLED = 'Enabled';
+ CELLULAR_REGISTRYVALUE_EVENTLOGGING_SOURCENAME = 'Source';
+
+//
+// Data types
+//
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILADDRESS | Represents a phone number
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ riladdress_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwType:DWORD; // @field type of number
+ dwNumPlan:DWORD; // @field numbering plan
+ wszAddress:array[0..MAXLENGTH_ADDRESS-1] of WCHAR; // @field address (min 3, max 43)
+ end;
+ RILADDRESS = riladdress_tag;
+ LPRILADDRESS = ^riladdress_tag;
+
+
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILSUBADDRESS | The subaddress of a called party
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilsubaddress_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwType:DWORD; // @field type of subaddress
+ wszSubAddress:array[0..MAXLENGTH_SUBADDR-1] of WCHAR; // @field subaddress (min 2, max 23)
+ end;
+ RILSUBADDRESS = rilsubaddress_tag;
+ LPRILSUBADDRESS = ^rilsubaddress_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILSERIALPORTSTATS | Statistics of the virtual serial port
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilserialportstats_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwReadBitsPerSecond:DWORD; // @field bit rate for reading data
+ dwWrittenBitsPerSecond:DWORD; // @field bit rate for writing data
+ end;
+ RILSERIALPORTSTATS = rilserialportstats_tag;
+ LPRILSERIALPORTSTATS = ^rilserialportstats_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILSUBSCRIBERINFO | A phone number assigned to the user
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilsubscriberinfo_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ raAddress:RILADDRESS; // @field the assigned address
+ wszDescription:array[0..MAXLENGTH_DESCRIPTION-1] of WCHAR; // @field text relating to this subscriber
+ dwSpeed:DWORD; // @field data rate related to this number
+ dwService:DWORD; // @field the service related to this number
+ dwITC:DWORD; // @field information transfer capability
+ dwAddressId:DWORD; // @field the address ID of this number
+ end;
+ RILSUBSCRIBERINFO = rilsubscriberinfo_tag;
+ LPRILSUBSCRIBERINFO = ^rilsubscriberinfo_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILOPERATORNAMES | The different representations of an operator
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ riloperatornames_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ szLongName:array[0..MAXLENGTH_OPERATOR_LONG-1] of AnsiChar; // @field long representation (max 16 characters)
+ szShortName:array[0..MAXLENGTH_OPERATOR_SHORT-1] of AnsiChar; // @field short representation (max 8 characters)
+ szNumName:array[0..MAXLENGTH_OPERATOR_NUMERIC-1] of AnsiChar; // @field numeric representation (3 digit country code & 2 digit network code)
+ szCountryCode:array[0..MAXLENGTH_OPERATOR_COUNTRY_CODE-1] of AnsiChar; // @field 2 character ISO 3166 country repesentation of the MCC
+ end;
+ RILOPERATORNAMES = riloperatornames_tag;
+ LPRILOPERATORNAMES = ^riloperatornames_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILOPERATORINFO | Indicates status of a particular operator
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ riloperatorinfo_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwIndex:DWORD; // @field index, if applicable
+ dwStatus:DWORD; // @field registration status, if applicable
+ ronNames:RILOPERATORNAMES; // @field representations of an operator
+ end;
+ RILOPERATORINFO = riloperatorinfo_tag;
+ LPRILOPERATORINFO = ^riloperatorinfo_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILCALLERIDSETTINGS | Caller ID settings
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilcalleridsettings_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwStatus:DWORD; // @field activation status
+ dwProvisioning:DWORD; // @field network provisioning status
+ end;
+ RILCALLERIDSETTINGS = rilcalleridsettings_tag;
+ LPRILCALLERIDSETTINGS = ^rilcalleridsettings_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILHIDEIDSETTINGS | Hide ID settings
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilhideidsettings_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwStatus:DWORD; // @field activation status
+ dwProvisioning:DWORD; // @field network provisioning status
+ end;
+ RILHIDEIDSETTINGS = rilhideidsettings_tag;
+ LPRILHIDEIDSETTINGS = ^rilhideidsettings_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILDIALEDIDSETTINGS | Dialed ID settings
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rildialedidsettings_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwStatus:DWORD; // @field activation status
+ dwProvisioning:DWORD; // @field network provisioning status
+ end;
+ RILDIALEDIDSETTINGS = rildialedidsettings_tag;
+ LPRILDIALEDIDSETTINGS = ^rildialedidsettings_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILHIDECONNECTEDIDSETTINGS | Hide Connected ID settings
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilhideconnectedidsettings_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwStatus:DWORD; // @field activation status
+ dwProvisioning:DWORD; // @field network provisioning status
+ end;
+ RILHIDECONNECTEDIDSETTINGS = rilhideconnectedidsettings_tag;
+ LPRILHIDECONNECTEDIDSETTINGS = ^rilhideconnectedidsettings_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILCLOSEDGROUPSETTINGS | Close user group settings
+//
+// @comm This feature is not used and is untested.
+//
+// -----------------------------------------------------------------------------
+type
+ rilclosedgroupsettings_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwStatus:DWORD; // @field activation status
+ dwIndex:DWORD; // @field CUG index
+ dwInfo:DWORD; // @field additional CUG flags
+ end;
+ RILCLOSEDGROUPSETTINGS = rilclosedgroupsettings_tag;
+ LPRILCLOSEDGROUPSETTINGS = ^rilclosedgroupsettings_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILCALLFORWARDINGSETTING | Call forwarding service settings
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilcallforwardingsettings_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwStatus:DWORD; // @field activation status
+ dwInfoClasses:DWORD; // @field indicates which classes of calls to forward
+ raAddress:RILADDRESS; // @field forwarding address
+ rsaSubAddress:RILSUBADDRESS; // @field forwarding subaddress
+ dwDelayTime:DWORD; // @field seconds to wait in <def RIL_FWDREASON_NOREPLY> case
+ end;
+ RILCALLFORWARDINGSETTINGS = rilcallforwardingsettings_tag;
+ LPRILCALLFORWARDINGSETTINGS = ^rilcallforwardingsettings_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILCALLINFO | Information about a specific call
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilcallinfo_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwID:DWORD; // @field identifies each call
+ dwDirection:DWORD; // @field incoming or outgoing
+ dwStatus:DWORD; // @field properties of the call
+ dwType:DWORD; // @field voice or data or fax
+ dwMultiparty:DWORD; // @field conference call status
+ raAddress:RILADDRESS; // @field call address
+ wszDescription:array[0..MAXLENGTH_DESCRIPTION-1] of WCHAR; // @field any associated text
+ dwDisconnectCode:DWORD; // if dwStatus is disconnected - this contains the reason
+ end;
+ RILCALLINFO = rilcallinfo_tag;
+ LPRILCALLINFO = ^rilcallinfo_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILGAININFO | Audio gain information
+//
+// @comm The minimum and maximum values for both dwTxGain and dwRxGain
+// are 0 and ULONG_MAX (that is, 0xFFFFFFFFUL; see limits.h).
+// Values between these extremes scale linearly.
+//
+// It is the RIL Driver's responsibility to scale these values
+// to match whatever is appropriate for the corresponding radio.
+// So for example, if a radio's gain range is from 0 to 0x1F,
+// the RIL Driver should interpret 0xFFFFFFFF as 0x1F, and map
+// intermediate values proportionately.
+//
+// -----------------------------------------------------------------------------
+type
+ rilgaininfo_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwTxGain:DWORD; // @field transmit gain level (128 nominal, 0 automatic)
+ dwRxGain:DWORD; // @field receive gain level (128 nominal, 0 automatic)
+ end;
+ RILGAININFO = rilgaininfo_tag;
+ LPRILGAININFO = ^rilgaininfo_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILAUDIODEVICEINFO | Audio device information
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilaudiodeviceinfo_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwTxDevice:DWORD; // @field transmit device
+ dwRxDevice:DWORD; // @field receive device
+ end;
+ RILAUDIODEVICEINFO = rilaudiodeviceinfo_tag;
+ LPRILAUDIODEVICEINFO = ^rilaudiodeviceinfo_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILHSCSDINFO | High speed circuit switched data settings
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilhscsdinfo_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwTranspRxTimeslots:DWORD; // @field number of receive timeslots for transparent HSCSD calls
+ dwTranspChannelCodings:DWORD; // @field accepted channel codings for transparent HSCSD calls
+ dwNonTranspRxTimeslots:DWORD; // @field number of receive timeslots for non-transparent HSCSD calls
+ dwNonTranspChannelCodings:DWORD; // @field accepted channel codings for non-transparent HSCSD calls
+ dwAirInterfaceUserRate:DWORD; // @field air interface user rate for non-transparent HSCSD calls
+ dwRxTimeslotsLimit:DWORD; // @field maximum number of receive timeslots to be used during the next non-transparent HSCSD call
+ fAutoSvcLevelUpgrading:BOOL; // @field TRUE if automatic user-initiated service level upgrading for non-transparent HSCSD calls is enabled, FALSE otherwise
+ end;
+ RILHSCSDINFO = rilhscsdinfo_tag;
+ LPRILHSCSDINFO = ^rilhscsdinfo_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILCALLHSCSDINFO | High speed circuit switched data information for the current call
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilcallhscsdinfo_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwRxTimeslots:DWORD; // @field number of receive timeslots currently in use
+ dwTxTimeslots:DWORD; // @field number of transmit timeslots currently in use
+ dwAirInterfaceUserRate:DWORD; // @field air interface user rate currently in use
+ dwChannelCoding:DWORD; // @field current channel coding
+ end;
+ RILCALLHSCSDINFO = rilcallhscsdinfo_tag;
+ LPRILCALLHSCSDINFO = ^rilcallhscsdinfo_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILDATACOMPINFO | Data compression settings
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rildatacompinfo_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwDirection:DWORD; // @field compression in transmit and/or receive direcitons
+ dwNegotiation:DWORD; // @field compression is required or optional
+ dwMaxDictEntries:DWORD; // @field maximum number of dictionary entries
+ dwMaxStringLength:DWORD; // @field maximum string length
+ end;
+ RILDATACOMPINFO = rildatacompinfo_tag;
+ LPRILDATACOMPINFO = ^rildatacompinfo_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILERRORCORRECTIONINFO | Error correction settings
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilerrorcorrectioninfo_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwOriginalRequest:DWORD; // @field TBD
+ dwOriginalFallback:DWORD; // @field TBD
+ dwAnswererFallback:DWORD; // @field TBD
+ end;
+ RILERRORCORRECTIONINFO = rilerrorcorrectioninfo_tag;
+ LPRILERRORCORRECTIONINFO = ^rilerrorcorrectioninfo_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILBEARERSVCINFO | Bearer service settings
+//
+// @comm For <def RIL_BSVCCE_BOTH_> constants, the subsequent text indicates the
+// preferred connection element. For instance, <def RIL_BSVCCE_BOTH_TRANSPARENT>
+// means that both transparent and non transparent are supported, but transparent
+// is preferred.
+//
+// -----------------------------------------------------------------------------
+type
+ rilbearersvcinfo_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwSpeed:DWORD; // @field offered data speed (protocol dependant)
+ dwServiceName:DWORD; // @field type of data service
+ dwConnectionElement:DWORD; // @field indicates transparent or non-transparent connection
+ end;
+ RILBEARERSVCINFO = rilbearersvcinfo_tag;
+ LPRILBEARERSVCINFO = ^rilbearersvcinfo_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILRLPINFO | Radio link protocol settings
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+//
+type
+ rilrlpinfo_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwIWS:DWORD; // @field IWF-to-MS window size
+ dwMWS:DWORD; // @field MS-to-IWF window size
+ dwAckTimer:DWORD; // @field acknowledgement timer in 10s of milliseconds (T1)
+ dwRetransmissionAttempts:DWORD; // @field number of retransmission attempts (N2)
+ dwVersion:DWORD; // @field RLP version number
+ dwResequencingPeriod:DWORD; // @field resequencing period (T4)
+ end;
+ RILRLPINFO = rilrlpinfo_tag;
+ LPRILRLPINFO = ^rilrlpinfo_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILMSGSERVICEINFO | Messaging service settings
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilmsgserviceinfo_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwService:DWORD; // @field supported service types
+ dwMsgClasses:DWORD; // @field supported message classes
+ dwReadLocation:DWORD; // @field currect read location
+ dwReadUsed:DWORD; // @field number of fields used
+ dwReadTotal:DWORD; // @field total number of fields
+ dwWriteLocation:DWORD; // @field currect read location
+ dwWriteUsed:DWORD; // @field number of fields used
+ dwWriteTotal:DWORD; // @field total number of fields
+ dwStoreLocation:DWORD; // @field currect read location
+ dwStoreUsed:DWORD; // @field number of fields used
+ dwStoreTotal:DWORD; // @field total number of fields
+ end;
+ RILMSGSERVICEINFO = rilmsgserviceinfo_tag;
+ LPRILMSGSERVICEINFO = ^rilmsgserviceinfo_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILMSGDCS | Message data coding scheme
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilmsgdcs_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwType:DWORD; // @field DCS type
+ dwFlags:DWORD; // @field DCS flags
+ dwMsgClass:DWORD; // @field message class (Only for RIL_DCSTYPE_GENERAL and RIL_DCSTYPE_MSGCLASS)
+ dwAlphabet:DWORD; // @field DCS alphabet
+ dwIndication:DWORD; // @field indication (Only for RIL_DCSTYPE_MSGWAIT)
+ dwLanguage:DWORD; // @field indication (Only for RIL_DCSTYPE_LANGUAGE)
+ end;
+ RILMSGDCS = rilmsgdcs_tag;
+ LPRILMSGDCS = ^rilmsgdcs_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILRANGE | Range of values
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilrange_tag = record
+ dwMinValue:DWORD; // @field minimum value
+ dwMaxValue:DWORD; // @field maximum value
+ end;
+ RILRANGE = rilrange_tag;
+ LPRILRANGE = ^rilrange_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILMSGCONFIG | Messaging configuration
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilmsgconfig_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ raSvcCtrAddress:RILADDRESS; // @field service center address
+ end;
+ RILMSGCONFIG = rilmsgconfig_tag;
+ LPRILMSGCONFIG = ^rilmsgconfig_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILCBMSGCONFIG | Cell broadcast messaging configuration
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+//#pragma warning(disable : 4200) // Disable "C4200: nonstandard extension used : zero-sized array in struct/union"
+type
+ rilcbmsgconfig_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwBroadcastMsgLangs:DWORD; // @field broadcast message languages
+ fAccept:BOOL; // @field TRUE if broadcast message ranges are accepted (vs. rejected)
+ rgrrBroadcastMsgIDs:array[0..0] of RILRANGE; // @field an array of RILRANGE IDs to set, a same min/max value specifies a single ID
+ end;
+ RILCBMSGCONFIG = rilcbmsgconfig_tag;
+ LPRILCBMSGCONFIG = ^rilcbmsgconfig_tag;
+//#pragma warning(default : 4200)
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILMESSAGE | Message data
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+// @field RIL_MSGTYPE_IN_DELIVER
+ TmsgInDeliver = record
+ raOrigAddress:RILADDRESS; // @field originating address
+ dwProtocolID:DWORD; // @field message protocol
+ rmdDataCoding:RILMSGDCS; // @field data coding scheme
+ stSCReceiveTime:SYSTEMTIME; // @field receive time (UTC)
+ cbHdrLength:DWORD; // @field length of header in bytes
+ cchMsgLength:DWORD; // @field length of body in bytes
+ rgbHdr:array[0..MAXLENGTH_HDR-1] of byte; // @field header buffer
+ rgbMsg:array[0..MAXLENGTH_MSG-1] of byte; // @field body buffer
+ end;
+
+// @field RIL_MSGTYPE_IN_STATUS
+ TmsgInStatus = record
+ dwTgtMsgReference:DWORD; // @field target message reference
+ raTgtRecipAddress:RILADDRESS; // @field receipient address
+ stTgtSCReceiveTime:SYSTEMTIME; // @field receipient receive time (UTC)
+ stTgtDischargeTime:SYSTEMTIME; // @field receipient dischage time (UTC)
+ dwTgtDlvStatus:DWORD; // @field delivery status
+ dwProtocolID:DWORD; // @field message protocol
+ rmdDataCoding:RILMSGDCS; // @field data coding scheme
+ cbHdrLength:DWORD; // @field length of header in bytes
+ cchMsgLength:DWORD; // @field length of body in bytes
+ rgbHdr:array[0..MAXLENGTH_HDR-1] of byte; // @field header buffer
+ rgbMsg:array[0..MAXLENGTH_MSG-1] of byte; // @field body buffer
+ end;
+
+// @field RIL_MSGTYPE_OUT_SUBMIT
+ TmsgOutSubmit = record
+ raDestAddress:RILADDRESS; // @field destination address
+ dwProtocolID:DWORD; // @field message protocol
+ rmdDataCoding:RILMSGDCS; // @field data coding scheme
+ dwVPFormat:DWORD; // @field TBD
+ stVP:SYSTEMTIME; // @field relative validity period (values are expressed relative to the current time)
+ cbHdrLength:DWORD; // @field length of header in bytes
+ cchMsgLength:DWORD; // @field length of body in bytes
+ rgbHdr:array[0..MAXLENGTH_HDR-1] of byte; // @field header buffer
+ rgbMsg:array[0..MAXLENGTH_MSG-1] of byte; // @field body buffer
+ end;
+
+// @field RIL_MSGTYPE_OUT_COMMAND
+ TmsgOutCommand = record
+ dwProtocolID:DWORD; // @field message protocol
+ dwCommandType:DWORD; // @field command type
+ dwTgtMsgReference:DWORD; // @field target message reference
+ raDestAddress:RILADDRESS; // @field destination address
+ cbCmdLength:DWORD; // @field length of command in bytes
+ rgbCmd:array[0..MAXLENGTH_CMD-1] of byte; // @field command buffer
+ end;
+
+// @field RIL_MSGTYPE_BC_GENERAL
+ TmsgBcGeneral = record
+ dwGeoScope:DWORD; // @field message protocol
+ dwMsgCode:DWORD; // @field message code
+ dwUpdateNumber:DWORD; // @field update number
+ dwID:DWORD; // @field identity
+ rmdDataCoding:RILMSGDCS; // @field data coding scheme
+ dwTotalPages:DWORD; // @field total number of pages
+ dwPageNumber:DWORD; // @field current page number
+ cchMsgLength:DWORD; // @field length of message in bytes
+ rgbMsg:array[0..MAXLENGTH_MSG-1] of byte; // @field message buffer
+ end;
+
+// @field RIL_MSGTYPE_OUT_RAW
+ TmsgOutRaw = record
+ cchMsgLength:DWORD; // @field length of body in bytes
+ rgbMsg:array[0..MAXLENGTH_MSG-1] of byte; // @field message buffer
+ end;
+
+// @field RIL_MSGTYPE_IN_IS637DELIVER
+ TmsgIS637InDeliver = record
+ raOrigAddress:RILADDRESS; // @field originating address
+ rsaOrigSubaddr:RILSUBADDRESS; // @field
+ // There is no digit-mode in incoming message because the driver can convert both of them to ASCII
+
+ stSCReceiveTime:SYSTEMTIME; // @field (SMSC Timestamp) receive time (UTC)
+
+ stValidityPeriodAbs:SYSTEMTIME; // @field UTC time
+ stValidityPeriodRel:SYSTEMTIME; // @field Relative time
+ stDeferredDelTimeAbs:SYSTEMTIME; // @field UTC time
+ stDeferredDelTimeRel:SYSTEMTIME; // @field Relative time
+
+ dwNumMsgs:DWORD; // @field Used for Voicemail only. Indicates the number of Messages on Vmail
+ raCallBackNumber:RILADDRESS; // @field (Only paging and Text -s) user can give a callback number in certain messages
+ dwMsgPriority:DWORD; // @field RIL_MSGPRIORITY_ constant
+ dwMsgPrivacy:DWORD; // @field RIL_MSGPRIVACYCLASS_ constant
+
+ bUserAckRequest:BOOL; // @field 0 = Not Requested; 1 = Requested ; This is an ack from the end user
+ dwMsgDisplayMode:DWORD; // @field RIL_MSGDISPLAYMODE_ constant
+
+ dwTeleservice:DWORD; // @field RIL_MSGTELESERVICE_* Constant[Mandatory]
+
+ dwMsgID:DWORD; // @field [Mandatory] Message ID. (0-65535) (In the WAP architecture each part of a multipart message share the same MsgID)
+ dwMsgLang:DWORD; // @field Under Investigation
+ dwMsgEncoding:DWORD; // @field RIL_MSGCODING_* constant [5 bits] under Investigation
+ cchMsgLength:DWORD; // @field length of body in bytes
+ rgbMsg:array[0..MAXLENGTH_MSG-1] of byte; // @field body buffer
+ end;
+
+// @field RIL_MSGTYPE_OUT_IS637SUBMIT
+ TmsgIS637OutSubmit = record
+ raDestAddress:RILADDRESS; // @field destination address
+ rsaDestSubaddr:RILSUBADDRESS; // @field destination subaddress
+ bDigit:BOOL; // @field specifies if the address in RILADDRESS is 4bit mode (=0) or in 8 bit mode (=1) (should be set to 1 by default)
+
+ stValidityPeriodAbs:SYSTEMTIME; // @field UTC time
+ stValidityPeriodRel:SYSTEMTIME; // @field Relative time
+ stDeferredDelTimeAbs:SYSTEMTIME; // @field UTC time
+ stDeferredDelTimeRel:SYSTEMTIME; // @field Relative time
+
+ bDeliveryAckRequest:BOOL; // @field 0 = Not Requested; 1 = Requested ; This is an delivery ack (no user confirmation)
+ bUserAckRequest:BOOL; // @field 0 = Not Requested; 1 = Requested ; This is an ack from the end user
+ bBearerReplyRequest:BOOL; // @field specifies the bearer reply field is set (technically this can be set, but it should not be) ; Boolean (0=not set, 1=set)
+ dwReplySeqNumber:DWORD; // @field the Seuqence number of the message bing replied to; (typically the MSGID)
+ dwMsgDisplayMode:DWORD; // @field RIL_MSGDISPLAYMODE_* constant
+
+ raCallBackNumber:RILADDRESS; // @field (Only paging and Text -s) user can give a callback number in certain messages
+
+ dwMsgPriority:DWORD; // @field RIL_MSGPRIORITY_ constant
+ dwMsgPrivacy:DWORD; // @field RIL_MSGPRIVACYCLASS_ constant
+
+ dwTeleservice:DWORD; // @field RIL_MSGTELESERVICE_* Constant[Mandatory]
+
+ dwMsgID:DWORD; // @field [Mandatory] Message ID. (0-65535) (In the WAP architecture each part of a multipart message share the same MsgID)
+ dwMsgLang:DWORD; // @field Under Investigation
+ dwMsgEncoding:DWORD; // @field RIL_MSGCODING_* constant [5 bits] under Investigation
+ cchMsgLength:DWORD; // @field length of body in bytes
+ rgbMsg:array[0..MAXLENGTH_MSG-1] of byte; // @field body buffer
+ end;
+
+// @field RIL_MSGTYPE_IN_IS637STATUS
+ TmsgIS637InStatus = record
+ raOrigAddress:RILADDRESS; // @field originating address
+ rsaOrigSubaddr:RILSUBADDRESS; // @field
+ // There is no digit-mode in incoming message because the driver can convert both of them to ASCII
+
+ stSCReceiveTime:SYSTEMTIME; // @field (SMSC Timestamp) receive time (UTC)
+ dwCauseCode:DWORD; // @field Cause_Codes Under Investigation, most likely these will be implemented as RIL errors
+ dwReplySeqNumber:DWORD; // @field The Sequence number of the message bing replied to; (typically the MSGID)
+ dwUserResponseCode:DWORD; // @field User Response Code (Carrier Specific Element when responding giving a User Ack)
+ dwMsgStatusType:DWORD; // @field type of status message RIL_MSGSTATUSTYPE_* constant
+
+ dwMsgID:DWORD; // @field [Mandatory] Message ID. (0-65535) (In the WAP architecture each part of a multipart message share the same MsgID)
+ dwMsgLang:DWORD; // @field Under Investigation
+ dwMsgEncoding:DWORD; // @field RIL_MSGCODING_* constant [5 bits] under Investigation
+ cchMsgLength:DWORD; // @field length of body in bytes
+ rgbMsg:array[0..MAXLENGTH_MSG-1] of byte; // @field body buffer
+ end;
+
+// @field RIL_MSGTYPE_OUT_IS637STATUS
+ TmsgIS637OutStatus = record
+ raDestAddress:RILADDRESS; // @field destination address
+ rsaDestSubaddr:RILSUBADDRESS; // @field destination subaddress
+ bDigit:BOOL; // @field specifies if the address in RILADDRESS is 4bit mode (=0) or in 8 bit mode (=1) (should be set to 1 by default)
+
+ dwReplySeqNumber:DWORD; // @field The Sequence number of the message bing replied to; (typically the MSGID)
+ dwUserResponseCode:DWORD; // @field User Response Code (Carrier Specific Element when responding giving a User Ack)
+
+ dwMsgID:DWORD; // @field [Mandatory] Message ID. (0-65535) (In the WAP architecture each part of a multipart message share the same MsgID)
+ dwMsgLang:DWORD; // @field Under Investigation
+ dwMsgEncoding:DWORD; // @field RIL_MSGCODING_* constant [5 bits] under Investigation
+ cchMsgLength:DWORD; // @field length of body in bytes
+ rgbMsg:array[0..MAXLENGTH_MSG-1] of byte; // @field body buffer
+ end;
+
+
+ rilmessage_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ raSvcCtrAddress:RILADDRESS; // @field service center address
+ dwType:DWORD; // @field type of message
+ dwFlags:DWORD; // @field message flags
+ case longint of
+ 0: (msgInDeliver:TmsgInDeliver); // @field RIL_MSGTYPE_IN_DELIVER
+ 1: (msgInStatus:TmsgInStatus); // @field RIL_MSGTYPE_IN_STATUS
+ 2: (msgOutSubmit:TmsgOutSubmit); // @field RIL_MSGTYPE_OUT_SUBMIT
+ 3: (msgOutCommand:TmsgOutCommand); // @field RIL_MSGTYPE_OUT_COMMAND
+ 4: (msgBcGeneral:TmsgBcGeneral); // @field RIL_MSGTYPE_BC_GENERAL
+ 5: (msgOutRaw:TmsgOutRaw); // @field RIL_MSGTYPE_OUT_RAW
+ 6: (msgIS637InDeliver:TmsgIS637InDeliver); // @field RIL_MSGTYPE_IN_IS637DELIVER
+ 7: (msgIS637OutSubmit:TmsgIS637OutSubmit); // @field RIL_MSGTYPE_OUT_IS637SUBMIT
+ 8: (msgIS637InStatus:TmsgIS637InStatus); // @field RIL_MSGTYPE_IN_IS637STATUS
+ 9: (msgIS637OutStatus:TmsgIS637OutStatus); // @field End RIL_MSGTYPE_OUT_IS637STATUS
+ end;
+ RILMESSAGE = rilmessage_tag;
+ LPRILMESSAGE = ^rilmessage_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILMESSAGE_IN_SIM | Message data in sim info
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilmessage_in_sim_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD;
+ dwLocation:DWORD; // @field storage area (one of RIL_MSGLOC_xxxx)
+ dwIndex:DWORD; // @field storage index occupied by the message
+ end;
+ RILMESSAGE_IN_SIM = rilmessage_in_sim_tag;
+ LPRILMESSAGE_IN_SIM = ^rilmessage_in_sim_tag;
+
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILMESSAGEINFO | Message data with additional info
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilmessageinfo_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwIndex:DWORD; // @field storage index occupied by the message
+ dwStatus:DWORD; // @field message status
+ rmMessage:RILMESSAGE; // @field the message itself
+ end;
+ RILMESSAGEINFO = rilmessageinfo_tag;
+ LPRILMESSAGEINFO = ^rilmessageinfo_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILEQUIPMENTINFO | Equipment info
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilequipmentinfo_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ szManufacturer:array[0..MAXLENGTH_EQUIPINFO-1] of AnsiChar; // @field manufacturer of the radio hardware
+ szModel:array[0..MAXLENGTH_EQUIPINFO-1] of AnsiChar; // @field model of the radio hardware
+ szRevision:array[0..MAXLENGTH_EQUIPINFO-1] of AnsiChar; // @field software version of the radio stack
+ szSerialNumber:array[0..MAXLENGTH_EQUIPINFO-1] of AnsiChar; // @field equipment identity (IMEI)
+ end;
+ RILEQUIPMENTINFO = rilequipmentinfo_tag;
+ LPRILEQUIPMENTINFO = ^rilequipmentinfo_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILEQUIPMENTSTATE | Equipment state
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilequipmentstate_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwRadioSupport:DWORD; // @field RIL_RADIOSUPPORT_* Parameter
+ dwEqState:DWORD; // @field RIL_EQSTATE_* Parameter
+ dwReadyState:DWORD; // @field RIL_READYSTATE_* Parameter
+ end;
+ RILEQUIPMENTSTATE = rilequipmentstate_tag;
+ LPRILEQUIPMENTSTATE = ^rilequipmentstate_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILPHONEBOOKINFO | Phonebook settings
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilphonebookinfo_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwStoreLocation:DWORD; // @field location of phonebook memory
+ dwUsed:DWORD; // @field number of locations used
+ dwTotal:DWORD; // @field total number of phonebook locations
+ end;
+ RILPHONEBOOKINFO = rilphonebookinfo_tag;
+ LPRILPHONEBOOKINFO = ^rilphonebookinfo_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILPHONEBOOKENTRY | A single phonebook entry
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilphonebookentry_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwIndex:DWORD; // @field index of the entry
+ raAddress:RILADDRESS; // @field the stored address
+ wszText:array[0..MAXLENGTH_PHONEBOOKTEXT-1] of WCHAR; // @field assciated text
+ end;
+ RILPHONEBOOKENTRY = rilphonebookentry_tag;
+ LPRILPHONEBOOKENTRY = ^rilphonebookentry_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILATRINFO | Answer to Reset information
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilatrinfo_tag = record
+ cbSize:DWORD;
+ dwParams:DWORD;
+ dwPhase:DWORD;
+ cbATRSize:DWORD;
+ rgbATR:array[0..MAXLENGTH_ATR-1] of byte;
+ end;
+ RILATRINFO = rilatrinfo_tag;
+ LPRILATRINFO = ^rilatrinfo_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILSIMTOOLKITEVENTCAPS | SIM TOOLKIT EVENT LIST CAPABILITIES
+//
+// @comm This structure indicates who implements the various SIM ToolKit Events
+//
+// -----------------------------------------------------------------------------
+type
+ rilsimtoolkiteventcaps_tag =record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwMTCall:DWORD; // @constdefine TBD
+ dwCallConnected:DWORD; // @constdefine TBD
+ dwCallDisconnected:DWORD; // @constdefine TBD
+ dwLocationStatus:DWORD; // @constdefine TBD
+ dwUserActivity:DWORD; // @constdefine TBD
+ dwIdleScreen:DWORD; // @constdefine TBD
+ dwLanguageSelection:DWORD; // @constdefine TBD
+ dwBrowserTermination:DWORD; // @constdefine TBD
+ dwDataAvailable:DWORD; // @constdefine TBD
+ dwChannelStatus:DWORD; // @constdefine TBD
+ dwDisplayChange:DWORD; // @constdefine TBD
+ end;
+ RILSIMTOOLKITEVENTCAPS = rilsimtoolkiteventcaps_tag;
+ LPRILSIMTOOLKITEVENTCAPS = ^rilsimtoolkiteventcaps_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILSIMTOOLKITNOTIFYCAPS | SIM TOOLKIT NOTIFY CAPABILITIES
+//
+// @comm This structure indicates who implements the various SIM ToolKit Notifications
+//
+// -----------------------------------------------------------------------------
+type
+ rilsimtoolkitnotifycaps_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwRefresh:DWORD; // @constdefine TBD
+ dwMoreTime:DWORD; // @constdefine TBD
+ dwPollInterval:DWORD; // @constdefine TBD
+ dwPollingOff:DWORD; // @constdefine TBD
+ dwSetUpCall:DWORD; // @constdefine TBD
+ dwSendSS:DWORD; // @constdefine TBD
+ dwSendUSSD:DWORD; // @constdefine TBD
+ dwSendSMS:DWORD; // @constdefine TBD
+ dwPlayTone:DWORD; // @constdefine TBD
+ dwDisplayText:DWORD; // @constdefine TBD
+ dwGetInkey:DWORD; // @constdefine TBD
+ dwGetInput:DWORD; // @constdefine TBD
+ dwSelectItem:DWORD; // @constdefine TBD
+ dwSetupMenu:DWORD; // @constdefine TBD
+ dwSetupIdleModeText:DWORD; // @constdefine TBD
+ dwLocalInfo:DWORD; // @constdefine TBD
+ dwNotifyFlags:DWORD; // @combination of RIL_CAPS_NOTIFY_* flags
+ dwSetupEventList:DWORD; // @constdefine TBD
+ dwSendDTMF:DWORD; // @constdefine TBD
+ dwLaunchBrowser:DWORD; // @constdefine TBD
+ dwOpenChannel:DWORD; // @constdefine TBD
+ dwCloseChannel:DWORD; // @constdefine TBD
+ dwReceiveData:DWORD; // @constdefine TBD
+ dwSendData:DWORD; // @constdefine TBD
+ dwTimerManagement:DWORD; // @constdefine TBD
+ dwRunAtCmd:DWORD; // @constdefine TBD
+ rstecEvents:RILSIMTOOLKITEVENTCAPS; // @constdefine TBD
+ end;
+ RILSIMTOOLKITNOTIFYCAPS = rilsimtoolkitnotifycaps_tag;
+ LPRILSIMTOOLKITNOTIFYCAPS = ^rilsimtoolkitnotifycaps_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILSIMTOOLKITCMD | SIM toolkit command details.
+
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilsimtoolkitcmd_tag = record
+ cbSize:DWORD;
+ dwParams:DWORD;
+ dwId:DWORD;
+ dwTag:DWORD;
+ dwType:DWORD;
+ dwQualifier:DWORD;
+ dwError:DWORD;
+ dwDetailsOffset:DWORD;
+ dwDetailsSize:DWORD;
+ end;
+ RILSIMTOOLKITCMD = rilsimtoolkitcmd_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILSIMTOOLKITRSP | Response to a SIM toolkit command.
+
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilsimtoolkitrsp_tag = record
+ cbSize:DWORD;
+ dwParams:DWORD;
+ dwId:DWORD;
+ dwTag:DWORD;
+ dwType:DWORD;
+ dwQualifier:DWORD;
+ dwResponse:DWORD;
+ dwAdditionalInfo:DWORD;
+ end;
+ RILSIMTOOLKITRSP = rilsimtoolkitrsp_tag;
+ LPRILSIMTOOLKITRSP = rilsimtoolkitrsp_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILSIMCMDPARAMETERS | Parameters for a restricted SIM command
+
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilsimcmdparameters_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwFileID:DWORD; // @field SIM file ID
+ dwParameter1:DWORD; // @field parameter specific to SIM command
+ dwParameter2:DWORD; // @field parameter specific to SIM command
+ dwParameter3:DWORD; // @field parameter specific to SIM command
+ end;
+ RILSIMCMDPARAMETERS = rilsimcmdparameters_tag;
+ LPRILSIMCMDPARAMETERS = ^rilsimcmdparameters_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILSIMRESPONSE | Response to a restrcited SIM command
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+//#pragma warning(disable : 4200) // Disable "C4200: nonstandard extension used : zero-sized array in struct/union"
+type
+ rilsimresponse_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwStatusWord1:DWORD; // @field return parameter specific to SIM command
+ dwStatusWord2:DWORD; // @field return parameter specific to SIM command
+ pbResponse:array[0..0] of byte; // @field additional bytes of response data
+ end;
+ RILSIMRESPONSE = rilsimresponse_tag;
+ LPRILSIMRESPONSE = ^rilsimresponse_tag;
+//#pragma warning(default : 4200)
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILSIMRECORDSTATUS | Response to a restrcited SIM command
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilsimrecordstatus_tag = record
+ cbSize:DWORD; // @field Size of the structure in bytes
+ dwParams:DWORD; // @field Indicates valid parameter values
+ dwRecordType:DWORD; // @field RIL_SIMRECORDTYPE_* Constant
+ dwItemCount:DWORD; // @field Number of items in the record
+ dwSize:DWORD; // @field Size in bytes of each item
+ end;
+ RILSIMRECORDSTATUS = rilsimrecordstatus_tag;
+ LPRILSIMRECORDSTATUS = ^rilsimrecordstatus_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILCOSTINFO | Service cost info
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilcostinfo_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwCCM:DWORD; // @field current call meter
+ dwACM:DWORD; // @field accumulated call meter
+ dwMaxACM:DWORD; // @field maximum accumulated call meter
+ dwCostPerUnit:DWORD; // @field cost per unit, in 16.16 fixed point
+ wszCurrency:array[0..MAXLENGTH_CURRENCY-1] of WCHAR; // @field current currency
+ end;
+ RILCOSTINFO = rilcostinfo_tag;
+ LPRILCOSTINFO = ^rilcostinfo_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILSIGNALQUALITY | Signal quality info
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilsignalquality_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ nSignalStrength:longint; // @field TBD
+ nMinSignalStrength:longint; // @field TBD
+ nMaxSignalStrength:longint; // @field TBD
+ dwBitErrorRate:DWORD; // @field bit error rate in 1/100 of a percent
+ nLowSignalStrength:longint; // @field TBD
+ nHighSignalStrength:longint; // @field TBD
+ end;
+ RILSIGNALQUALITY = rilsignalquality_tag;
+ LPRILSIGNALQUALITY = ^rilsignalquality_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILCELLTOWERINFO | Cell tower info
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilcelltowerinfo_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwMobileCountryCode:DWORD; // @field TBD
+ dwMobileNetworkCode:DWORD; // @field TBD
+ dwLocationAreaCode:DWORD; // @field TBD
+ dwCellID:DWORD; // @field TBD
+ dwBaseStationID:DWORD; // @field TBD
+ dwBroadcastControlChannel:DWORD; // @field TBD
+ dwRxLevel:DWORD; // @field Value from 0-63 (see GSM 05.08, 8.1.4)
+ dwRxLevelFull:DWORD; // @field Value from 0-63 (see GSM 05.08, 8.1.4)
+ dwRxLevelSub:DWORD; // @field Value from 0-63 (see GSM 05.08, 8.1.4)
+ dwRxQuality:DWORD; // @field Value from 0-7 (see GSM 05.08, 8.2.4)
+ dwRxQualityFull:DWORD; // @field Value from 0-7 (see GSM 05.08, 8.2.4)
+ dwRxQualitySub:DWORD; // @field Value from 0-7 (see GSM 05.08, 8.2.4)
+ dwIdleTimeSlot:DWORD; // @field TBD
+ dwTimingAdvance:DWORD; // @field TBD
+ dwGPRSCellID:DWORD; // @field TBD
+ dwGPRSBaseStationID:DWORD; // @field TBD
+ dwNumBCCH:DWORD; // @field TBD
+ rgbBCCH:array[0..MAXLENGTH_BCCH-1] of byte; // @field TBD
+ rgbNMR:array[0..MAXLENGTH_NMR-1] of byte; // @field TBD
+ end;
+ RILCELLTOWERINFO = rilcelltowerinfo_tag;
+ LPRILCELLTOWERINFO = ^rilcelltowerinfo_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILREMOTEPARTYINFO | Incoming call info
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilremotepartyinfo_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ raAddress:RILADDRESS; // @field address of caller
+ rsaSubAddress:RILSUBADDRESS; // @field subaddress of caller
+ wszDescription:array[0..MAXLENGTH_DESCRIPTION-1] of WCHAR; // @field text associated with caller
+ dwValidity:DWORD; // @field indicates validity of caller info
+ end;
+ RILREMOTEPARTYINFO = rilremotepartyinfo_tag;
+ LPRILREMOTEPARTYINFO = ^rilremotepartyinfo_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILCALLWAITINGINFO | Call waiting info
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilcallwaitinginfo_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwCallType:DWORD; // @field type of call
+ dwAddressId:DWORD; // @field indicates address ID on which the incoming call arrived (if available)
+ rrpiCallerInfo:RILREMOTEPARTYINFO; // @field caller information
+ end;
+ RILCALLWAITINGINFO = rilcallwaitinginfo_tag;
+ LPRILCALLWAITINGINFO = ^rilcallwaitinginfo_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILINTERMEDIATESSINFO | Intermediate Supplemenary Service Info
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilintermediatessinfo_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwNotificationCode:DWORD; // @field indicates type of notification
+ dwCallUserGroupIndex:DWORD; // @field indicates the CUG Index
+ end;
+ RILINTERMEDIATESSINFO = rilintermediatessinfo_tag;
+ LPRILINTERMEDIATESSINFO = ^rilintermediatessinfo_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILUNSOLICITEDSSINFO | Unsolicited Supplemenary Service Info
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilunsolicitedssinfo_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwNotificationCode:DWORD; // @field indicates type of notification
+ dwCallUserGroupIndex:DWORD; // @field indicates the CUG Index
+ raAddress:RILADDRESS; // @field call address
+ rsaSubAddress:RILSUBADDRESS; // @field subaddress
+ end;
+ RILUNSOLICITEDSSINFO = rilunsolicitedssinfo_tag;
+ LPRILUNSOLICITEDSSINFO = ^rilunsolicitedssinfo_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILSERVICEINFO | Connection service information
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilserviceinfo_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ fSynchronous:BOOL; // @field TRUE if connection service is synchronous, FALSE if asynchronous
+ fTransparent:BOOL; // @field TRUE if connection service is transparent, FALSE if non-transparent
+ end;
+ RILSERVICEINFO = rilserviceinfo_tag;
+ LPRILSERVICEINFO = ^rilserviceinfo_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILRINGINFO | Ring information
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilringinfo_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwCallType:DWORD; // @field type of the offered call (<def RIL_CALLTYPE_> constant)
+ dwAddressId:DWORD; // @field indicates address ID on which the incoming call arrived (if available)
+ rsiServiceInfo:RILSERVICEINFO; // @field data connection service information (set only for <def RIL_CALLTYPE_DATA>)
+ end;
+ RILRINGINFO = rilringinfo_tag;
+ LPRILRINGINFO = ^rilringinfo_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILDIALINFO | Ring information
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rildialinfo_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ hrCmdId:HRESULT; // @field handle of call being dialed
+ dwCallId:DWORD; // @field id of call being dialed
+ end;
+ RILDIALINFO = rildialinfo_tag;
+ LPRILDIALINFO = ^rildialinfo_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILCONNECTINFO | Connection info
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilconnectinfo_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwCallType:DWORD; // @field type of the established connection (<def RIL_CALLTYPE_> constant)
+ dwBaudRate:DWORD; // @field Baud rate of the established connection (set only for <def RIL_CALLTYPE_DATA>)
+ end;
+ RILCONNECTINFO = rilconnectinfo_tag;
+ LPRILCONNECTINFO = ^rilconnectinfo_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILMSGSTORAGEINFO | Message storage locations
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilmsgstorageinfo_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwReadLocation:DWORD; // @field current read location
+ dwWriteLocation:DWORD; // @field current write location
+ dwStoreLocation:DWORD; // @field current store location
+ end;
+ RILMSGSTORAGEINFO = rilmsgstorageinfo_tag;
+ LPRILMSGSTORAGEINFO = ^rilmsgstorageinfo_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILSUPSERVICEDATA | Supplementary service data
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+//#pragma warning(disable : 4200) // Disable "C4200: nonstandard extension used : zero-sized array in struct/union"
+type
+ rilsupservicedata_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwStatus:DWORD; // @field additional status for message
+ pbData:array[0..0] of byte; // @field message itself
+ end;
+ RILSUPSERVICEDATA = rilmsgstorageinfo_tag;
+ LPRILSUPSERVICEDATA = ^rilmsgstorageinfo_tag;
+//#pragma warning(default : 4200)
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILCAPSDIAL | Dialing capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilcapsdial_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwCallTypes:DWORD; // @field type of call being placed
+ dwOptions:DWORD; // @field dialing options
+ end;
+ RILCAPSDIAL = rilcapsdial_tag;
+ LPRILCAPSDIAL = ^rilcapsdial_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILCAPSBEARERSVC | Bearer service capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilcapsbearersvc_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwSpeeds1:DWORD; // @field TBD
+ dwSpeeds2:DWORD; // @field TBD
+ dwServiceNames:DWORD; // @field TBD
+ dwConnectionElements:DWORD; // @field TBD
+ end;
+ RILCAPSBEARERSVC = rilcapsbearersvc_tag;
+ LPRILCAPSBEARERSVC = ^rilcapsbearersvc_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILCAPSRLP | Radio Link Protocol capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilcapsrlp_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwVersion:DWORD; // @field TBD
+ rrIWSRange:RILRANGE; // @field TBD
+ rrMWSRange:RILRANGE; // @field TBD
+ rrAckTimerRange:RILRANGE; // @field TBD
+ rrRetransmissionAttsRange:RILRANGE; // @field TBD
+ rrReseqPeriodRange:RILRANGE; // @field TBD
+ end;
+ RILCAPSRLP = rilcapsrlp_tag;
+ LPRILCAPSRLP = ^rilcapsrlp_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILCAPSMSGMEMORYLOCATIONS | Message memory location capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilcapsmsgmemorylocations_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwReadLocations:DWORD; // @field supported read locations
+ dwWriteLocations:DWORD; // @field supported write locations
+ dwStoreLocations:DWORD; // @field supported store locations
+ end;
+ RILCAPSMSGMEMORYLOCATIONS = rilcapsmsgmemorylocations_tag;
+ LPRILCAPSMSGMEMORYLOCATIONS = ^rilcapsmsgmemorylocations_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILCAPSLOCKINGPWDLENGTH | Locking password length capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilcapslockingpwdlength_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwFacility:DWORD; // @field the locking facility
+ dwPasswordLength:DWORD; // @field maximum password length
+ end;
+ RILCAPSLOCKINGPWDLENGTH = rilcapslockingpwdlength_tag;
+ LPRILCAPSLOCKINGPWDLENGTH = ^rilcapslockingpwdlength_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILCAPSBARRINGPWDLENGTH | Call barring password length capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilcapsbarringpwdlength_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwType:DWORD; // @field type of call barring
+ dwPasswordLength:DWORD; // @field maximum password length
+ end;
+ RILCAPSBARRINGPWDLENGTH = rilcapsbarringpwdlength_tag;
+ LPRILCAPSBARRINGPWDLENGTH = ^rilcapsbarringpwdlength_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILCAPSDATACOMPRESSION | Data compression capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilcapsdatacompression_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwDirection:DWORD; // @field indicates supported direction values
+ dwNegotiation:DWORD; // @field indicates supported negotiation values
+ rrMaxDict:RILRANGE; // @field range of supported max_dict values
+ rrMaxString:RILRANGE; // @field range of supported max_string values
+ end;
+ RILCAPSDATACOMPRESSION = rilcapsdatacompression_tag;
+ LPRILCAPSDATACOMPRESSION = ^rilcapsdatacompression_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILERRORCORRECTIONINFO | Error correction settings
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilcapserrorcorrection_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwOriginalRequest:DWORD; // @field indicates supported originator request values
+ dwOriginalFallback:DWORD; // @field indicates supported originator fallback values
+ dwAnswererFallback:DWORD; // @field indicates supported answerer fallback values
+ end;
+ RILCAPSERRORCORRECTION = rilcapserrorcorrection_tag;
+ LPRILCAPSERRORCORRECTION = ^rilcapserrorcorrection_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILCAPSHSCSD | High Speed Circuit Switched Data capabilities
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilcapshscsd_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwMultislotClass:DWORD; // @field multislot class supported
+ dwMaxRxTimeslots:DWORD; // @field maximum number of receive timeslots
+ dwMaxTxTimeslots:DWORD; // @field maximum number of transmit timeslots
+ dwMaxTotalTimeslots:DWORD; // @field maximum number of total timeslots
+ dwChannelCodings:DWORD; // @field supported channel codings
+ dwAirInterfaceUserRates:DWORD; // @field supported air interfacerates
+ rrTopRxTimeslotRange:RILRANGE; // @field TBD
+ end;
+ RILCAPSHSCSD = rilcapshscsd_tag;
+ LPRILCAPSHSCSD = ^rilcapshscsd_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILCAPSPBENTRYLENGTH | Phone book entry length maximum values
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilcapspbentrylength_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwMaxAddressLength:DWORD; // @field maximum length of the phone number portion
+ dwMaxTextLength:DWORD; // @field maximum length of the text portion
+ end;
+ RILCAPSPBENTRYLENGTH = rilcapspbentrylength_tag;
+ LPRILCAPSPBENTRYLENGTH = ^rilcapspbentrylength_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILGPRSPROTOCOLCAPS | General Packet Radio Service capabilities
+//
+// @comm TBDTBD
+//
+// -----------------------------------------------------------------------------
+//#pragma warning(disable : 4200) // Disable "C4200: nonstandard extension used : zero-sized array in struct/union"
+type
+ rilgprscontextcaps_tag = record
+ cbSize:DWORD; // @field structure size in bytes (padded to DWORD)
+ dwParams:DWORD; // @field indicates valid parameters
+ dwProtocolType:DWORD; // @field a RIL_GPRSPROTOCOL_* constant
+ ContextIDRange:RILRANGE; // @field min/max context ids
+ dwDataCompression:DWORD; // @field valid data compression values
+ dwHeaderCompression:DWORD; // @field valid header compression values
+ dwParameterLength:DWORD; // @field length of parameters list in bytes
+ szParameters:array[0..0] of AnsiChar; // @field valid string parameters of this prococol type, delimited by \0, with final param terminated by \0\0
+ end;
+ RILGPRSCONTEXTCAPS = rilgprscontextcaps_tag;
+ LPRILGPRSCONTEXTCAPS = ^rilgprscontextcaps_tag;
+//#pragma warning(default : 4200)
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILGPRSCONTEXT | A PDP Context represents a certain configuration for
+// packet data communication.
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+//#pragma warning(disable : 4200) // Disable "C4200: nonstandard extension used : zero-sized array in struct/union"
+type
+ rilgprscontext_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwContextID:DWORD; // @field the context number
+ dwProtocolType:DWORD; // @field a RIL_GPRSPROTOCOL_*constant
+ wszAccessPointName:array[0..MAXLENGTH_GPRSACCESSPOINTNAME-1] of WCHAR; // @field a logical name to select the gateway gprs
+ // (which defines the external packet data network to use)
+ wszAddress:array[0..MAXLENGTH_GPRSADDRESS-1] of WCHAR; // @field the packet address to use (if null, request dynamic)
+ dwDataCompression:DWORD; // @field a RIL_GPRSDATACOMP_*
+ dwHeaderCompression:DWORD; // @field a RIL_GPRSHEADERCOMP_*
+ dwParameterLength:DWORD; // @field length of parameters list
+ szParameters:array[0..0] of AnsiChar; // @field parameters specific to the prococol type
+ end;
+ RILGPRSCONTEXT = rilgprscontext_tag;
+ LPRILGPRSCONTEXT = ^rilgprscontext_tag;
+//#pragma warning(default : 4200)
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILGPRSPROTOCOLCAPS | General Packet Radio Service capabilities
+//
+// @comm TBDTBD
+//
+// -----------------------------------------------------------------------------
+//#pragma warning(disable : 4200) // Disable "C4200: nonstandard extension used : zero-sized array in struct/union"
+type
+ rilgprsqosprofilecaps_tag = record
+ cbSize:DWORD; // @field structure size in bytes (padded to DWORD)
+ dwParams:DWORD; // @field indicates valid parameters
+ dwProtocolType:DWORD; // @field a RIL_GPRSPROTOCOL_* constant
+ dwPrecedenceClass:DWORD; // @field valid RIL_GPRSPRECEDENCECLASS_* constants
+ dwDelayClass:DWORD; // @field valid RIL_GPRSDELAYCLASS_* constants
+ dwReliabilityClass:DWORD; // @field valid RIL_GPRSRELIABILITYCLASS_* constants
+ dwPeakThruClass:DWORD; // @field valid RIL_GPRSPEAKTHRUCLASS_* constants
+ dwMeanThruClass:DWORD; // @field valid RIL_GPRSMEANTHRUCLASS_* constants
+ end;
+ RILGPRSQOSPROFILECAPS = rilgprsqosprofilecaps_tag;
+ LPRILGPRSQOSPROFILECAPS = ^rilgprsqosprofilecaps_tag;
+//#pragma warning(default : 4200)
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILGPRSQOSPROFILE | A quality of service profile
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilgprsqosprofile_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwContextID:DWORD; // @field the context number
+ dwPrecedenceClass:DWORD; // @field a RIL_GPRSPRECEDENCECLASS_* constant
+ dwDelayClass:DWORD; // @field a RIL_GPRSDELAYCLASS_* constant
+ dwReliabilityClass:DWORD; // @field a RIL_GPRSRELIABILITYCLASS_* constant
+ dwPeakThruClass:DWORD; // @field a RIL_GPRSPEAKTHRUCLASS_* constant
+ dwMeanThruClass:DWORD; // @field a RIL_GPRSMEANTHRUCLASS_* constant
+ end;
+ RILGPRSQOSPROFILE = rilgprsqosprofile_tag;
+ LPRILGPRSQOSPROFILE = ^rilgprsqosprofile_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILGPRSANSWER | A quality of service profile
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+//#pragma warning(disable : 4200) // Disable "C4200: nonstandard extension used : zero-sized array in struct/union"
+type
+ rilgprsanswer_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ fAnswer:BOOL; // @parm TRUE: accept, FALSE: reject
+ dwL2Protocol:DWORD; // @parm an optional RILL2PROTOCOL_* constant
+ dwNumContexts:DWORD; // @parm number of contexts which follow
+ dwContextID:array[0..0] of DWORD; // @parm identifies the context(s) to enter data state
+ end;
+ RILGPRSANSWER = rilgprsanswer_tag;
+ LPRILGPRSANSWER = ^rilgprsanswer_tag;
+//#pragma warning(default : 4200)
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILENTERGPRSDATAMODE | A quality of service profile
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+//#pragma warning(disable : 4200) // Disable "C4200: nonstandard extension used : zero-sized array in struct/union"
+type
+ rilentergprsdatamode_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwL2Protocol:DWORD; // @parm an optional RILL2PROTOCOL_* constant
+ dwNumContexts:DWORD; // @parm number of contexts which follow
+ dwContextID:array[0..0] of DWORD; // @parm identifies the context(s) to enter data state
+ end;
+ RILENTERGPRSDATAMODE = rilentergprsdatamode_tag;
+ LPRILENTERGPRSDATAMODE = ^rilentergprsdatamode_tag;
+//#pragma warning(default : 4200)
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILLOCATIONINFO | Contains network location information
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rillocationinfo_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwLocationAreaCode:DWORD; // @field the context number
+ dwCellID:DWORD; // @field the context number
+ end;
+ RILLOCATIONINFO = rillocationinfo_tag;
+ LPRILLOCATIONINFO = ^rillocationinfo_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILGPRSCONTEXTACTIVATED | Shows which contexts are active
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilgprscontextactivated_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwEvent:DWORD; // @field the disconnection event type: RIL_PARAM_RILGPRSCONTEXTACTIVATED_ (applies to deactivation)
+ dwContextID:DWORD; // @field the context number
+ fActivated:BOOL; // @field whether the context is activated
+ end;
+ RILGPRSCONTEXTACTIVATED = rilgprscontextactivated_tag;
+ LPRILGPRSCONTEXTACTIVATED = ^rilgprscontextactivated_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILLOGATCOMMAND | Contains inbound and outbound AT commands/responses
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rillogatinfo_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ cbLength:DWORD; // @field command buffer length
+ szRsp:array[0..MAXLENGTH_CMD-1] of byte; // @field command buffer
+ fResponse:BOOL; // @field TRUE if szRsp contains a response; FALSE if szRsp contains a command
+ end;
+ RILLOGATINFO = rillogatinfo_tag;
+ LPRILLOGATINFO = ^rillogatinfo_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILNDISIPV6ADDR | Encapsulates an IPv6 address.
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ IPV6_ADDRESS_LENGTH = 16;
+ IPV6_ADDRESS_LENGTH_IN_UCHAR = IPV6_ADDRESS_LENGTH;
+ IPV6_ADDRESS_LENGTH_IN_USHORT = IPV6_ADDRESS_LENGTH div 2;
+
+type
+ rilndisipv6addr_tag = record
+ case USHORT of
+ 0: (_Byte:array[0..IPV6_ADDRESS_LENGTH_IN_UCHAR-1] of UCHAR);
+ 1: (_Word:array[0..IPV6_ADDRESS_LENGTH_IN_USHORT-1] of USHORT);
+ end;
+ RILNDISIPV6ADDR = rilndisipv6addr_tag;
+ LPRILNDISIPV6ADDR = ^rilndisipv6addr_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILNDISIPCONFIG | returned in association with RIL_NOTIFY_NDIS_IPCONFIG
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ Tipv4 = record
+ dwFlags:DWORD; // @field bitfield of valid in_addr parameters defined by RIL_PARAM_NDISIPCONFIG_xxx
+ inIPAddress:DWORD;
+ inPrimaryDNS:DWORD;
+ inSecondaryDNS:DWORD;
+ inDefaultGateway:DWORD;
+ inSubnetMask:DWORD;
+ end;
+
+ Tipv6 = record
+ dwFlags:DWORD; // @field bitfield of valid in_addr parameters defined by RIL_PARAM_NDISIPCONFIG_IPV6_xxx
+ inIPAddress:RILNDISIPV6ADDR;
+ inPrimaryDNS:RILNDISIPV6ADDR;
+ inSecondaryDNS:RILNDISIPV6ADDR;
+ inDefaultGateway:RILNDISIPV6ADDR;
+ inSubnetMask:RILNDISIPV6ADDR;
+ dwFlowInfo:DWORD;
+ dwScopeId:DWORD;
+ end;
+
+ rilndisipconfig_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwContextId:DWORD;
+ dwProtocol:DWORD; // @field discriminator for the union field; defined by RIL_PARAM_NDISIPCONFIG_PROTOCOL_*
+ case DWORD of
+ 0: (ipv4:Tipv4);
+ 1: (ipv6:Tipv6);
+ end;
+ RILNDISIPCONFIG = rilndisipconfig_tag;
+ LPRILNDISIPCONFIG = ^rilndisipconfig_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILNDISBUFFER | Buffer defintion for use in rildndispacket_tag below.
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilndisbuffer_tag = record
+ pbyBytes:LPBYTE; // @field Pointer to the buffer
+ cByteCount:DWORD; // @field Number of bytes pointed to by pbyBytes.
+ end;
+ RILNDISBUFFER = rilndisbuffer_tag;
+ LPRILNDISBUFFER = ^rilndisbuffer_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILNDISPACKET |
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilndispacket_tag = record
+ dwContextId:DWORD;
+ dwSize:DWORD;
+ cBufferCount:DWORD;
+ NDISBuffer:array[0..0] of RILNDISBUFFER;
+ end;
+ RILNDISPACKET = rilndispacket_tag;
+ LPRILNDISPACKET = ^rilndispacket_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILNDISSTATUS |
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilndisstatus_tag = record
+ dwContextId:DWORD; // @parm GPRS context identifier reporting status
+ dwSize:DWORD; // @parm size of this struct.
+ dwStatusType:DWORD; // @parm RIL_PARAM_RILNDISSTATUS_ type
+ case longint of
+ 0: (pRilNdisIpConfig:LPRILNDISIPCONFIG); // @parm points to data
+ 1: (dwFlowControl:DWORD); // @parm flow control RIL_NDIS_XON or RIL_NDIS_XOFF
+ end;
+ RILNDISSTATUS = rilndisstatus_tag;
+ LPRILNDISSTATUS = ^rilndisstatus_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func RIL NDIS receive packet callback
+//
+// @comm This function is called to when an IP packet is received by the
+// RIL driver.
+//
+// -----------------------------------------------------------------------------
+type
+ RILNDISRECEIVECALLBACK = procedure(pCallbackContext:PVOID; // @parm parameter passed to <f RIL_NDIS_SetGPRSContextActivated>
+ pRilPacket:LPRILNDISPACKET // @parm ponter to received packet
+ ); cdecl;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func RIL NDIS transmit packet callback
+//
+// @comm This function is called to when an IP packet is sent by the
+// RIL driver.
+//
+// -----------------------------------------------------------------------------
+type
+ RILNDISTRANSMITCALLBACK = procedure(pCallbackContext:PVOID; // @parm parameter passed to <f RIL_NDIS_SetGPRSContextActivated>
+ pRilPacket:LPRILNDISPACKET // @parm ponter to received packet
+ ); cdecl;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func RIL NDIS status callback
+//
+// @comm This function is called to when a NDIS packet IO status change occurred in the
+// RIL driver.
+//
+// -----------------------------------------------------------------------------
+type
+ RILNDISSTATUSCALLBACK = procedure(pCallbackContext:PVOID; // @parm parameter passed to <f RIL_NDIS_SetGPRSContextActivated>
+ pRilStatus:LPRILNDISSTATUS // @parm ponter to received packet
+ ); cdecl;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func RIL NDIS Receive Packet Done callback
+//
+// @comm This function may optionally be used to release packets from the WWAN interface.
+//
+// -----------------------------------------------------------------------------
+type
+ PFNRILNDISRECEIVEPACKETDONE = procedure(lpPacketReceived:LPRILNDISPACKET); cdecl;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func RIL NDIS Send Packet callback
+//
+// @comm This function may optionally be used to send NDIS packets from the WWAN interface.
+//
+// -----------------------------------------------------------------------------
+type
+ PFNRILNDISSENDPACKET = procedure(lpPacketToSend:LPRILNDISPACKET); cdecl;
+
+const
+ NDIS_GPRS_PASSWORD_MAX_LENGTH = 64;
+ NDIS_GPRS_USERNAME_MAX_LENGTH = 64;
+ NDIS_GRPS_DNS_MAX_LENGTH = 64;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILNDISGPRSCONTEXT |
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+
+type
+ rilndisgprscontext_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwContextID:DWORD; // @field identifies the context
+ fContextActivation:BOOL; // @field TRUE: activated, FALSE: deactivated
+ tszUserName:array[0..NDIS_GPRS_USERNAME_MAX_LENGTH-1] of TCHAR; // @field Context activation user name
+ tszPassword:array[0..NDIS_GPRS_PASSWORD_MAX_LENGTH-1] of TCHAR; // @field Context activation password
+ tszDNS1:array[0..NDIS_GRPS_DNS_MAX_LENGTH-1] of TCHAR; // @field Context activation DNS1
+ tszDNS2:array[0..NDIS_GRPS_DNS_MAX_LENGTH-1] of TCHAR; // @fielf Context activation DNS2
+ pfnNdisReceive:RILNDISRECEIVECALLBACK; // @parm function NDIS Rx packet callback
+ pfnNdisTransmit:RILNDISTRANSMITCALLBACK; // @parm function NDIS Tx packet callback
+ pfnNdisStatus:RILNDISSTATUSCALLBACK; // @parm function NDIS status callback
+ pCallbackContext:PVOID; // @parm custom parameter passed to NDIS Rx packet callback
+ end;
+ RILNDISGPRSCONTEXT = rilndisgprscontext_tag;
+ LPRILNDISGPRSCONTEXT = ^rilndisgprscontext_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILNDISGPRSCONTEXTRESPONSE |
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+
+type
+ rilndisgprscontextresponse_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field RIL_PARAM_RILNDISGPRSCONTEXTRESPONSE_
+ dwContextID:DWORD; // @field identifies the context
+ dwError:DWORD; // @field error during activation.
+ pfnNdisSendPacket:PFNRILNDISSENDPACKET; // @parm function NDIS Send Packet
+ pfnNdisReceivePacketDone:PFNRILNDISRECEIVEPACKETDONE; // @parm function NDIS Receive Packet Done.
+ RilNdisIPConfig:RILNDISIPCONFIG; //@parm IP configuration data obtained during activation.
+ end;
+ RILNDISGPRSCONTEXTRESPONSE = rilndisgprscontextresponse_tag;
+ LPRILNDISGPRSCONTEXTRESPONSE = ^rilndisgprscontextresponse_tag;
+
+type
+ RILNDISSETGPRSCONTEXTACTIVATED = RILNDISGPRSCONTEXT;
+ LPRILNDISSETGPRSCONTEXTACTIVATED = LPRILNDISGPRSCONTEXT;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILNITZINFO |
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilnitzinfo_tag = record
+ cbSize:DWORD; // size of this struct.
+ dwParams:DWORD; // valid fields RIL_PARAM_NITZ_
+ dwNotificationCode:DWORD; // type of notifcation RIL_NOTIFY_NITZ
+ TimeZoneOffsetMinutes:longint;// Indicates the time zone offset +/-
+ DaylightSavingOffsetMinutes:longint; // Indicates the daylight saving offset in minutes
+ SysTime:SYSTEMTIME; // If available from network
+ end;
+ RILNITZINFO = rilnitzinfo_tag;
+ LPRILNITZINFO = ^rilnitzinfo_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILSIMSECURITYSTATUS | SIM security status struct
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilsimsecuritystatus_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwLockedState:DWORD; // @field one of RIL_LOCKEDSTATE_*
+ dwSimSecurityState:DWORD; // @field one of RIL_SIMSECURITYSTATE_*
+ end;
+ RILSIMSECURITYSTATUS = rilsimsecuritystatus_tag;
+ LPRILSIMSECURITYSTATUS = ^rilsimsecuritystatus_tag;
+
+
+//
+// RIL handle type
+//
+type
+ HRIL = HANDLE;
+ LPHRIL = ^HRIL;
+
+
+
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func RIL function result callback
+//
+// @comm This function is called to send a return value after and asynchronous
+// RIL function call
+//
+// -----------------------------------------------------------------------------
+type
+ RILRESULTCALLBACK = procedure(dwCode:DWORD; // @parm result code
+ hrCmdID:HRESULT; // @parm ID returned by the command that originated this response
+ lpData:pointer; // @parm data associated with the notification
+ cbData:DWORD; // @parm size of the strcuture pointed to lpData
+ dwParam:DWORD // @parm parameter passed to <f RIL_Initialize>
+ ); cdecl;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func RIL notification callback
+//
+// @comm This function is called when the radio sends an unsolicited notifiation
+//
+// -----------------------------------------------------------------------------
+type
+ RILNOTIFYCALLBACK = procedure(dwCode:DWORD; // @parm notification code
+ lpData:pointer; // @parm data associated with the notification
+ cbData:DWORD; // @parm size of the strcuture pointed to lpData
+ dwParam:DWORD // @parm parameter passed to <f RIL_Initialize>
+ ); cdecl;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func RIL call type determination callback
+//
+// @comm This function is called to determine the call type when the
+// following is present in the registry:
+//
+// [HKEY_LOCAL_MACHINE\Comm\Cellular\RIL\RemoteCalltype]
+// "CalltypeDLL"="<libraryName>.dll"
+// "CalltypeFunction"="<functionName>"
+//
+// -----------------------------------------------------------------------------
+type
+ RILCALLTYPECALLBACK = function(pRemotePartyInfo:LPRILREMOTEPARTYINFO // @param remote party info used to determine the call type
+ ):DWORD; cdecl;
+
+
+//
+// RIL Functions
+//
+
+// Comment: contains 132 functions.
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Initializes RIL for use by this client
+//
+// @comm Synchronous
+// RIL only supports single threaded RIL handles.
+// The RIL validates the application's RIL handle before using it.
+// No application can use/close a RIL handle that it does not own.
+//
+// -----------------------------------------------------------------------------
+function RIL_Initialize(dwIndex:DWORD; // @parm index of the RIL port to use (e.g., 1 for RIL1:)
+ pfnResult:RILRESULTCALLBACK; // @parm function result callback
+ pfnNotify:RILNOTIFYCALLBACK; // @parm notification callback
+ dwNotificationClasses:DWORD; // @parm classes of notifications to be enabled for this client
+ dwParam:DWORD; // @parm custom parameter passed to result and notififcation callbacks
+ _lphRil:LPHRIL // @parm returned handle to RIL instance
+ ):HRESULT; external RILDLL name 'RIL_Initialize';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Initializes RIL for use by this emergency call module
+//
+// @comm Synchronous
+//
+// -----------------------------------------------------------------------------
+function RIL_InitializeEmergency(dwIndex:DWORD; // @parm index of the RIL port to use (e.g., 1 for RIL1:)
+ pfnResult:RILRESULTCALLBACK; // @parm function result callback
+ pfnNotify:RILNOTIFYCALLBACK; // @parm notification callback
+ dwNotificationClasses:DWORD; // @parm classes of notifications to be enabled for this client
+ dwParam:DWORD; // @parm custom parameter passed to result and notififcation callbacks
+ _lphRil:LPHRIL // @parm returned handle to RIL instance
+ ):HRESULT; external RILDLL name 'RIL_InitializeEmergency';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Deinitializes RIL
+//
+// @comm Synchronous
+//
+// -----------------------------------------------------------------------------
+function RIL_Deinitialize(
+ _hRil:HRIL // @parm handle to an RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_Deinitialize';
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Enables additional classes of notifications for this client
+//
+// @comm Synchronous
+//
+// -----------------------------------------------------------------------------
+
+function RIL_EnableNotifications(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwNotificationClasses:DWORD // @parm classes of notifications to enable
+ ):HRESULT; external RILDLL name 'RIL_EnableNotifications';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Disables classes of notifications for this client
+//
+// @comm Synchronous
+//
+// -----------------------------------------------------------------------------
+function RIL_DisableNotifications(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwNotificationClasses:DWORD // @parm classes of notifications to disable
+ ):HRESULT; external RILDLL name 'RIL_DisableNotifications';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Disables classes of notifications for this client
+//
+// @comm Synchronous
+//
+// -----------------------------------------------------------------------------
+function RIL_RegisterATCommandLogging(_hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ fEnable:BOOL // @parm flag to turn feature on or off.
+ ):HRESULT; external RILDLL name 'RIL_RegisterATCommandLogging';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Creates a log file of recent AT commands
+//
+// @comm Asynchronous.
+// For Microsoft Test only. This will not be fully implemented on every
+// platform. A return response of E_NOTIMPL will be returned in the
+// default case.
+//
+// DO NOT IMPLEMENT THIS.
+//
+// -----------------------------------------------------------------------------
+function RIL_ATCommandLogFile(_hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ pszFilename:LPCTSTR // @parm String containing the filename for the log.
+ ):HRESULT; external RILDLL name 'RIL_ATCommandLogFile';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves a serial port handle to be used for data communications
+//
+// @comm Synchronous. Client is responsible for closing the handle returned in <p lphSerial>.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetSerialPortHandle(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lphSerial:LPHANDLE // @parm pointer to the serial port handle
+ ):HRESULT; external RILDLL name 'RIL_GetSerialPortHandle';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves a serial port handle to be used for video telephony
+//
+// @comm Synchronous. Client is responsible for closing the handle returned in <p lphSerial>.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetVTSerialPortHandle(_hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lphSerial:LPHANDLE // @parm pointer to the serial port handle
+ ):HRESULT; external RILDLL name 'RIL_GetVTSerialPortHandle';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves a serial port handle to be used for data communications
+//
+// @comm Synchronous. Client is responsible for closing the handle returned in <p lphSerial>.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetSerialPortHandleFromContextID(_hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwContextID:DWORD; // @parm PDP context identifier.
+ lphSerial:LPHANDLE // @parm pointer to the serial port handle
+ ):HRESULT; external RILDLL name 'RIL_GetSerialPortHandleFromContextID';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves a serial port handle statistics
+//
+// @comm Synchronous
+//
+// -----------------------------------------------------------------------------
+function RIL_GetSerialPortStatistics(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpSerialPortStats:LPRILSERIALPORTSTATS // @parm pointer to the statistics structure
+ ):HRESULT; external RILDLL name 'RIL_GetSerialPortStatistics';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Restrieves the driver version
+//
+// @comm Synchronous
+//
+// -----------------------------------------------------------------------------
+function RIL_GetDriverVersion(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ pdwVersion:LPDWORD // @parm pointer to version. HIWORD is major version, LOWORD is minor version
+ ):HRESULT; external RILDLL name 'RIL_GetDriverVersion';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Restrieves information about subscriber numbers
+//
+// @comm Asynchronous. <p lpData> points to an array of <t RILSUBSCRIBERINFO> structures.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetSubscriberNumbers(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetSubscriberNumbers';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves the list of available operators
+//
+// @comm Asynchronous. <p lpData> points to an array of <t RILOPERATORINFO> structures.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetOperatorList(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetOperatorList';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves the built-in list of all known operators.
+// This is not the list of operators available, for that see RIL_GetOperatorList.
+//
+// @comm Asynchronous. <p lpData> points to an array of <t RILOPERATORNAMES> structures.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetAllOperatorsList(_hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetAllOperatorsList';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves the list of preferred operators
+//
+// @comm Asynchronous. <p lpData> points to an array of <t RILOPERATORINFO> structures.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetPreferredOperatorList(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwFormat:DWORD // @parm format to use for the operator names in the list
+ ):HRESULT; external RILDLL name 'RIL_GetPreferredOperatorList';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Adds a specified operator to the list of preferred operators
+//
+// @comm Asynchronous. <p lpData> is <def NULL>
+//
+// -----------------------------------------------------------------------------
+function RIL_AddPreferredOperator(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwIndex:DWORD; // @parm storage index to use for the added operator
+ lpOperatorNames:LPRILOPERATORNAMES // @parm operator name
+ ):HRESULT; external RILDLL name 'RIL_AddPreferredOperator';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Removes a specified operator from the list of preferred operators
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_RemovePreferredOperator(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwIndex:DWORD // @parm storage index of the preferred operator to remove
+ ):HRESULT; external RILDLL name 'RIL_RemovePreferredOperator';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves the operator the ME is currently registered with
+//
+// @comm Asynchronous. <p lpData> points to an <t RILOPERATORNAMES> structure.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetCurrentOperator(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize()>
+ dwFormat:DWORD // @parm format of the operator name to return (<def RIL_OPFORMAT_> constant)
+ ):HRESULT; external RILDLL name 'RIL_GetCurrentOperator';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Registers the ME with a network operator
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_RegisterOnNetwork(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwMode:DWORD; // @parm operator selection mode (<def RIL_OPSELMODE_> constant)
+ lpOperatorNames:LPRILOPERATORNAMES // @parm operator to be selected (can be <def NULL> if <p dwMode> is <def RIL_OPSELMODE_AUTOMATIC>)
+ ):HRESULT; external RILDLL name 'RIL_RegisterOnNetwork';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Unregisters the ME from the current newtwork operator
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_UnregisterFromNetwork(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_UnregisterFromNetwork';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves the current phone registration status
+//
+// @comm Asynchronous. <p lpData> points to a <def RIL_REGSTAT_> constant.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetRegistrationStatus(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ pdwRegStatus:LPDWORD // @parm points to returned <def RIL_REGSTAT_> constant
+ ):HRESULT; external RILDLL name 'RIL_GetRegistrationStatus';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves the current CallerID settings
+//
+// @comm Asynchronous. <p lpData> points to an <t RILCALLERIDSETTINGS> structure.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetCallerIdSettings(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetCallerIdSettings';
+
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sets the current CallerID status
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetCallerIdStatus(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwStatus:DWORD // @parm status to be set (<def RIL_SVCSTAT_> constant)
+ ):HRESULT; external RILDLL name 'RIL_SetCallerIdStatus';
+
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves the current HideID settings
+//
+// @comm Asynchronous. <p lpData> points to an <t RILHIDEIDSETTINGS> structure.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetHideIdSettings(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetHideIdSettings';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Enables or disables HideID service
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetHideIdStatus(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwStatus:DWORD // @parm status to be set (<def RIL_SVCSTAT_> constant)
+ ):HRESULT; external RILDLL name 'RIL_SetHideIdStatus';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves the current DialedID settings
+//
+// @comm Asynchronous. <p lpData> points to an <t RILDIALEDIDSETTINGS> structure.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetDialedIdSettings(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetDialedIdSettings';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sets the current DialedID settings
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetDialedIdStatus(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwStatus:DWORD // @parm status to be set (<def RIL_SVCSTAT_> constant)
+ ):HRESULT; external RILDLL name 'RIL_SetDialedIdStatus';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves the current HideConnectedID settings
+//
+// @comm Asynchronous. <p lpData> points to an <t RILHIDECONNECTEDIDSETTINGS> structure.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetHideConnectedIdSettings(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetHideConnectedIdSettings';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sets the current HideConnectedID settings
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetHideConnectedIdStatus(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwStatus:DWORD // @parm status to be set (<def RIL_SVCSTAT_> constant)
+ ):HRESULT; external RILDLL name 'RIL_SetHideConnectedIdStatus';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves the status for a Completion of Call to Busy Subscriber index.
+//
+// @comm Asynchronous. If active, <p lpData> points to an array of <t char>s
+// indicating the phone number for which CCBS is active. If CCBS is not
+// active for that entry, <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetCCBSStatus(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwCCBSIndex:DWORD // @parm indicates which entry to query
+ ):HRESULT; external RILDLL name 'RIL_GetCCBSStatus';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Clears registration for a Completion of Call to Busy Subscriber index.
+// Activation of CCBS is used by calling RIL_ManageCalls using the
+// <def RIL_CALLCMD_INVOKECCBS> flag.
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_ClearCCBSRegistration(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwCCBSIndex:DWORD // @parm indicates which entry to clear, may be <def RIL_CCBS_ALL>
+ ):HRESULT; external RILDLL name 'RIL_ClearCCBSRegistration';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves the current Closed User Group settings
+//
+// @comm Asynchronous. <p lpData> points to an <t RILCLOSEDGROUPSETTINGS> structure.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetClosedGroupSettings(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetClosedGroupSettings';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sets the Closed User Group settings
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetClosedGroupSettings(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpSettings:LPRILCLOSEDGROUPSETTINGS // @parm settings to be set
+ ):HRESULT; external RILDLL name 'RIL_SetClosedGroupSettings';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves current Call Forwarding rules
+//
+// @comm Asynchronous. <p lpData> points to an array of <t RILCALLFORWARDINGSETTINGS> structure.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetCallForwardingSettings(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwReason:DWORD; // @parm forwarding reason to retrieve the settings for (<def RIL_FWDREASON_> constant)
+ dwInfoClass:DWORD // @parm information class to retrieve barring status for (<def RIL_INFOCLASS_> constant)
+ ):HRESULT; external RILDLL name 'RIL_GetCallForwardingSettings';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Adds a Call Forwarding rule
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_AddCallForwarding(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwReason:DWORD; // @parm forwarding reason to add Call Forwarding for (<def RIL_FWDREASON_> constant)
+ lpSettings:LPRILCALLFORWARDINGSETTINGS // @parm settings for the new Call Forwarding rule
+ ):HRESULT; external RILDLL name 'RIL_AddCallForwarding';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Removes a Call Forwarding rule
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_RemoveCallForwarding(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwReason:DWORD; // @parm forwarding reason to remove Call Forwarding for (<def RIL_FWDREASON_> constant)
+ dwInfoClasses:DWORD // @parm information classes to remove Call Forwarding for (combination of <def RIL_INFOCLASS_> constants)
+ ):HRESULT; external RILDLL name 'RIL_RemoveCallForwarding';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Enables or disables the specified Call Forwarding rule
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetCallForwardingStatus(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwReason:DWORD; // @parm forwarding reason to enable/disable Call Forwarding for (<def RIL_FWDREASON_> constant)
+ dwInfoClasses:DWORD; // @parm information classes to enable/disable Call Forwarding for (combination of <def RIL_INFOCLASS_> constants)
+ dwStatus:DWORD // @parm status to be set (<def RIL_SVCSTAT_> constant)
+ ):HRESULT; external RILDLL name 'RIL_SetCallForwardingStatus';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves info classes that Call Waiting is currently enabled for
+//
+// @comm Asynchronous. <p lpData> points to DWORD containing a combination
+// of <def RIL_INFOCLASS_> constants.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetCallWaitingSettings(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwInfoClass:DWORD // @parm information class to retrieve barring status for (<def RIL_INFOCLASS_> constant)
+ ):HRESULT; external RILDLL name 'RIL_GetCallWaitingSettings';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Enables or disables Call Waiting for the specified info class
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetCallWaitingStatus(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwInfoClasses:DWORD; // @parm information classes to enable/disable Call Waiting for
+ dwStatus:DWORD // @parm status to be set (<def RIL_SVCSTAT_> constant)
+ ):HRESULT; external RILDLL name 'RIL_SetCallWaitingStatus';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sends supplementary service (USSD) data
+//
+// @comm TBD
+//
+// -----------------------------------------------------------------------------
+function RIL_SendSupServiceData(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ pwszData:LPCWSTR // @parm data to be sent
+ ):HRESULT; external RILDLL name 'RIL_SendSupServiceData';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Cancels current supplementary service session
+//
+// @comm TBD
+//
+// -----------------------------------------------------------------------------
+function RIL_CancelSupServiceDataSession(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_CancelSupServiceDataSession';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves the current address identifier (see RILSUBSCRIBERINFO)
+//
+// @comm Asynchronous. <p lpData> points to a <def DWORD> identifying the current address ID.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetCurrentAddressId(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetCurrentAddressId';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sets the current address identifier (see RILSUBSCRIBERINFO)
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetCurrentAddressId(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwAddressId:DWORD // @parm identifies the new addressID to use
+ ):HRESULT; external RILDLL name 'RIL_SetCurrentAddressId';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Dials a specified address
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_Dial(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpszAddress:PAnsiChar; // @parm address to dial (no longer than <def MAXLENGTH_ADDRESS> chars)
+ dwType:DWORD; // @parm type of the call to establish (<def RIL_CALLTYPE_> constant)
+ dwOptions:DWORD // @parm dialing options (any combination of <def RIL_DIALOPT_> constants)
+ ):HRESULT; external RILDLL name 'RIL_Dial';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Answers an incoming call
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_Answer(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_Answer';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Hangs up all calls currently in progress
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_Hangup(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_Hangup';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sends DTMF tones across an established voice call
+//
+// @comm Asynchronous. <p lpData> is <def NULL>. Function does not return until
+// DTMF tone has completed.
+//
+// -----------------------------------------------------------------------------
+function RIL_SendDTMF(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpszChars:PAnsiChar; // @parm alphanumeric string representing DTMF tones to be sent (0-9, A-D, *, #)
+ dwDuration:DWORD // @parm new DTMF tone duration in milliseconds (<def RIL_DTMFDURATION_DEFAULT>
+ // corresponds to the manufacturer's default value)
+ ):HRESULT; external RILDLL name 'RIL_SendDTMF';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Starts DTMF tone across an established voice call
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_StartDTMF(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ch:AnsiChar // @parm alphanumeric char representing DTMF tones to be sent (0-9, A-D, *, #)
+ ):HRESULT; external RILDLL name 'RIL_StartDTMF';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Stops DTMF tones across an established voice call
+//
+// @comm Asynchronous. <p lpData> is <def NULL>. Function does not return until
+// DTMF tone has completed.
+//
+// -----------------------------------------------------------------------------
+function RIL_StopDTMF(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ch:AnsiChar // @parm alphanumeric char representing DTMF tones to be stopped (0-9, A-D, *, #)
+ ):HRESULT; external RILDLL name 'RIL_StopDTMF';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Detects DTMF tones from an established voice call
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetDTMFMonitoring(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ fEnable:BOOL // @parm TRUE to initiate DTMF monitoring; FALSE to cancel
+ ):HRESULT; external RILDLL name 'RIL_SetDTMFMonitoring';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves the list of active, held, and waiting calls
+//
+// @comm Asynchronous. <p lpData> points to an array of <t RILCALLINFO> structures.
+//
+// -----------------------------------------------------------------------------
+// Function RIL_GetCallList is not declared in ril.h for unknown reason, but
+// is still exported by ril.dll.
+function RIL_GetCallList(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetCallList';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Modifies the state of active, held, and waiting calls
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_ManageCalls(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwCommand:DWORD; // @parm call modification command to be performed (<def RIL_CALLCMD_> constant)
+ dwID:DWORD // @parm ID of the call to be modified (only for <def RIL_CALLCMD_RELEASECALL> and <def RIL_CALLCMD_HOLDALLBUTONE>)
+ ):HRESULT; external RILDLL name 'RIL_ManageCalls';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Transfers incoming allerting call to the specified number
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_TransferCall(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpAddress:LPRILADDRESS; // @parm address to transfer the call to
+ lpSubAddress:RILSUBADDRESS // @parm sub-address to transfer the call to (can be <def NULL>)
+ ):HRESULT; external RILDLL name 'RIL_TransferCall';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves the phone line status
+//
+// @comm Asynchronous. <p lpData> points to <t DWORD> containing <def RIL_LINESTAT_> constant.
+//
+// -----------------------------------------------------------------------------
+// Function RIL_GetLineStatus is not declared in ril.h for unknown reason, but
+// is still exported by ril.dll.
+function RIL_GetLineStatus(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetLineStatus';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves audio gain information
+//
+// @comm Asynchronous. <p lpData> points to an <t RILGAININFO> structure.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetAudioGain(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetAudioGain';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sets audio gain information
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetAudioGain(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpGainInfo:LPRILGAININFO // @parm audio gain information to be sent
+ ):HRESULT; external RILDLL name 'RIL_SetAudioGain';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves currently used transmit and receive audio devices
+//
+// @comm Asynchronous. <p lpData> points to an <t RILAUDIODEVICEINFO> structure.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetAudioDevices(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetAudioDevices';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sets currently used transmit and receive audio devices
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetAudioDevices(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpAudioDeviceInfo:LPRILAUDIODEVICEINFO // @parm audio devices to set
+ ):HRESULT; external RILDLL name 'RIL_SetAudioDevices';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Determines whether the input audio device is muted
+//
+// @comm Asynchronous. <p lpData> points to a <t BOOL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetAudioMuting(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetAudioMuting';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Mutes or un-mutes the input audio device
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetAudioMuting(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ fEnable:BOOL // @parm TRUE if input audio device is to be muted; FALSE otherwise
+ ):HRESULT; external RILDLL name 'RIL_SetAudioMuting';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves High Speeed Circuit Switched Data options
+//
+// @comm Asynchronous. <p lpData> points to an <t RILHSCSDINFO> structure.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetHSCSDOptions(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetHSCSDOptions';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sets High Speeed Circuit Switched Data options
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetHSCSDOptions(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpHscsdInfo:LPRILHSCSDINFO // @parm High Speeed Circuit Switched Data options to set
+ ):HRESULT; external RILDLL name 'RIL_SetHSCSDOptions';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves High Speeed Circuit Switched Data options
+//
+// @comm Asynchronous. <p lpData> points to an <t RILCALLHSCSDINFO> structure.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetHSCSDCallSettings(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetHSCSDCallSettings';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves data compression options
+//
+// @comm Asynchronous. <p lpData> points to an <t RILDATACOMPINFO> structure.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetDataCompression(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ pDataCompInfo:LPRILDATACOMPINFO // @parm data compression options to return
+ ):HRESULT; external RILDLL name 'RIL_GetDataCompression';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sets data compression options
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetDataCompression(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpDataCompInfo:LPRILDATACOMPINFO // @parm data compression options to set
+ ):HRESULT; external RILDLL name 'RIL_SetDataCompression';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves error correction options
+//
+// @comm Asynchronous. <p lpData> points to an <t RILERRORCORRECTIONINFO> structure.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetErrorCorrection(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpErrorCorrectionInfo:LPRILERRORCORRECTIONINFO // @parm error correction options to return
+ ):HRESULT; external RILDLL name 'RIL_GetErrorCorrection';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Set error correction options
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetErrorCorrection(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpErrorCorrectionInfo:LPRILERRORCORRECTIONINFO // @parm error correction options to set
+ ):HRESULT; external RILDLL name 'RIL_SetErrorCorrection';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves currently set data bearer service options
+//
+// @comm Asynchronous. <p lpData> points to an <t RILBEARERSVCINFO> structure.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetBearerServiceOptions(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpBearerServiceInfo:LPRILBEARERSVCINFO // @parm data bearer service options to return
+ ):HRESULT; external RILDLL name 'RIL_GetBearerServiceOptions';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sets data bearer service options
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetBearerServiceOptions(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpBearerServiceInfo:LPRILBEARERSVCINFO // @parm data bearer service options to set
+ ):HRESULT; external RILDLL name 'RIL_SetBearerServiceOptions';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves currently set Radio Link Protocol options
+//
+// @comm Asynchronous. <p lpData> points to an <t RILRLPINFO> structure.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetRLPOptions(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpRlpInfo:LPRILRLPINFO // @parm Radio Link Protocol options to return
+ ):HRESULT; external RILDLL name 'RIL_GetRLPOptions';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sets Radio Link Protocol options
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetRLPOptions(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpRlpInfo:LPRILRLPINFO // @parm Radio Link Protocol options to set
+ ):HRESULT; external RILDLL name 'RIL_SetRLPOptions';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Gets currently set messaging service options
+//
+// @comm Asynchronous. <p lpData> points to an <t RILMSGSERVICEINFO> structure.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetMsgServiceOptions(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetMsgServiceOptions';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sets messaging service options
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetMsgServiceOptions(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpMsgServiceInfo:LPRILMSGSERVICEINFO // @parm messaging service options to be set
+ ):HRESULT; external RILDLL name 'RIL_SetMsgServiceOptions';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Gets currently set messaging configuration
+//
+// @comm Asynchronous. <p lpData> points to an <t RILMSGCONFIG> structure.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetMsgConfig(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetMsgConfig';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sets messaging configuration
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetMsgConfig(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpMsgConfigInfo:LPRILMSGCONFIG // @parm messaging configuration to be set
+ ):HRESULT; external RILDLL name 'RIL_SetMsgConfig';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Gets cell broadcast messaging configuration
+//
+// @comm Asynchronous. <p lpData> points to an <t RILCBMSGCONFIG> structure.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetCellBroadcastMsgConfig(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetCellBroadcastMsgConfig';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sets cell broadcast messaging configuration
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetCellBroadcastMsgConfig(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpCbMsgConfigInfo:LPRILCBMSGCONFIG // @parm messaging configuration to be set
+ ):HRESULT; external RILDLL name 'RIL_SetCellBroadcastMsgConfig';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Reads a message from the current storage location
+//
+// @comm Asynchronous. <p lpData> points to an <t RILMESSAGEINFO> structure.
+//
+// -----------------------------------------------------------------------------
+function RIL_ReadMsg(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwIndex:DWORD // @parm index of the message to be read
+ ):HRESULT; external RILDLL name 'RIL_ReadMsg';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Deletes a message from the current storage location
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_DeleteMsg(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwIndex:DWORD // @parm index of the message to be deleted
+ ):HRESULT; external RILDLL name 'RIL_DeleteMsg';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Writes a message to the current storage location
+//
+// @comm Asynchronous. <p lpData> points to a <t DWORD> conaining the index used.
+//
+// -----------------------------------------------------------------------------
+function RIL_WriteMsg(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpMessage:LPRILMESSAGE; // @parm message to be written (of type <def RIL_MSGTYPE_IN_DELIVER> or <def RIL_MSGTYPE_OUT_SUBMIT>)
+ dwStatus:DWORD // @parm status to assigned to the written message (<def RIL_MSGSTATUS_> constant)
+ ):HRESULT; external RILDLL name 'RIL_WriteMsg';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sends a message
+//
+// @comm Asynchronous. <p lpData> points to a <t DWORD> conaining the reference
+// number of the sent message.
+//
+// -----------------------------------------------------------------------------
+function RIL_SendMsg(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpMessage:LPRILMESSAGE; // @parm message to be sent
+ dwOptions:DWORD // @parm options (any combination of <def RIL_SENDOPT_> constants)
+ ):HRESULT; external RILDLL name 'RIL_SendMsg';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sends a message from the current storage location
+//
+// @comm Asynchronous. <p lpData> points to a <t DWORD> conaining the reference
+// number of the sent message. This feature is not used and is untested.
+//
+// -----------------------------------------------------------------------------
+function RIL_SendStoredMsg(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwIndex:DWORD; // @parm index of the message to be sent
+ dwOptions:DWORD // @parm options (any combination of <def RIL_SENDOPT_> constants)
+ ):HRESULT; external RILDLL name 'RIL_SendStoredMsg';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sends an message ackknowledgement
+//
+// @comm Asynchronous. <p lpData> is <def NULL>. On Phase 2 mobiles, the radio
+// automatically sends SMS message ACKs. But in Phase 2+, the MMI is
+// responsible for these ACKs, hense this function.
+//
+// -----------------------------------------------------------------------------
+function RIL_SendMsgAcknowledgement(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ fSuccess:BOOL // @parm TRUE if success acknowledgment is to be sent; FALSE otherwise
+ ):HRESULT; external RILDLL name 'RIL_SendMsgAcknowledgement';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves International Mobile Subscriber Identity of the phone user
+//
+// @comm Asynchronous. <p lpData> points to an array of <t char>s
+//
+// -----------------------------------------------------------------------------
+function RIL_GetUserIdentity(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetUserIdentity';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves current locked state of the phone
+//
+// @comm Asynchronous. <p lpData> points to a <t DWORD> containing a <def RIL_LOCKEDSTATE_> constant
+//
+// -----------------------------------------------------------------------------
+function RIL_GetPhoneLockedState(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetPhoneLockedState';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Removes current lock applied to the phone
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_UnlockPhone(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpszPassword:PAnsiChar; // @parm password to unlock the phone (no longer than <def MAXLENGTH_PASSWORD> chars)
+ lpszNewPassword:PAnsiChar // @parm new password (can be <def NULL>, unless the current locked state is
+ // one of the <def RIL_LOCKEDSTATE_*_PUK> constants; no longer than
+ // <def MAXLENGTH_PASSWORD> chars)
+ ):HRESULT; external RILDLL name 'RIL_UnlockPhone';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves locking status for the specified facility
+//
+// @comm Asynchronous. <p lpData> points to a <t DWORD> containing a <def RIL_LOCKINGSTATUS_> constant.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetLockingStatus(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwFacility:DWORD; // @parm facility to retrieve locking status for (<def RIL_LOCKFACILITY_> constant)
+ lpszPassword:PAnsiChar // @parm password to retrieve locking status (can be <def NULL> if password isn't required;
+ // no longer than MAXLENGTH_PASSWORD chars)
+ ):HRESULT; external RILDLL name 'RIL_GetLockingStatus';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Enables or disables locking status for the specified facility
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetLockingStatus(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwFacility:DWORD; // @parm facility to enable/disable locking for (<def RIL_LOCKFACILITY_> constant)
+ lpszPassword:PAnsiChar; // @parm password to enable/disable locking (can be <def NULL> if password isn't required;
+ // no longer than <def MAXLENGTH_PASSWORD> chars)
+ dwStatus:DWORD // @parm status to be set (<def RIL_LOCKINGSTATUS_> constant)
+ ):HRESULT; external RILDLL name 'RIL_SetLockingStatus';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Changes locking password for the specified facility
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_ChangeLockingPassword(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwFacility:DWORD; // @parm facility to change locking password for (<def RIL_LOCKFACILITY_> constant)
+ dwOldPasswordType:DWORD; // @parm the type of OLD password (PIN or PUK) RIL_PASSWORDTYPE_* constant
+ lpszOldPassword:PAnsiChar; // @parm current locking password (no longer than <def MAXLENGTH_PASSWORD> chars)
+ lpszNewPassword:PAnsiChar // @parm new locking password (no longer than <def MAXLENGTH_PASSWOR> chars)
+ ):HRESULT; external RILDLL name 'RIL_ChangeLockingPassword';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves status of the specified type of call barring
+//
+// @comm Asynchronous. <p lpData> points to a <t DWORD> containing a <def RIL_BARRINGSTATUS> constant.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetCallBarringStatus(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwType:DWORD; // @parm type of call barring to retrieve status for (<def RIL_BARRTYPE_> constant)
+ dwInfoClass:DWORD; // @parm information class to retrieve barring status for (<def RIL_INFOCLASS_> constant)
+ lpszPassword:PAnsiChar // @parm password to retrieve barring status (can be <def NULL> if password isn't required;
+ // no longer than <def MAXLENGTH_PASSWORD> chars)
+ ):HRESULT; external RILDLL name 'RIL_GetCallBarringStatus';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Enables or disables the specified type of call barring
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetCallBarringStatus(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwType:DWORD; // @parm type of call barring to enable/disable (<def RIL_BARRTYPE_> constant)
+ dwInfoClass:DWORD; // @parm information class to enable/disable call barring for (<def RIL_INFOCLASS_> constant)
+ lpszPassword:AnsiChar; // @parm password to enable/disable call barring (can be <def NULL> if password isn't required;
+ // no longer than <def MAXLENGTH_PASSWORD> chars)
+ dwStatus:DWORD // @parm status to be set (<def RIL_BARRINGSTATUS_> constant)
+ ):HRESULT; external RILDLL name 'RIL_SetCallBarringStatus';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Changes password for the specified type of call barring
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SendSecureMmiString(_hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpszMmiString:LPCSTR // @parm MMI string to be sent
+ ):HRESULT; external RILDLL name 'RIL_SendSecureMmiString';
+
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Changes password for the specified type of call barring
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_ChangeCallBarringPassword(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwType:DWORD; // @parm type of call barring to retrieve status for (<def RIL_BARRTYPE_> constant)
+ lpwszOldPassword:PAnsiChar; // @parm current password (no longer than <def MAXLENGTH_PASSWORD> chars)
+ lpwszNewPassword:PAnsiChar // @parm new password (no longer than <def MAXLENGTH_PASSWORD> chars)
+ ):HRESULT; external RILDLL name 'RIL_ChangeCallBarringPassword';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves manufacturer equipment information
+//
+// @comm Asynchronous. <p lpData> points to an <t RILEQUIPMENTINFO> structure.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetEquipmentInfo(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetEquipmentInfo';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves currently set equipment state
+//
+// @comm Asynchronous. <p lpData> points to an <t RILEQUIPMENTSTATE> structure.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetEquipmentState(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ pEqState:LPRILEQUIPMENTSTATE // @parm equipment state to return
+ ):HRESULT; external RILDLL name 'RIL_GetEquipmentState';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sets the equipment to the specified state
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetEquipmentState(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwEquipmentState:DWORD // @parm equipment state to set (<def RIL_EQSTATE_> constant)
+ ):HRESULT; external RILDLL name 'RIL_SetEquipmentState';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Proxy API to determine if the Radio is present or Not (Is the RIL driver Loaded?)
+//
+// @comm Synchronous
+//
+// -----------------------------------------------------------------------------
+function RIL_GetRadioPresence(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwRadioPresence:LPDWORD // @parm pointer to a DWORD (ouput param contains values from RIL_RADIOPRESENCE_*)
+ ):HRESULT; external RILDLL name 'RIL_GetRadioPresence';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves currently set phonebook options
+//
+// @comm Asynchronous. <p lpData> points to an <t RILPHONEBOOKINFO> structure.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetPhonebookOptions(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetPhonebookOptions';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sets phonebook options
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetPhonebookOptions(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpPhonebookInfo:LPRILPHONEBOOKINFO // @parm phonebook options to set
+ ):HRESULT; external RILDLL name 'RIL_SetPhonebookOptions';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Reads phonebook entries from the specified range of indices of the current storage location
+//
+// @comm Asynchronous. <p lpData> points to an array of <t RILPHONEBOOKENTRY> structures.
+//
+// -----------------------------------------------------------------------------
+function RIL_ReadPhonebookEntries(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwStartIndex:DWORD; // @parm starting index of the range
+ dwEndIndex:DWORD // @parm ending index of the range
+ ):HRESULT; external RILDLL name 'RIL_ReadPhonebookEntries';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Writes a phonebook entry to the current storage location
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_WritePhonebookEntry(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpEntry:LPRILPHONEBOOKENTRY // @parm phonebook entry to write out
+ ):HRESULT; external RILDLL name 'RIL_WritePhonebookEntry';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Deletes a phonebook entry from the current storage location
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_DeletePhonebookEntry(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwIndex:DWORD // @parm index of the entry to delete
+ ):HRESULT; external RILDLL name 'RIL_DeletePhonebookEntry';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sends a specified command to the SIM
+//
+// @comm Asynchronous. <p lpData> points to an array of <t BYTE>s.
+//
+// -----------------------------------------------------------------------------
+function RIL_SendSimCmd(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpbCommand:LPBYTE; // @parm command to be sent to the SIM
+ dwSize:DWORD // @parm size of the data pointed to by <p lpbCommand> in bytes
+ ):HRESULT; external RILDLL name 'RIL_SendSimCmd';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves the SIM's answer to reset data.
+//
+// @comm Asynchronous. <p lpData> points to an <t RILATRINFO> structure.
+// This command is not standardized and may be specific to each radio
+// implementation, if implemented at all.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetATR(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetATR';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sends a specified restricted command to the SIM
+//
+// @comm Asynchronous. <p lpData> points to an <t RILSIMRESPONSE> structure.
+//
+// -----------------------------------------------------------------------------
+function RIL_SendRestrictedSimCmd(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwCommand:DWORD; // @parm restricted command to be sent to the SIM (<def RIL_SIMCMD_> constant)
+ lpParameters:LPRILSIMCMDPARAMETERS; // @parm Parameters for the command to be sent (can be <def NULL> if parameters aren't required)
+ lpbData:LPBYTE; // @parm Data to be written to the SIM (can be <def NULL> if data isn't required)
+ dwSize:DWORD // @parm Size of the data pointed to by <p lpbData> in bytes
+ ):HRESULT; external RILDLL name 'RIL_SendRestrictedSimCmd';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves SIM Record Status
+//
+// @comm Asynchronous. <p lpData> points to RILSIMRECORDSTATUS
+//
+// -----------------------------------------------------------------------------
+function RIL_GetSimRecordStatus(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwFileID:DWORD // @parm address of the file to read
+ ):HRESULT; external RILDLL name 'RIL_GetSimRecordStatus';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves SIM Toolkit terminal profile
+//
+// @comm Asynchronous. <p lpData> points to an array of <t BYTE>s.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetSimToolkitProfile(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetSimToolkitProfile';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sets SIM Toolkit terminal profile
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetSimToolkitProfile(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpbProfile:LPBYTE; // @parm SIM Toolkit profile to be set
+ dwSize:DWORD // @parm size of the data pointed to by <p lpbProfile> in bytes
+ ):HRESULT; external RILDLL name 'RIL_SetSimToolkitProfile';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sends a SIM Toolkit envelope command
+//
+// @comm Asynchronous. <p lpData> points to an array of <t BYTE>s containing a
+// response to the sent command.
+//
+// -----------------------------------------------------------------------------
+function RIL_SendSimToolkitEnvelopeCmd(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpbCommand:LPBYTE; // @parm SIM Toolkit envelope command to be sent
+ dwSize:DWORD // @parm size of the data pointed to by <p lpbCommand> in bytes
+ ):HRESULT; external RILDLL name 'RIL_SendSimToolkitEnvelopeCmd';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Fetches a SIM Toolkit command from the SIM
+//
+// @comm Asynchronous. <p lpData> points to an array of <t BYTE>s containing a
+// fetched command.
+//
+// -----------------------------------------------------------------------------
+function RIL_FetchSimToolkitCmd(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_FetchSimToolkitCmd';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sends a response to an executed SIM Toolkit command
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SendSimToolkitCmdResponse(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ pRsp:LPRILSIMTOOLKITRSP; // @parm Command Response to be sent.
+ pDetails:LPBYTE; // @parm Detailed command response to be sent (can be <def NULL> if details aren't required)
+ dwDetailSize:DWORD // @parm size of the details pointed to by <p pDetails> in bytes
+ ):HRESULT; external RILDLL name 'RIL_SendSimToolkitCmdResponse';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Terminates the SIM Toolkit session
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_TerminateSimToolkitSession(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwCause:DWORD // @parm cause for session termination (<def RIL_SIMTKITTERMCAUSE_> constant)
+ ):HRESULT; external RILDLL name 'RIL_TerminateSimToolkitSession';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sends a requested Event to the SIM.
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SendSimToolkitEventDownload(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwEvent:DWORD; // @parm Event to be sent.
+ pData:LPBYTE; // @parm Detailed event info to be sent (can be <def NULL> if details aren't required)
+ dwDataSize:DWORD // @parm size of the details pointed to by <p pDetails> in bytes
+ ):HRESULT; external RILDLL name 'RIL_SendSimToolkitEventDownload';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves advice-of-charge settings
+//
+// @comm Asynchronous. <p lpData> points to a <t RILCOSTINFO> structure.
+// This feature is not used and is untested.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetCostInfo(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetCostInfo';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sets advice-of-charge settings
+//
+// @comm Asynchronous. <p lpData> points to a <t RILCOSTINFO> structure.
+// This feature is not used and is untested.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetCostInfo(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpCostInfo:LPRILCOSTINFO; // @parm advice-of-charge settings to set
+ lpszPassword:LPCSTR // @parm password requred to set advice-of-charge settings
+ ):HRESULT; external RILDLL name 'RIL_SetCostInfo';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves information about the received signal quality
+//
+// @comm Asynchronous. <p lpData> points to a <t RILSIGNALQUALITY> structure.
+//
+// -----------------------------------------------------------------------------
+// Function RIL_GetSignalQuality is not declared in ril.h for unknown reason, but
+// is still exported by ril.dll.
+function RIL_GetSignalQuality(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetSignalQuality';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves information about the cell tower currently used by the phone
+//
+// @comm Asynchronous. <p lpData> points to a <t RILCELLTOWERINFO> structure.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetCellTowerInfo(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetCellTowerInfo';
+
+// Initial size of the RILDRVNOTIFICATION structure. The size RIL Application allocates for async results of RIL_DevSpecific
+const
+ RIL_NOTIFYTHREAD_ALLOCSIZE = 256;
+ RIL_DEVSPECIFIC_ASYNC_RESPONSE_TIMEOUT = 5000;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Performs an implementation-specific operation
+//
+// @comm Synchronous
+//
+// -----------------------------------------------------------------------------
+function RIL_DevSpecific(_hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpbParams:LPBYTE; // @parm parameters for the operation to be performed
+ dwSize:DWORD; // @parm size of the data pointed to by <p lpParams> in bytes
+ pbAsyncResults:LPBYTE; // @parm points to returned array of <t BYTE>s
+ dwAsyncResultsSize:DWORD; // @parm the allocated size of the returned array of <t BYTE>s
+ pcbAsyncResults:LPDWORD; // @parm points to the actual length of the returned array of <t BYTE>s
+ dwTimeOut:DWORD // @parm time out value (in milliseconds)
+ ):HRESULT; external RILDLL name 'RIL_DevSpecific';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves specified device capabilities
+//
+// @comm Asynchronous. <nl><nl><p dwCapsType> (<def RIL_CAPSTYPE_>) <p lpData><nl>
+// <def *_DIAL> points to an <t RILCAPSDIAL> structure<nl>
+// <def *_DTMFDURATIONRANGE> points to an <t RILRANGE> structure (values in milliseconds)<nl>
+// <def *_CALLMGTCMDS> points to <t DWORD> containing a combination of <def RIL_CAPS_CALLCMD_> constants<nl>
+// <def *_BEARERSERVICE> points to an <t RILCAPSBEARERSVC> structure<nl>
+// <def *_RLP> points to an array of <t RILAPSRLP> structures<nl>
+// <def *_EQUIPMENTSTATES> points to <t DWORD> containing a combination of <def RIL_CAPS_EQSTATE_> constants<nl>
+// <def *_PBSTORELOCATIONS> points to <t DWORD> containing a combination of <def RIL_CAPS_PBLOC_> constants<nl>
+// <def *_PBINDEXRANGE> points to an <t RILRANGE> structure<nl>
+// <def *_PBENTRYLENGTH> points to an <t RILCAPSPBENTRYLENGTH> strcuture<nl>
+// <def *_MSGSERVICETYPES> points to <t DWORD> containing a combination of <def RIL_CAPS_MSGSVCTYPE_> constants<nl>
+// <def *_MSGMEMORYLOCATIONS> points to an <t RILCAPSMSGMEMORYLOCATIONS> structure<nl>
+// <def *_BROADCASTMSGLANGS> points to <t DWORD> containing a combination of <def RIL_CAPS_DCSLANG_> constants<nl>
+// <def *_MSGCONFIGINDEXRANGE> points to an <t RILRANGE> structure<nl>
+// <def *_MSGSTATUSVALUES> points to <t DWORD> containing a combination of <def RIL_CAPS_MSGSTATUS_> constants<nl>
+// <def *_PREFOPINDEXRANGE> points to an <t RILRANGE> structure<nl>
+// <def *_LOCKFACILITIES> points to <t DWORD> containing a combination of <def RIL_CAPS_LOCKFACILITY_> constants<nl>
+// <def *_LOCKINGPWDLENGTHS> points to an array of <t RILCAPSLOCKINGPWDLENGTH> structures<nl>
+// <def *_BARRTYPES> points to <t DWORD> containing a combination of <def RIL_CAPS_BARRTYPE_> constants<nl>
+// <def *_BARRINGPWDLENGTHS> points to an array of <t RILCAPSBARRINGPWDLENGTH> structures<nl>
+// <def *_FORWARDINGREASONS> points to <t DWORD> containing a combination of <def RIL_CAPS_FWDREASON_> constants<nl>
+// <def *_SIMTOOLKITNOTIFICATIONS>points to a <t TBD> SIMTOOLKIT structure <nl>
+// <def *_INFOCLASSES> points to <t DWORD> containing a combination of <def RIL_CAPS_INFOCLASS_> constants<nl>
+// <def *_HSCSD> points to an <t RILCAPSHSCSD> structure<nl>
+// <def *_GPRS> points to an <t RILCAPSGPRS> structure<nl>
+// <def *_RIL_CAPS_NITZ_> points to <t DWORD> containing one of <def RIL_CAPS_NITZ__> constants<nl>
+
+function RIL_GetDevCaps(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwCapsType:DWORD // @parm type of caps class to retrieve
+ ):HRESULT; external RILDLL name 'RIL_GetDevCaps';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves the systemtime from the network
+//
+// @comm Asynchronous. <p lpData> points to a <t SYSTEMTIME> structure (containing the UTC time).
+// This feature is currently not used and is untested.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetSystemTime(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetSystemTime';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves a list GPRS contexts
+//
+// @comm Asynchronous. <p lpData> points to a <t RILGPRSCONTEXT> structure.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetGPRSContextList(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpGPRSContext:LPRILGPRSCONTEXT; // @parm points to the returned <t RILGPRSCONTEXT> structure
+ pdwDataSize:LPDWORD // @parm points to returned data size
+ ):HRESULT; external RILDLL name 'RIL_GetGPRSContextList';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sets a particular GPRS context
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetGPRSContext(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpGprsContext:LPRILGPRSCONTEXT // @parm points to a <t RILGPRSCONTEXT> structure
+ ):HRESULT; external RILDLL name 'RIL_SetGPRSContext';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Deletes a particular GPRS context
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_DeleteGPRSContext(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwContextID:DWORD // @parm identifies which context to delete
+ ):HRESULT; external RILDLL name 'RIL_DeleteGPRSContext';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Gets the requested quality of service profile for all contexts
+//
+// @comm Asynchronous. <p lpData> points to a <t RILGPRSQOSPROFILE> structure.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetRequestedQualityOfServiceList(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpGprsQosProfile:LPRILGPRSQOSPROFILE; // @parm points to returned <t RILGPRSQOSPROFILE> structure
+ pdwDataSize:LPDWORD // @parm points to returned data size
+ ):HRESULT; external RILDLL name 'RIL_GetRequestedQualityOfServiceList';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sets the requested quality of service profile for a context
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetRequestedQualityOfService(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpGprsQosProfile:LPRILGPRSQOSPROFILE // @parm points to a <t RILGPRSQOSPROFILE> structure
+ ):HRESULT; external RILDLL name 'RIL_SetRequestedQualityOfService';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Deletes the requested quality of service profile for a context
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_DeleteRequestedQualityOfService(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwContextID:DWORD // @parm identifies which profile to delete
+ ):HRESULT; external RILDLL name 'RIL_DeleteRequestedQualityOfService';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Gets the minimum quality of service profile for all contexts
+//
+// @comm Asynchronous. <p lpData> points to a <t RILGPRSQOSPROFILE> structure.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetMinimumQualityOfServiceList(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpGprsQosProfile:LPRILGPRSQOSPROFILE; // @parm points to returned <t RILGPRSQOSPROFILE> structure
+ pdwDataSize:LPDWORD // @parm points to returned data size
+ ):HRESULT; external RILDLL name 'RIL_GetMinimumQualityOfServiceList';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sets the minimum quality of service profile for a context
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetMinimumQualityOfService(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpGprsQosProfile:LPRILGPRSQOSPROFILE // @parm points to a <t RILGPRSQOSPROFILE> structure
+ ):HRESULT; external RILDLL name 'RIL_SetMinimumQualityOfService';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Deletes the minimum quality of service profile for a context
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_DeleteMinimumQualityOfService(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwContextID:DWORD // @parm identifies which profile to delete
+ ):HRESULT; external RILDLL name 'RIL_DeleteMinimumQualityOfService';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sets the GPRS attach state
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetGPRSAttached(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ fAttached:BOOL // @parm TRUE: attached, FALSE: detached
+ ):HRESULT; external RILDLL name 'RIL_SetGPRSAttached';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Gets the GPRS attach state
+//
+// @comm Asynchronous. <p lpData> points to a <t BOOL> indicating attach state.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetGPRSAttached(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ pfGPRSAttached:LPBOOL // @parm indicates attach state
+ ):HRESULT; external RILDLL name 'RIL_GetGPRSAttached';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sets the GPRS activation state for a context
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetGPRSContextActivated(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwContextID:DWORD; // @parm identifies the context
+ fContextActivation:BOOL // @parm TRUE: activated, FALSE: deactivated
+ ):HRESULT; external RILDLL name 'RIL_SetGPRSContextActivated';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Gets the GPRS activation state for all contexts
+//
+// @comm Asynchronous. <p lpData> points to a <t RILGPRSCONTEXTACTIVATED> indicating activation state.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetGPRSContextActivatedList(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpGPRSContextActivated:LPRILGPRSCONTEXTACTIVATED; // @parm points to returned <t RILGPRSCONTEXTACTIVATED> indicating activation state
+ pdwDataSize:LPDWORD // @parm points to returned data size
+ ):HRESULT; external RILDLL name 'RIL_GetGPRSContextActivatedList';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Enters into GPRS data state
+//
+// @comm Asynchronous. <p lpData> if <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_EnterGPRSDataMode(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpEnterGprsDataMode:LPRILENTERGPRSDATAMODE // @parm points to a <t RILENTERGPRSDATAMODE> structure
+ ):HRESULT; external RILDLL name 'RIL_EnterGPRSDataMode';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Gets the PDP address for a particular context
+//
+// @comm Asynchronous. <p lpData> points to an array of <t WCHAR> values indicating the address.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetGPRSAddress(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwContextID:DWORD; // @parm identifies the context
+ pwszGPRSAddress:PWCHAR; // @parm returns the GPRS Address
+ pGprsAddrCch:LPDWORD // @parm IN: The dereferenced specifies the character count of the buffer pointed to by pwszGPRSAddress
+ // OUT: The dereferenced specifies the number of characters copied including terminating null character
+ // or the required character count of the buffer including terminating null character to succeed
+ ):HRESULT; external RILDLL name 'RIL_GetGPRSAddress';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Answers an incoming GPRS activation request
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_GPRSAnswer(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpGprsAnswer:LPRILGPRSANSWER // @param points to a <t RILGPRSANSWER> structure
+ ):HRESULT; external RILDLL name 'RIL_GPRSAnswer';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves the current GPRS registration status
+//
+// @comm Asynchronous. <p lpData> points to a <def RIL_REGSTAT_> constant.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetGPRSRegistrationStatus(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ pdwGPRSRegStatus:DWORD // @parm points to returned <def RIL_REGSTAT_> constant
+ ):HRESULT; external RILDLL name 'RIL_GetGPRSRegistrationStatus';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves the current GPRS class
+//
+// @comm Asynchronous. <p lpData> points to a <def RIL_GPRSCLASS_> constant.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetGPRSClass(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetGPRSClass';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sets the current GPRS class
+//
+// @comm Asynchronous. <p lpData> is <def NULL>
+//
+// -----------------------------------------------------------------------------
+function RIL_SetGPRSClass(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwClass:DWORD // @parm a RIL_GPRSCLASS_* constant
+ ):HRESULT; external RILDLL name 'RIL_SetGPRSClass';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves the preferred SMS service option for mobile originated messages
+//
+// @comm Asynchronous. <p lpData> points to a <def RIL_MOSMSSERVICE_> constant.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetMOSMSService(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetMOSMSService';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sets the preferred SMS service option for mobile originated messages
+//
+// @comm Asynchronous. <p lpData> is <def NULL>
+//
+// -----------------------------------------------------------------------------
+function RIL_SetMOSMSService(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwMoSmsService:DWORD // @parm a RIL_MOSMSSERVICE_* constant
+ ):HRESULT; external RILDLL name 'RIL_SetMOSMSService';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @params RILBYTECOUNTER
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_PARAM_BC_RXBYTECOUNT = $00000001; // @paramdefine
+ RIL_PARAM_BC_TXBYTECOUNT = $00000002; // @paramdefine
+ RIL_PARAM_BC_TOTALBYTECOUNT = $00000004; // @paramdefine
+ RIL_PARAM_BC_ALL = $00000007; // @paramdefine
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @struct RILBYTECOUNTER | Represents the cumulative number of bytes transferred by the radio (packet).
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+type
+ rilbytecounter_tag = record
+ cbSize:DWORD; // @field structure size in bytes
+ dwParams:DWORD; // @field indicates valid parameters
+ dwRxByte:DWORD; // @field Number of received bytes
+ dwTxByte:DWORD; // @field Number of transmitted bytes
+ dwTotalByte:DWORD; // @field Total Number of bytes transferred (This comes from the radio, not RxByte+TxByte)
+ end;
+ RILBYTECOUNTER = rilbytecounter_tag;
+ LPRILBYTECOUNTER = ^rilbytecounter_tag;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Retrieves the cumulative count of data bytes transferred by the radio (packet)
+//
+// @comm Asynchronous. <p lpData> points to a <t RILBYTECOUNTER> structure.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetPacketByteCount(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetPacketByteCount';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Resets the cumulative count of data bytes transferred by the radio (packet) to zero.
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_ResetPacketByteCount(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_ResetPacketByteCount';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants System Coverage | Current System Coverage
+//
+// @comm Various Levels of CDMA and GSM Coverage
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_SYSTEMTYPE_NONE = $00000000; // @constdegine No Networks in Coverage
+ RIL_SYSTEMTYPE_IS95A = $00000001; // @constdefine IS-95A network support (Low Packet, or Circuit Switched Service)
+ RIL_SYSTEMTYPE_IS95B = $00000002; // @constdefine IS-95B network support
+ RIL_SYSTEMTYPE_1XRTTPACKET = $00000004; // @constdefine CDMA-2000 Rev A (1xRTT) network support
+ RIL_SYSTEMTYPE_GSM = $00000008; // @constdefine GSM network support
+ RIL_SYSTEMTYPE_GPRS = $00000010; // @constdefine GPRS support
+ RIL_SYSTEMTYPE_EDGE = $00000020; // @constdefine GSM EDGE network support
+ RIL_SYSTEMTYPE_1XEVDOPACKET = $00000040; // @constdefine CDMA (1xEVDO) network support
+ RIL_SYSTEMTYPE_1XEVDVPACKET = $00000080; // @constdefine CDMA (1xEVDV) network support
+ RIL_SYSTEMTYPE_UMTS = $00000100; // @constdefine UMTS network support
+ RIL_SYSTEMTYPE_HSDPA = $00000200; // @constdefine HSDPA support
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Gets the Current System Coverage
+//
+// @comm Gets the Current type of System/Cellular connection that is available.
+// Asynchronous. <p lpData> is <t DWORD> of type RIL_SYSTEMTYPE_ flags)
+//
+// -----------------------------------------------------------------------------
+function RIL_GetCurrentSystemType(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetCurrentSystemType';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Modifies the state of active, held, and waiting calls
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SendFlash(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpraRilAddress:LPRILADDRESS // @parm flash address
+ ):HRESULT; external RILDLL name 'RIL_SendFlash';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants CDMA Roaming Types | CDMA Roaming Types
+//
+// @comm The meaning of AUTOMATICA and AUTOMATICB is up to network specific interpretations
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_ROAMMODE_HOMEONLY = $00000001; // @constdefine The User will never go off the home network
+ RIL_ROAMMODE_AUTOMATICA = $00000002; // @constdefine Network define Roaming A (The effect of this setting is carrier dependent)
+ RIL_ROAMMODE_AUTOMATICB = $00000003; // @constdefine Network define Roaming B (The effect of this setting is carrier dependent)
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Gets the Roaming Mode in CDMA
+//
+// @comm Asynchronous. <p lpData> points to a <t DWORD> of type RIL_ROAMMODE_*.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetRoamingMode(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetRoamingMode';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Modifies the state of active, held, and waiting calls in CDMA and AMPS systems
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetRoamingMode(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwRoamingMode:DWORD // @parm RIL_ROAMMODE_* constant
+ ):HRESULT; external RILDLL name 'RIL_SetRoamingMode';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants CDMA Privacy Mode | CDMA Privacy Mode
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_CALLPRIVACY_STANDARD = $00000001; // @constdefine Enhanced Call Privacy is OFF
+ RIL_CALLPRIVACY_ENHANCED = $00000002; // @constdefine Enhanced Call Privacy is ON
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Gets the user's preferred privacy settings
+//
+// @comm Asynchronous. <p lpData> points to a RIL_CALLPRIVACY_* constant.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetPreferredPrivacyMode(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetPreferredPrivacyMode';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sets the user's preferred privacy settings
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_SetPreferredPrivacyMode(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ dwPreferredPrivacyMode:DWORD // @parm user's preferred privacy setting, uses RIL_CALLPRIVACY_* constant
+ ):HRESULT; external RILDLL name 'RIL_SetPreferredPrivacyMode';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Gets the privacy status of the current system
+//
+// @comm Asynchronous. <p lpData> points to a <t DWORD> RIL_CALLPRIVACY_* constant.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetCurrentPrivacyStatus(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetCurrentPrivacyStatus';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sends the User string to the device for Akey verificaiton
+//
+// @comm Asynchronous. <p lpData> is <def NULL>. (Either it fails or succeeds)
+// According to TSB-50 (up to 26 digits)
+//
+// -----------------------------------------------------------------------------
+
+function RIL_SendAKey(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpszChars:LPCSTR // @parm numeric string representing akey digits (0-9, *, #)
+ ):HRESULT; external RILDLL name 'RIL_SendAKey';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants CDMA Location Serivces Status | Location Services
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_LOCATION_OFF = 0;
+ RIL_LOCATION_ON = 1;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Gets the current location status of the current system
+//
+// @comm Asynchronous. <p lpData> points to a <t DWORD> RIL_LOCATION_* constant.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetCurrentLocationStatus(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetCurrentLocationStatus';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants CDMA Roaming Status | CDMA Roaming Status
+//
+// @comm None
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_ROAMSTATUS_NONE = 0;
+ RIL_ROAMSTATUS_ANALOG = 1;
+ RIL_ROAMSTATUS_DIGITAL = 2;
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Gets the current roaming status of the current system
+//
+// @comm Asynchronous. <p lpData> points to a <t DWORD> RIL_ROAMSTATUS_* constant.
+//
+// -----------------------------------------------------------------------------
+function RIL_GetCurrentRoamingStatus(
+ _hRil:HRIL // @parm handle to RIL instance returned by <f RIL_Initialize>
+ ):HRESULT; external RILDLL name 'RIL_GetCurrentRoamingStatus';
+
+// -----------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @constants SIM Refresh Constants | Constants which indicate which cached SIM regions to refresh.
+//
+// @comm The notification contains a DWORD value which contains the SIM record to refresh,
+// or one of the special values below
+//
+// -----------------------------------------------------------------------------
+const
+ RIL_SIM_DATACHANGE_MSISDNS = $ffffffff;
+ RIL_SIM_DATACHANGE_ALL_SIMRECORDS = $fffffffe;
+ RIL_SIM_DATACHANGE_ALL_SIMPB = $fffffffd;
+ RIL_SIM_DATACHANGE_ALL = $fffffffc;
+
+// ---------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Sets the GPRS activation state for a context for an NDIS connection.
+//
+// @comm Asynchronous. <p lpData> points to a <t DWORD> containing the error
+// detail on failure or the context ID on success.
+//
+// -----------------------------------------------------------------------------
+function RIL_NDIS_SetGPRSContextActivated(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpNdisSetGprsContextActivated:LPRILNDISGPRSCONTEXT // @parm
+ ):HRESULT; external RILDLL name 'RIL_NDIS_SetGPRSContextActivated';
+
+// ---------------------------------------------------------------------------
+//
+// @doc EXTERNAL
+//
+// @func Send an arbitrary string to the radio for logging purposes
+//
+// @comm Asynchronous. <p lpData> is <def NULL>.
+//
+// -----------------------------------------------------------------------------
+function RIL_LogEventToRadio(
+ _hRil:HRIL; // @parm handle to RIL instance returned by <f RIL_Initialize>
+ lpszChars:LPCSTR // @parm
+ ):HRESULT; external RILDLL name 'RIL_LogEventToRadio';
+
+
+implementation
+
+function MAKE_RILERROR(errclass:byte; code:byte):ULONG; inline;
+begin
+ MAKE_RILERROR:=(ULONG(errclass) shl 8) or ULONG(code);
+end;
+
+function RILERRORCLASS(rilerror:ULONG):byte; inline;
+begin
+ RILERRORCLASS:=byte(ULONG((rilerror shr 8) and $FF));
+end;
+
+function ISRILERROR(rilerror:ULONG):BOOL; inline;
+begin
+ ISRILERROR:=(word(rilerror shr 16) and FACILITY_RIL)<>0;
+end;
+
+//
+// Macro to extract notification class from notification code
+//
+function NCLASS_FROM_NOTIFICATION(code:ULONG):ULONG; inline;
+begin
+ NCLASS_FROM_NOTIFICATION:=code and $FFFF0000;
+end;
+
+//
+// Macro to extract message class from message type
+//
+function MSGCLASS_FROM_MSGTYPE(itype:ULONG):ULONG; inline;
+begin
+ MSGCLASS_FROM_MSGTYPE:=itype and $FFFF0000;
+end;
+
+end.
diff --git a/packages/winceunits/src/sms.pp b/packages/winceunits/src/sms.pp
new file mode 100644
index 0000000000..18e361e3a3
--- /dev/null
+++ b/packages/winceunits/src/sms.pp
@@ -0,0 +1,582 @@
+{
+ 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:SMS_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. \ No newline at end of file
diff --git a/packages/winceunits/src/wininet.pp b/packages/winceunits/src/wininet.pp
new file mode 100644
index 0000000000..95429708ab
--- /dev/null
+++ b/packages/winceunits/src/wininet.pp
@@ -0,0 +1,4362 @@
+{
+ 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 Name:
+//
+// wininet.h
+//
+// Abstract:
+//
+// Contains manifests, macros, types and prototypes for Microsoft Windows
+// Internet Extensions
+//
+
+//
+// Microsoft Windows Mobile 6.0 for PocketPC SDK.
+//
+
+unit wininet;
+
+{$IFNDEF NO_SMART_LINK}
+{$SMARTLINK ON}
+{$ENDIF}
+
+{$CALLING cdecl}
+
+interface
+
+uses Windows;
+
+// *
+// * Set up Structure Packing to be 4 bytes
+// * for all wininet structures
+// *
+{$PACKRECORDS 4}
+{
+#if defined(_WIN64)
+#include <pshpack8.h>
+#else
+#include <pshpack4.h>
+#endif
+}
+
+//
+// internet types
+//
+type
+ HINTERNET = LPVOID;
+ LPHINTERNET = ^HINTERNET;
+
+ INTERNET_PORT = word;
+ LPINTERNET_PORT = ^INTERNET_PORT;
+
+//
+// Internet APIs
+//
+
+//
+// manifests
+//
+const
+ INTERNET_INVALID_PORT_NUMBER = 0; // use the protocol-specific default
+
+ INTERNET_DEFAULT_FTP_PORT = 21; // default for FTP servers
+ INTERNET_DEFAULT_GOPHER_PORT = 70; // " " gopher "
+ INTERNET_DEFAULT_HTTP_PORT = 80; // " " HTTP "
+ INTERNET_DEFAULT_HTTPS_PORT = 443; // " " HTTPS "
+ INTERNET_DEFAULT_SOCKS_PORT = 1080; // default for SOCKS firewall servers.
+
+
+//
+// maximum field lengths (arbitrary)
+//
+const
+ INTERNET_MAX_HOST_NAME_LENGTH = 256;
+ INTERNET_MAX_USER_NAME_LENGTH = 128;
+ INTERNET_MAX_PASSWORD_LENGTH = 128;
+ INTERNET_MAX_PORT_NUMBER_LENGTH = 5; // INTERNET_PORT is unsigned short
+ INTERNET_MAX_PORT_NUMBER_VALUE = 65535; // maximum unsigned short value
+ INTERNET_MAX_PATH_LENGTH = 2048;
+ INTERNET_MAX_SCHEME_LENGTH = 32; // longest protocol name length
+
+ INTERNET_MAX_URL_LENGTH = INTERNET_MAX_SCHEME_LENGTH + Length('://') + INTERNET_MAX_PATH_LENGTH;
+{ Was declared as
+ INTERNET_MAX_URL_LENGTH (INTERNET_MAX_SCHEME_LENGTH + sizeof("://") + INTERNET_MAX_PATH_LENGTH)
+}
+
+
+//
+// values returned by InternetQueryOption() with INTERNET_OPTION_KEEP_CONNECTION:
+//
+const
+ INTERNET_KEEP_ALIVE_UNKNOWN = DWORD(-1);
+ INTERNET_KEEP_ALIVE_ENABLED = 1;
+ INTERNET_KEEP_ALIVE_DISABLED = 0;
+
+//
+// flags returned by InternetQueryOption() with INTERNET_OPTION_REQUEST_FLAGS
+//
+const
+ INTERNET_REQFLAG_FROM_CACHE = $00000001; // response came from cache
+ INTERNET_REQFLAG_ASYNC = $00000002; // request was made asynchronously
+ INTERNET_REQFLAG_VIA_PROXY = $00000004; // request was made via a proxy
+ INTERNET_REQFLAG_NO_HEADERS = $00000008; // orginal response contained no headers
+ INTERNET_REQFLAG_PASSIVE = $00000010; // FTP: passive-mode connection
+ INTERNET_REQFLAG_CACHE_WRITE_DISABLED = $00000040; // HTTPS: this request not cacheable
+ INTERNET_REQFLAG_NET_TIMEOUT = $00000080; // w/ _FROM_CACHE: net request timed out
+
+//
+// flags common to open functions (not InternetOpen()):
+//
+const
+ INTERNET_FLAG_RELOAD = $80000000; // retrieve the original item
+
+//
+// flags for InternetOpenUrl():
+//
+const
+ INTERNET_FLAG_RAW_DATA = $40000000; // FTP/gopher find: receive the item as raw (structured) data
+ INTERNET_FLAG_EXISTING_CONNECT = $20000000; // FTP: use existing InternetConnect handle for server if possible
+
+//
+// flags for InternetOpen():
+//
+const
+ INTERNET_FLAG_ASYNC = $10000000; // this request is asynchronous (where supported)
+
+//
+// protocol-specific flags:
+//
+const
+ INTERNET_FLAG_PASSIVE = $08000000; // used for FTP connections
+
+//
+// additional cache flags
+//
+const
+ INTERNET_FLAG_NO_CACHE_WRITE = $04000000; // don't write this item to the cache
+ INTERNET_FLAG_DONT_CACHE = INTERNET_FLAG_NO_CACHE_WRITE;
+ INTERNET_FLAG_MAKE_PERSISTENT = $02000000; // make this item persistent in cache
+ INTERNET_FLAG_FROM_CACHE = $01000000; // use offline semantics
+ INTERNET_FLAG_OFFLINE = INTERNET_FLAG_FROM_CACHE;
+
+//
+// additional flags
+//
+const
+ INTERNET_FLAG_SECURE = $00800000; // use PCT/SSL if applicable (HTTP)
+ INTERNET_FLAG_KEEP_CONNECTION = $00400000; // use keep-alive semantics
+ INTERNET_FLAG_NO_AUTO_REDIRECT = $00200000; // don't handle redirections automatically
+ INTERNET_FLAG_READ_PREFETCH = $00100000; // do background read prefetch
+ INTERNET_FLAG_NO_COOKIES = $00080000; // no automatic cookie handling
+ INTERNET_FLAG_NO_AUTH = $00040000; // no automatic authentication handling
+ INTERNET_FLAG_RESTRICTED_ZONE = $00020000; // apply restricted zone policies for cookies, auth
+ INTERNET_FLAG_CACHE_IF_NET_FAIL = $00010000; // return cache file if net request fails
+
+//
+// Security Ignore Flags, Allow HttpOpenRequest to overide
+// Secure Channel (SSL/PCT) failures of the following types.
+//
+const
+ INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP = $00008000; // ex: https:// to http://
+ INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS = $00004000; // ex: http:// to https://
+ INTERNET_FLAG_IGNORE_CERT_DATE_INVALID = $00002000; // expired X509 Cert.
+ INTERNET_FLAG_IGNORE_CERT_CN_INVALID = $00001000; // bad common name in X509 Cert.
+
+//
+// more caching flags
+//
+const
+ INTERNET_FLAG_RESYNCHRONIZE = $00000800; // asking wininet to update an item if it is newer
+ INTERNET_FLAG_HYPERLINK = $00000400; // asking wininet to do hyperlinking semantic which works right for scripts
+ INTERNET_FLAG_NO_UI = $00000200; // no cookie popup
+ INTERNET_FLAG_PRAGMA_NOCACHE = $00000100; // asking wininet to add "pragma: no-cache"
+ INTERNET_FLAG_CACHE_ASYNC = $00000080; // ok to perform lazy cache-write
+ INTERNET_FLAG_FORMS_SUBMIT = $00000040; // this is a forms submit
+ INTERNET_FLAG_FWD_BACK = $00000020; // fwd-back button op
+ INTERNET_FLAG_NEED_FILE = $00000010; // need a file for this request
+ INTERNET_FLAG_MUST_CACHE_REQUEST = INTERNET_FLAG_NEED_FILE;
+
+ INTERNET_FLAG_BGUPDATE = $00000008; // Undocumented flag.
+
+
+//
+// FTP manifests
+//
+const
+ FTP_TRANSFER_TYPE_UNKNOWN = $00000000;
+ FTP_TRANSFER_TYPE_ASCII = $00000001;
+ FTP_TRANSFER_TYPE_BINARY = $00000002;
+
+ FTP_TRANSFER_TYPE_MASK = FTP_TRANSFER_TYPE_ASCII or FTP_TRANSFER_TYPE_BINARY;
+
+//
+// flags for FTP
+//
+const
+ INTERNET_FLAG_TRANSFER_ASCII = FTP_TRANSFER_TYPE_ASCII; // 0x00000001
+ INTERNET_FLAG_TRANSFER_BINARY = FTP_TRANSFER_TYPE_BINARY; // 0x00000002
+
+//
+// flags field masks
+//
+const
+ SECURITY_INTERNET_MASK = INTERNET_FLAG_IGNORE_CERT_CN_INVALID or
+ INTERNET_FLAG_IGNORE_CERT_DATE_INVALID or
+ INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS or
+ INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP;
+
+ INTERNET_FLAGS_MASK = INTERNET_FLAG_RELOAD or
+ INTERNET_FLAG_RAW_DATA or
+ INTERNET_FLAG_EXISTING_CONNECT or
+ INTERNET_FLAG_ASYNC or
+ INTERNET_FLAG_PASSIVE or
+ INTERNET_FLAG_NO_CACHE_WRITE or
+ INTERNET_FLAG_MAKE_PERSISTENT or
+ INTERNET_FLAG_FROM_CACHE or
+ INTERNET_FLAG_SECURE or
+ INTERNET_FLAG_KEEP_CONNECTION or
+ INTERNET_FLAG_NO_AUTO_REDIRECT or
+ INTERNET_FLAG_READ_PREFETCH or
+ INTERNET_FLAG_NO_COOKIES or
+ INTERNET_FLAG_NO_AUTH or
+ INTERNET_FLAG_CACHE_IF_NET_FAIL or
+ SECURITY_INTERNET_MASK or
+ INTERNET_FLAG_RESYNCHRONIZE or
+ INTERNET_FLAG_HYPERLINK or
+ INTERNET_FLAG_NO_UI or
+ INTERNET_FLAG_PRAGMA_NOCACHE or
+ INTERNET_FLAG_CACHE_ASYNC or
+ INTERNET_FLAG_FORMS_SUBMIT or
+ INTERNET_FLAG_NEED_FILE or
+ INTERNET_FLAG_RESTRICTED_ZONE or
+ INTERNET_FLAG_TRANSFER_BINARY or
+ INTERNET_FLAG_TRANSFER_ASCII or
+ INTERNET_FLAG_FWD_BACK or
+ INTERNET_FLAG_BGUPDATE;
+
+
+ INTERNET_ERROR_MASK_INSERT_CDROM = $01;
+ INTERNET_ERROR_MASK_COMBINED_SEC_CERT = $02;
+ INTERNET_ERROR_MASK_NEED_MSN_SSPI_PKG = $04;
+ INTERNET_ERROR_MASK_LOGIN_FAILURE_DISPLAY_ENTITY_BODY = $08;
+
+ INTERNET_OPTIONS_MASK = DWORD(not INTERNET_FLAGS_MASK);
+
+//
+// common per-API flags (new APIs)
+//
+const
+ WININET_API_FLAG_ASYNC = $00000001; // force async operation
+ WININET_API_FLAG_SYNC = $00000004; // force sync operation
+ WININET_API_FLAG_USE_CONTEXT = $00000008; // use value supplied in dwContext (even if 0)
+
+//
+// INTERNET_NO_CALLBACK - if this value is presented as the dwContext parameter
+// then no call-backs will be made for that API
+//
+const
+ INTERNET_NO_CALLBACK = 0;
+
+
+//
+// structures/types
+//
+
+//
+// INTERNET_SCHEME - enumerated URL scheme type
+//
+
+type
+ INTERNET_SCHEME = (INTERNET_SCHEME_PARTIAL := -2,
+ INTERNET_SCHEME_UNKNOWN := -1,
+ INTERNET_SCHEME_DEFAULT := 0,
+ INTERNET_SCHEME_FTP,
+ INTERNET_SCHEME_GOPHER,
+ INTERNET_SCHEME_HTTP,
+ INTERNET_SCHEME_HTTPS,
+ INTERNET_SCHEME_FILE,
+ INTERNET_SCHEME_NEWS,
+ INTERNET_SCHEME_MAILTO,
+ INTERNET_SCHEME_SOCKS,
+ INTERNET_SCHEME_JAVASCRIPT,
+ INTERNET_SCHEME_VBSCRIPT,
+ INTERNET_SCHEME_RES);
+
+const
+ INTERNET_SCHEME_FIRST = INTERNET_SCHEME_FTP;
+ INTERNET_SCHEME_LAST = INTERNET_SCHEME_RES;
+
+type
+ LPINTERNET_SCHEME = ^INTERNET_SCHEME;
+
+//
+// INTERNET_ASYNC_RESULT - this structure is returned to the application via
+// the callback with INTERNET_STATUS_REQUEST_COMPLETE. It is not sufficient to
+// just return the result of the async operation. If the API failed then the
+// app cannot call GetLastError() because the thread context will be incorrect.
+// Both the value returned by the async API and any resultant error code are
+// made available. The app need not check dwError if dwResult indicates that
+// the API succeeded (in this case dwError will be ERROR_SUCCESS)
+//
+
+type
+ INTERNET_ASYNC_RESULT = record
+ //
+ // dwResult - the HINTERNET, DWORD or BOOL return code from an async API
+ //
+ dwResult:DWORD_PTR;
+ //
+ // dwError - the error code if the API failed
+ //
+ dwError:DWORD;
+ end;
+ LPINTERNET_ASYNC_RESULT = ^INTERNET_ASYNC_RESULT;
+
+
+//
+// INTERNET_PROXY_INFO - structure supplied with INTERNET_OPTION_PROXY to get/
+// set proxy information on a InternetOpen() handle
+//
+
+type
+ INTERNET_PROXY_INFO = record
+ //
+ // dwAccessType - INTERNET_OPEN_TYPE_DIRECT, INTERNET_OPEN_TYPE_PROXY, or
+ // INTERNET_OPEN_TYPE_PRECONFIG (set only)
+ //
+ dwAccessType:DWORD;
+
+ //
+ // lpszProxy - proxy server list
+ //
+ lpszProxy:LPCTSTR;
+
+ //
+ // lpszProxyBypass - proxy bypass list
+ //
+ lpszProxyBypass:LPCTSTR;
+ end;
+ LPINTERNET_PROXY_INFO = ^INTERNET_PROXY_INFO;
+
+//
+// INTERNET_PER_CONN_OPTION_LIST - set per-connection options such as proxy
+// and autoconfig info
+//
+// Set and queried using Internet[Set|Query]Option with
+// INTERNET_OPTION_PER_CONNECTION_OPTION
+//
+type
+ INTERNET_PER_CONN_OPTIONA = record
+ dwOption:DWORD; // option to be queried or set
+ case DWORD of
+ 0: (dwValue:DWORD); // dword value for the option
+ 1: (pszValue:LPSTR); // pointer to string value for the option
+ 2: (ftValue:FILETIME); // file-time value for the option
+ end;
+ LPINTERNET_PER_CONN_OPTIONA = ^INTERNET_PER_CONN_OPTIONA;
+
+type
+ INTERNET_PER_CONN_OPTIONW = record
+ dwOption:DWORD; // option to be queried or set
+ case DWORD of
+ 0: (dwValue:DWORD); // dword value for the option
+ 1: (pszValue:LPWSTR); // pointer to string value for the option
+ 2: (ftValue:FILETIME); // file-time value for the option
+ end;
+ LPINTERNET_PER_CONN_OPTIONW = ^INTERNET_PER_CONN_OPTIONW;
+
+{$IFDEF UNICODE}
+type
+ INTERNET_PER_CONN_OPTION = INTERNET_PER_CONN_OPTIONW;
+ LPINTERNET_PER_CONN_OPTION = LPINTERNET_PER_CONN_OPTIONW;
+{$ELSE UNICODE}
+type
+ INTERNET_PER_CONN_OPTION = INTERNET_PER_CONN_OPTIONA;
+ LPINTERNET_PER_CONN_OPTION = LPINTERNET_PER_CONN_OPTIONA;
+{$ENDIF UNICODE}
+
+type
+ INTERNET_PER_CONN_OPTION_LISTA = record
+ dwSize:DWORD; // size of the INTERNET_PER_CONN_OPTION_LIST struct
+ pszConnection:LPSTR; // connection name to set/query options
+ dwOptionCount:DWORD; // number of options to set/query
+ dwOptionError:DWORD; // on error, which option failed
+ pOptions:LPINTERNET_PER_CONN_OPTIONA; // array of options to set/query
+ end;
+ LPINTERNET_PER_CONN_OPTION_LISTA = ^INTERNET_PER_CONN_OPTION_LISTA;
+
+type
+ INTERNET_PER_CONN_OPTION_LISTW = record
+ dwSize:DWORD; // size of the INTERNET_PER_CONN_OPTION_LIST struct
+ pszConnection:LPWSTR; // connection name to set/query options
+ dwOptionCount:DWORD; // number of options to set/query
+ dwOptionError:DWORD; // on error, which option failed
+ pOptions:LPINTERNET_PER_CONN_OPTIONW; // array of options to set/query
+ end;
+ LPINTERNET_PER_CONN_OPTION_LISTW = ^INTERNET_PER_CONN_OPTION_LISTW;
+
+{$IFDEF UNICODE}
+type
+ INTERNET_PER_CONN_OPTION_LIST = INTERNET_PER_CONN_OPTION_LISTW;
+ LPINTERNET_PER_CONN_OPTION_LIST = LPINTERNET_PER_CONN_OPTION_LISTW;
+{$ELSE UNICODE}
+type
+ INTERNET_PER_CONN_OPTION_LIST = INTERNET_PER_CONN_OPTION_LISTA;
+ LPINTERNET_PER_CONN_OPTION_LIST = LPINTERNET_PER_CONN_OPTION_LISTA;
+{$ENDIF UNICODE}
+
+//
+// Options used in INTERNET_PER_CONN_OPTON struct
+//
+const
+ INTERNET_PER_CONN_FLAGS = 1;
+ INTERNET_PER_CONN_PROXY_SERVER = 2;
+ INTERNET_PER_CONN_PROXY_BYPASS = 3;
+ INTERNET_PER_CONN_AUTOCONFIG_URL = 4;
+ INTERNET_PER_CONN_AUTODISCOVERY_FLAGS = 5;
+ INTERNET_PER_CONN_AUTOCONFIG_SECONDARY_URL = 6;
+ INTERNET_PER_CONN_AUTOCONFIG_RELOAD_DELAY_MINS = 7;
+ INTERNET_PER_CONN_AUTOCONFIG_LAST_DETECT_TIME = 8;
+ INTERNET_PER_CONN_AUTOCONFIG_LAST_DETECT_URL = 9;
+
+//
+// PER_CONN_FLAGS
+//
+const
+ PROXY_TYPE_DIRECT = $00000001; // direct to net
+ PROXY_TYPE_PROXY = $00000002; // via named proxy
+ PROXY_TYPE_AUTO_PROXY_URL = $00000004; // autoproxy URL
+ PROXY_TYPE_AUTO_DETECT = $00000008; // use autoproxy detection
+
+//
+// PER_CONN_AUTODISCOVERY_FLAGS
+//
+ AUTO_PROXY_FLAG_USER_SET = $00000001; // user changed this setting
+ AUTO_PROXY_FLAG_ALWAYS_DETECT = $00000002; // force detection even when its not needed
+ AUTO_PROXY_FLAG_DETECTION_RUN = $00000004; // detection has been run
+ AUTO_PROXY_FLAG_MIGRATED = $00000008; // migration has just been done
+ AUTO_PROXY_FLAG_DONT_CACHE_PROXY_RESULT = $00000010; // don't cache result of host=proxy name
+ AUTO_PROXY_FLAG_CACHE_INIT_RUN = $00000020; // don't initalize and run unless URL expired
+ AUTO_PROXY_FLAG_DETECTION_SUSPECT = $00000040; // if we're on a LAN & Modem, with only one IP, bad?!?
+
+//
+// INTERNET_VERSION_INFO - version information returned via
+// InternetQueryOption(..., INTERNET_OPTION_VERSION, ...)
+//
+type
+ INTERNET_VERSION_INFO = record
+ dwMajorVersion:DWORD;
+ dwMinorVersion:DWORD;
+ end;
+ LPINTERNET_VERSION_INFO = ^INTERNET_VERSION_INFO;
+
+//
+// HTTP_VERSION_INFO - query or set global HTTP version (1.0 or 1.1)
+//
+type
+ HTTP_VERSION_INFO = record
+ dwMajorVersion:DWORD;
+ dwMinorVersion:DWORD;
+ end;
+ LPHTTP_VERSION_INFO = ^HTTP_VERSION_INFO;
+
+//
+// INTERNET_CONNECTED_INFO - information used to set the global connected state
+//
+
+type
+ INTERNET_CONNECTED_INFO = record
+ //
+ // dwConnectedState - new connected/disconnected state.
+ // See INTERNET_STATE_CONNECTED, etc.
+ //
+ dwConnectedState:DWORD;
+ //
+ // dwFlags - flags controlling connected->disconnected (or disconnected->
+ // connected) transition. See below
+ //
+ dwFlags:DWORD;
+ end;
+ LPINTERNET_CONNECTED_INFO = ^INTERNET_CONNECTED_INFO;
+
+
+//
+// flags for INTERNET_CONNECTED_INFO dwFlags
+//
+
+//
+// ISO_FORCE_DISCONNECTED - if set when putting Wininet into disconnected mode,
+// all outstanding requests will be aborted with a cancelled error
+//
+const
+ ISO_FORCE_DISCONNECTED = $00000001;
+
+
+//
+// URL_COMPONENTS - the constituent parts of an URL. Used in InternetCrackUrl()
+// and InternetCreateUrl()
+//
+// For InternetCrackUrl(), if a pointer field and its corresponding length field
+// are both 0 then that component is not returned. If the pointer field is NULL
+// but the length field is not zero, then both the pointer and length fields are
+// returned if both pointer and corresponding length fields are non-zero then
+// the pointer field points to a buffer where the component is copied. The
+// component may be un-escaped, depending on dwFlags
+//
+// For InternetCreateUrl(), the pointer fields should be NULL if the component
+// is not required. If the corresponding length field is zero then the pointer
+// field is the address of a zero-terminated string. If the length field is not
+// zero then it is the string length of the corresponding pointer field
+//
+
+// #pragma warning( disable : 4121 ) // disable alignment warning
+
+type
+ URL_COMPONENTSA = record
+ dwStructSize:DWORD; // size of this structure. Used in version check
+ lpszScheme:LPSTR; // pointer to scheme name
+ dwSchemeLength:DWORD; // length of scheme name
+ nScheme:INTERNET_SCHEME; // enumerated scheme type (if known)
+ lpszHostName:LPSTR; // pointer to host name
+ dwHostNameLength:DWORD; // length of host name
+ nPort:INTERNET_PORT; // converted port number
+ lpszUserName:LPSTR; // pointer to user name
+ dwUserNameLength:DWORD; // length of user name
+ lpszPassword:LPSTR; // pointer to password
+ dwPasswordLength:DWORD; // length of password
+ lpszUrlPath:LPSTR; // pointer to URL-path
+ dwUrlPathLength:DWORD; // length of URL-path
+ lpszExtraInfo:LPSTR; // pointer to extra information (e.g. ?foo or #foo)
+ dwExtraInfoLength:DWORD; // length of extra information
+ end;
+ LPURL_COMPONENTSA = ^URL_COMPONENTSA;
+
+type
+ URL_COMPONENTSW = record
+ dwStructSize:DWORD; // size of this structure. Used in version check
+ lpszScheme:LPWSTR; // pointer to scheme name
+ dwSchemeLength:DWORD; // length of scheme name
+ nScheme:INTERNET_SCHEME; // enumerated scheme type (if known)
+ lpszHostName:LPWSTR; // pointer to host name
+ dwHostNameLength:DWORD; // length of host name
+ nPort:INTERNET_PORT; // converted port number
+ lpszUserName:LPWSTR; // pointer to user name
+ dwUserNameLength:DWORD; // length of user name
+ lpszPassword:LPWSTR; // pointer to password
+ dwPasswordLength:DWORD; // length of password
+ lpszUrlPath:LPWSTR; // pointer to URL-path
+ dwUrlPathLength:DWORD; // length of URL-path
+ lpszExtraInfo:LPWSTR; // pointer to extra information (e.g. ?foo or #foo)
+ dwExtraInfoLength:DWORD; // length of extra information
+ end;
+ LPURL_COMPONENTSW = ^URL_COMPONENTSW;
+
+{$IFDEF UNICODE}
+type
+ URL_COMPONENTS = URL_COMPONENTSW;
+ LPURL_COMPONENTS = LPURL_COMPONENTSW;
+{$ELSE UNICODE}
+type
+ URL_COMPONENTS = URL_COMPONENTSA;
+ LPURL_COMPONENTS = LPURL_COMPONENTSA;
+{$ENDIF UNICODE}
+
+// #pragma warning( default : 4121 ) // restore alignment warning
+
+//
+// INTERNET_CERTIFICATE_INFO lpBuffer - contains the certificate returned from
+// the server
+//
+
+type
+ INTERNET_CERTIFICATE_INFO = record
+ //
+ // ftExpiry - date the certificate expires.
+ //
+ ftExpiry:FILETIME;
+
+ //
+ // ftStart - date the certificate becomes valid.
+ //
+ ftStart:FILETIME;
+
+ //
+ // lpszSubjectInfo - the name of organization, site, and server
+ // the cert. was issued for.
+ //
+ lpszSubjectInfo:LPTSTR;
+
+ //
+ // lpszIssuerInfo - the name of orgainzation, site, and server
+ // the cert was issues by.
+ //
+ lpszIssuerInfo:LPTSTR;
+
+ //
+ // lpszProtocolName - the name of the protocol used to provide the secure
+ // connection.
+ //
+ lpszProtocolName:LPTSTR;
+
+ //
+ // lpszSignatureAlgName - the name of the algorithm used for signing
+ // the certificate.
+ //
+ lpszSignatureAlgName:LPTSTR;
+
+ //
+ // lpszEncryptionAlgName - the name of the algorithm used for
+ // doing encryption over the secure channel (SSL/PCT) connection.
+ //
+ lpszEncryptionAlgName:LPTSTR;
+
+ //
+ // dwKeySize - size of the key.
+ //
+ dwKeySize:DWORD;
+ end;
+ LPINTERNET_CERTIFICATE_INFO = ^INTERNET_CERTIFICATE_INFO;
+
+
+//
+// INTERNET_BUFFERS - combines headers and data. May be chained for e.g. file
+// upload or scatter/gather operations. For chunked read/write, lpcszHeader
+// contains the chunked-ext
+//
+type
+ LPINTERNET_BUFFERSA = ^_INTERNET_BUFFERSA;
+ _INTERNET_BUFFERSA = record
+ dwStructSize:DWORD; // used for API versioning. Set to sizeof(INTERNET_BUFFERS)
+ Next:LPINTERNET_BUFFERSA; // chain of buffers
+ lpcszHeader:LPCSTR; // pointer to headers (may be NULL)
+ dwHeadersLength:DWORD; // length of headers if not NULL
+ dwHeadersTotal:DWORD; // size of headers if not enough buffer
+ lpvBuffer:LPVOID; // pointer to data buffer (may be NULL)
+ dwBufferLength:DWORD; // length of data buffer if not NULL
+ dwBufferTotal:DWORD; // total size of chunk, or content-length if not chunked
+ dwOffsetLow:DWORD; // used for read-ranges (only used in HttpSendRequest2)
+ dwOffsetHigh:DWORD;
+ end;
+ INTERNET_BUFFERSA = _INTERNET_BUFFERSA;
+
+type
+ LPINTERNET_BUFFERSW = ^_INTERNET_BUFFERSW;
+ _INTERNET_BUFFERSW = record
+ dwStructSize:DWORD; // used for API versioning. Set to sizeof(INTERNET_BUFFERS)
+ Next:LPINTERNET_BUFFERSW; // chain of buffers
+ lpcszHeader:LPCSTR; // pointer to headers (may be NULL)
+ dwHeadersLength:DWORD; // length of headers if not NULL
+ dwHeadersTotal:DWORD; // size of headers if not enough buffer
+ lpvBuffer:LPVOID; // pointer to data buffer (may be NULL)
+ dwBufferLength:DWORD; // length of data buffer if not NULL
+ dwBufferTotal:DWORD; // total size of chunk, or content-length if not chunked
+ dwOffsetLow:DWORD; // used for read-ranges (only used in HttpSendRequest2)
+ dwOffsetHigh:DWORD;
+ end;
+ INTERNET_BUFFERSW = _INTERNET_BUFFERSW;
+
+{$IFDEF UNICODE}
+type
+ INTERNET_BUFFERS = INTERNET_BUFFERSW;
+ LPINTERNET_BUFFERS = LPINTERNET_BUFFERSW;
+{$ELSE UNICODE}
+type
+ INTERNET_BUFFERS = INTERNET_BUFFERSA;
+ LPINTERNET_BUFFERS = LPINTERNET_BUFFERSA;
+{$ENDIF UNICODE}
+
+//
+// prototypes
+//
+const
+ WinInetDLL = 'wininet.dll';
+
+function InternetTimeFromSystemTimeA(pst:LPSYSTEMTIME; // input GMT time
+ dwRFC:DWORD; // RFC format
+ lpszTime:LPSTR; // output string buffer
+ cbTime:DWORD // output buffer size
+ ):BOOL; external WinInetDLL name 'InternetTimeFromSystemTimeA';
+
+function InternetTimeFromSystemTimeW(pst:LPSYSTEMTIME; // input GMT time
+ dwRFC:DWORD; // RFC format
+ lpszTime:LPWSTR; // output string buffer
+ cbTime:DWORD // output buffer size
+ ):BOOL; external WinInetDLL name 'InternetTimeFromSystemTimeW';
+
+{$IFDEF UNICODE}
+function InternetTimeFromSystemTime(pst:LPSYSTEMTIME; // input GMT time
+ dwRFC:DWORD; // RFC format
+ lpszTime:LPWSTR; // output string buffer
+ cbTime:DWORD // output buffer size
+ ):BOOL; external WinInetDLL name 'InternetTimeFromSystemTimeW';
+{$ELSE UNICODE}
+{$IFDEF WIN32}
+function InternetTimeFromSystemTime(pst:LPSYSTEMTIME; // input GMT time
+ dwRFC:DWORD; // RFC format
+ lpszTime:LPSTR; // output string buffer
+ cbTime:DWORD // output buffer size
+ ):BOOL; external WinInetDLL name 'InternetTimeFromSystemTimeA';
+{$ELSE WIN32}
+function InternetTimeFromSystemTime(pst:LPSYSTEMTIME; // input GMT time
+ dwRFC:DWORD; // RFC format
+ lpszTime:LPSTR; // output string buffer
+ cbTime:DWORD // output buffer size
+ ):BOOL; external WinInetDLL name 'InternetTimeFromSystemTime';
+{$ENDIF WIN32}
+{$ENDIF UNICODE}
+
+
+//
+// constants for InternetTimeFromSystemTime
+//
+const
+ INTERNET_RFC1123_FORMAT = 0;
+ INTERNET_RFC1123_BUFSIZE = 30;
+
+function InternetTimeToSystemTimeA(lpszTime:LPCSTR; // NULL terminated string
+ pst:LPSYSTEMTIME; // output in GMT time
+ dwReserved:DWORD
+ ):BOOL; external WinInetDLL name 'InternetTimeToSystemTimeA';
+
+function InternetTimeToSystemTimeW(lpszTime:LPCWSTR; // NULL terminated string
+ pst:LPSYSTEMTIME; // output in GMT time
+ dwReserved:DWORD
+ ):BOOL; external WinInetDLL name 'InternetTimeToSystemTimeW';
+
+{$IFDEF UNICODE}
+function InternetTimeToSystemTime(lpszTime:LPCWSTR; // NULL terminated string
+ pst:LPSYSTEMTIME; // output in GMT time
+ dwReserved:DWORD
+ ):BOOL; external WinInetDLL name 'InternetTimeToSystemTimeW';
+{$ELSE UNICODE}
+{$IFDEF WIN32}
+function InternetTimeToSystemTime(lpszTime:LPCSTR; // NULL terminated string
+ pst:LPSYSTEMTIME; // output in GMT time
+ dwReserved:DWORD
+ ):BOOL; external WinInetDLL name 'InternetTimeToSystemTimeA';
+{$ELSE WIN32}
+function InternetTimeToSystemTime(lpszTime:LPCSTR; // NULL terminated string
+ pst:LPSYSTEMTIME; // output in GMT time
+ dwReserved:DWORD
+ ):BOOL; external WinInetDLL name 'InternetTimeToSystemTime';
+{$ENDIF WIN32}
+{$ENDIF UNICODE}
+
+function InternetCrackUrlA(lpszUrl:LPCSTR;
+ dwUrlLength:DWORD;
+ dwFlags:DWORD;
+ lpUrlComponents:LPURL_COMPONENTSA
+ ):BOOL; external WinInetDLL name 'InternetCrackUrlA';
+
+function InternetCrackUrlW(lpszUrl:LPCWSTR;
+ dwUrlLength:DWORD;
+ dwFlags:DWORD;
+ lpUrlComponents:LPURL_COMPONENTSW
+ ):BOOL; external WinInetDLL name 'InternetCrackUrlW';
+
+{$IFDEF UNICODE}
+function InternetCrackUrl(lpszUrl:LPCWSTR;
+ dwUrlLength:DWORD;
+ dwFlags:DWORD;
+ lpUrlComponents:LPURL_COMPONENTSW
+ ):BOOL; external WinInetDLL name 'InternetCrackUrlW';
+{$ELSE UNICODE}
+function InternetCrackUrl(lpszUrl:LPCSTR;
+ dwUrlLength:DWORD;
+ dwFlags:DWORD;
+ lpUrlComponents:LPURL_COMPONENTSA
+ ):BOOL; external WinInetDLL name 'InternetCrackUrlA';
+{$ENDIF UNICODE}
+
+function InternetCreateUrlA(lpUrlComponents:LPURL_COMPONENTSA;
+ dwFlags:DWORD;
+ lpszUrl:LPSTR;
+ lpdwUrlLength:LPDWORD
+ ):BOOL; external WinInetDLL name 'InternetCreateUrlA';
+
+function InternetCreateUrlW(lpUrlComponents:LPURL_COMPONENTSW;
+ dwFlags:DWORD;
+ lpszUrl:LPWSTR;
+ lpdwUrlLength:LPDWORD
+ ):BOOL; external WinInetDLL name 'InternetCreateUrlW';
+
+{$IFDEF UNICODE}
+function InternetCreateUrl(lpUrlComponents:LPURL_COMPONENTSW;
+ dwFlags:DWORD;
+ lpszUrl:LPWSTR;
+ lpdwUrlLength:LPDWORD
+ ):BOOL; external WinInetDLL name 'InternetCreateUrlW';
+{$ELSE UNICODE}
+function InternetCreateUrl(lpUrlComponents:LPURL_COMPONENTSA;
+ dwFlags:DWORD;
+ lpszUrl:LPSTR;
+ lpdwUrlLength:LPDWORD
+ ):BOOL; external WinInetDLL name 'InternetCreateUrlA';
+{$ENDIF UNICODE}
+
+
+function InternetCanonicalizeUrlA(lpszUrl:LPCSTR;
+ lpszBuffer:LPSTR;
+ lpdwBufferLength:LPDWORD;
+ dwFlags:DWORD
+ ):BOOL; external WinInetDLL name 'InternetCanonicalizeUrlA';
+
+function InternetCanonicalizeUrlW(lpszUrl:LPCWSTR;
+ lpszBuffer:LPWSTR;
+ lpdwBufferLength:LPDWORD;
+ dwFlags:DWORD
+ ):BOOL; external WinInetDLL name 'InternetCanonicalizeUrlW';
+
+{$IFDEF UNICODE}
+function InternetCanonicalizeUrl(lpszUrl:LPCWSTR;
+ lpszBuffer:LPWSTR;
+ lpdwBufferLength:LPDWORD;
+ dwFlags:DWORD
+ ):BOOL; external WinInetDLL name 'InternetCanonicalizeUrlW';
+{$ELSE UNICODE}
+function InternetCanonicalizeUrl(lpszUrl:LPCSTR;
+ lpszBuffer:LPSTR;
+ lpdwBufferLength:LPDWORD;
+ dwFlags:DWORD
+ ):BOOL; external WinInetDLL name 'InternetCanonicalizeUrlA';
+{$ENDIF UNICODE}
+
+function InternetCombineUrlA(lpszBaseUrl:LPCSTR;
+ lpszRelativeUrl:LPCSTR;
+ lpszBuffer:LPSTR;
+ lpdwBufferLength:LPDWORD;
+ dwFlags:DWORD
+ ):BOOL; external WinInetDLL name 'InternetCombineUrlA';
+
+function InternetCombineUrlW(lpszBaseUrl:LPCWSTR;
+ lpszRelativeUrl:LPCWSTR;
+ lpszBuffer:LPWSTR;
+ lpdwBufferLength:LPDWORD;
+ dwFlags:DWORD
+ ):BOOL; external WinInetDLL name 'InternetCombineUrlW';
+
+{$IFDEF UNICODE}
+function InternetCombineUrl(lpszBaseUrl:LPCWSTR;
+ lpszRelativeUrl:LPCWSTR;
+ lpszBuffer:LPWSTR;
+ lpdwBufferLength:LPDWORD;
+ dwFlags:DWORD
+ ):BOOL; external WinInetDLL name 'InternetCombineUrlW';
+{$ELSE UNICODE}
+function InternetCombineUrl(lpszBaseUrl:LPCSTR;
+ lpszRelativeUrl:LPCSTR;
+ lpszBuffer:LPSTR;
+ lpdwBufferLength:LPDWORD;
+ dwFlags:DWORD
+ ):BOOL; external WinInetDLL name 'InternetCombineUrlA';
+{$ENDIF UNICODE}
+
+//
+// flags for InternetCrackUrl() and InternetCreateUrl()
+//
+const
+ ICU_ESCAPE = $80000000; // (un)escape URL characters
+ ICU_USERNAME = $40000000; // use internal username & password
+ ICU_ESCAPE_AUTHORITY = $00002000; // causes InternetCreateUrlA to escape chars in authority components (user, pwd, host)
+
+
+//
+// flags for InternetCanonicalizeUrl() and InternetCombineUrl()
+//
+const
+ ICU_NO_ENCODE = $20000000; // Don't convert unsafe characters to escape sequence
+ ICU_DECODE = $10000000; // Convert %XX escape sequences to characters
+ ICU_NO_META = $08000000; // Don't convert .. etc. meta path sequences
+ ICU_ENCODE_SPACES_ONLY = $04000000; // Encode spaces only
+ ICU_BROWSER_MODE = $02000000; // Special encode/decode rules for browser
+ ICU_ENCODE_PERCENT = $00001000; // Encode any percent (ASCII25)
+ // signs encountered, default is to not encode percent.
+
+function InternetOpenA(lpszAgent:LPCSTR;
+ dwAccessType:DWORD;
+ lpszProxy:LPCSTR;
+ lpszProxyBypass:LPCSTR;
+ dwFlags:DWORD
+ ):HINTERNET; external WinInetDLL name 'InternetOpenA';
+
+function InternetOpenW(lpszAgent:LPCWSTR;
+ dwAccessType:DWORD;
+ lpszProxy:LPCWSTR;
+ lpszProxyBypass:LPCWSTR;
+ dwFlags:DWORD
+ ):HINTERNET; external WinInetDLL name 'InternetOpenW';
+
+{$IFDEF UNICODE}
+function InternetOpen(lpszAgent:LPCWSTR;
+ dwAccessType:DWORD;
+ lpszProxy:LPCWSTR;
+ lpszProxyBypass:LPCWSTR;
+ dwFlags:DWORD
+ ):HINTERNET; external WinInetDLL name 'InternetOpenW';
+{$ELSE UNICODE}
+function InternetOpen(lpszAgent:LPCSTR;
+ dwAccessType:DWORD;
+ lpszProxy:LPCSTR;
+ lpszProxyBypass:LPCSTR;
+ dwFlags:DWORD
+ ):HINTERNET; external WinInetDLL name 'InternetOpenA';
+{$ENDIF UNICODE}
+
+//
+// access types for InternetOpen()
+//
+const
+ INTERNET_OPEN_TYPE_PRECONFIG = 0; // use registry configuration
+ INTERNET_OPEN_TYPE_DIRECT = 1; // direct to net
+ INTERNET_OPEN_TYPE_PROXY = 3; // via named proxy
+ INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY = 4; // prevent using java/script/INS
+
+//
+// old names for access types
+//
+const
+ PRE_CONFIG_INTERNET_ACCESS = INTERNET_OPEN_TYPE_PRECONFIG;
+ LOCAL_INTERNET_ACCESS = INTERNET_OPEN_TYPE_DIRECT;
+ CERN_PROXY_INTERNET_ACCESS = INTERNET_OPEN_TYPE_PROXY;
+
+function InternetCloseHandle(_hInternet:HINTERNET):BOOL; external WinInetDLL name 'InternetCloseHandle';
+
+function InternetConnectA(_hInternet:HINTERNET;
+ lpszServerName:LPCSTR;
+ nServerPort:INTERNET_PORT;
+ lpszUserName:LPCSTR;
+ lpszPassword:LPCSTR;
+ dwService:DWORD;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):HINTERNET; external WinInetDLL name 'InternetConnectA';
+
+function InternetConnectW(_hInternet:HINTERNET;
+ lpszServerName:LPCWSTR;
+ nServerPort:INTERNET_PORT;
+ lpszUserName:LPCWSTR;
+ lpszPassword:LPCWSTR;
+ dwService:DWORD;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):HINTERNET; external WinInetDLL name 'InternetConnectW';
+
+{$IFDEF UNICODE}
+function InternetConnect(_hInternet:HINTERNET;
+ lpszServerName:LPCWSTR;
+ nServerPort:INTERNET_PORT;
+ lpszUserName:LPCWSTR;
+ lpszPassword:LPCWSTR;
+ dwService:DWORD;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):HINTERNET; external WinInetDLL name 'InternetConnectW';
+{$ELSE UNICODE}
+function InternetConnect(_hInternet:HINTERNET;
+ lpszServerName:LPCSTR;
+ nServerPort:INTERNET_PORT;
+ lpszUserName:LPCSTR;
+ lpszPassword:LPCSTR;
+ dwService:DWORD;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):HINTERNET; external WinInetDLL name 'InternetConnectA';
+{$ENDIF UNICODE}
+
+//
+// service types for InternetConnect()
+//
+const
+ INTERNET_SERVICE_FTP = 1;
+ INTERNET_SERVICE_GOPHER = 2;
+ INTERNET_SERVICE_HTTP = 3;
+
+
+function InternetOpenUrlA(_hInternet:HINTERNET;
+ lpszUrl:LPCSTR;
+ lpszHeaders:LPCSTR;
+ dwHeadersLength:DWORD;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):HINTERNET; external WinInetDLL name 'InternetOpenUrlA';
+
+function InternetOpenUrlW(_hInternet:HINTERNET;
+ lpszUrl:LPCWSTR;
+ lpszHeaders:LPCWSTR;
+ dwHeadersLength:DWORD;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):HINTERNET; external WinInetDLL name 'InternetOpenUrlW';
+
+{$IFDEF UNICODE}
+function InternetOpenUrl(_hInternet:HINTERNET;
+ lpszUrl:LPCWSTR;
+ lpszHeaders:LPCWSTR;
+ dwHeadersLength:DWORD;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):HINTERNET; external WinInetDLL name 'InternetOpenUrlW';
+{$ELSE UNICODE}
+function InternetOpenUrl(_hInternet:HINTERNET;
+ lpszUrl:LPCSTR;
+ lpszHeaders:LPCSTR;
+ dwHeadersLength:DWORD;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):HINTERNET; external WinInetDLL name 'InternetOpenUrlA';
+{$ENDIF UNICODE}
+
+function InternetReadFile(_hFile:HINTERNET;
+ lpBuffer:LPVOID;
+ dwNumberOfBytesToRead:DWORD;
+ lpdwNumberOfBytesRead:LPDWORD
+ ):BOOL; external WinInetDLL name 'InternetREadFile';
+
+function InternetReadFileExA(_hFile:HINTERNET;
+ lpBuffersOut:LPINTERNET_BUFFERSA;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):BOOL; external WinInetDLL name 'InternetReadFileExA';
+
+function InternetReadFileExW(_hFile:HINTERNET;
+ lpBuffersOut:LPINTERNET_BUFFERSW;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):BOOL; external WinInetDLL name 'InternetReadFileExW';
+
+{$IFDEF UNICODE}
+function InternetReadFileEx(_hFile:HINTERNET;
+ lpBuffersOut:LPINTERNET_BUFFERSW;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):BOOL; external WinInetDLL name 'InternetReadFileExW';
+{$ELSE UNICODE}
+function InternetReadFileEx(_hFile:HINTERNET;
+ lpBuffersOut:LPINTERNET_BUFFERSA;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):BOOL; external WinInetDLL name 'InternetReadFileExA';
+{$ENDIF UNICODE}
+
+
+//
+// flags for InternetReadFileEx()
+//
+const
+ IRF_ASYNC = WININET_API_FLAG_ASYNC;
+ IRF_SYNC = WININET_API_FLAG_SYNC;
+ IRF_USE_CONTEXT = WININET_API_FLAG_USE_CONTEXT;
+ IRF_NO_WAIT = $00000008;
+
+function InternetSetFilePointer(_hFile:HINTERNET;
+ lDistanceToMove:LONG;
+ pReserved:PVOID;
+ dwMoveMethod:DWORD;
+ dwContext:DWORD_PTR
+ ):DWORD; external WinInetDLL name 'InternetSetFilePointer';
+
+function InternetWriteFile(_hFile:HINTERNET;
+ lpBuffer:LPCVOID;
+ dwNumberOfBytesToWrite:DWORD;
+ lpdwNumberOfBytesWritten:LPDWORD
+ ):BOOL; external WinInetDLL name 'InternetWriteFile';
+
+
+function InternetQueryDataAvailable(_hFile:HINTERNET;
+ lpdwNumberOfBytesAvailable:LPDWORD;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):BOOL; external WinInetDLL name 'InternetQueryDataAvailable';
+
+function InternetFindNextFileA(hFind:HINTERNET;
+ lpvFindData:LPVOID
+ ):BOOL; external WinInetDLL name 'InternetFindNextFileA';
+
+function InternetFindNextFileW(hFind:HINTERNET;
+ lpvFindData:LPVOID
+ ):BOOL; external WinInetDLL name 'InternetFindNextFileW';
+
+{$IFDEF UNICODE}
+function InternetFindNextFile(hFind:HINTERNET;
+ lpvFindData:LPVOID
+ ):BOOL; external WinInetDLL name 'InternetFindNextFileW';
+{$ELSE UNICODE}
+function InternetFindNextFile(hFind:HINTERNET;
+ lpvFindData:LPVOID
+ ):BOOL; external WinInetDLL name 'InternetFindNextFileA';
+{$ENDIF UNICODE}
+
+function InternetQueryOptionA(_hInternet:HINTERNET;
+ dwOption:DWORD;
+ lpBuffer:LPVOID;
+ lpdwBufferLength:LPDWORD
+ ):BOOL; external WinInetDLL name 'InternetQueryOptionA';
+
+function InternetQueryOptionW(_hInternet:HINTERNET;
+ dwOption:DWORD;
+ lpBuffer:LPVOID;
+ lpdwBufferLength:LPDWORD
+ ):BOOL; external WinInetDLL name 'InternetQueryOptionW';
+
+{$IFDEF UNICODE}
+function InternetQueryOption(_hInternet:HINTERNET;
+ dwOption:DWORD;
+ lpBuffer:LPVOID;
+ lpdwBufferLength:LPDWORD
+ ):BOOL; external WinInetDLL name 'InternetQueryOptionW';
+{$ELSE UNICODE}
+function InternetQueryOption(_hInternet:HINTERNET;
+ dwOption:DWORD;
+ lpBuffer:LPVOID;
+ lpdwBufferLength:LPDWORD
+ ):BOOL; external WinInetDLL name 'InternetQueryOptionA';
+{$ENDIF UNICODE}
+
+function InternetSetOptionA(_hInternet:HINTERNET;
+ dwOption:DWORD;
+ lpBuffer:LPVOID;
+ dwBufferLength:DWORD
+ ):BOOL; external WinInetDLL name 'InternetSetOptionA';
+
+function InternetSetOptionW(_hInternet:HINTERNET;
+ dwOption:DWORD;
+ lpBuffer:LPVOID;
+ dwBufferLength:DWORD
+ ):BOOL; external WinInetDLL name 'InternetSetOptionW';
+
+{$IFDEF UNICODE}
+function InternetSetOption(_hInternet:HINTERNET;
+ dwOption:DWORD;
+ lpBuffer:LPVOID;
+ dwBufferLength:DWORD
+ ):BOOL; external WinInetDLL name 'InternetSetOptionW';
+{$ELSE UNICODE}
+function InternetSetOption(_hInternet:HINTERNET;
+ dwOption:DWORD;
+ lpBuffer:LPVOID;
+ dwBufferLength:DWORD
+ ):BOOL; external WinInetDLL name 'InternetSetOptionA';
+{$ENDIF UNICODE}
+
+function InternetSetOptionExA(_hInternet:HINTERNET;
+ dwOption:DWORD;
+ lpBuffer:LPVOID;
+ dwBufferLength:DWORD;
+ dwFlags:DWORD
+ ):BOOL; external WinInetDLL name 'InternetSetOptionExA';
+
+function InternetSetOptionExW(_hInternet:HINTERNET;
+ dwOption:DWORD;
+ lpBuffer:LPVOID;
+ dwBufferLength:DWORD;
+ dwFlags:DWORD
+ ):BOOL; external WinInetDLL name 'InternetSetOptionExW';
+
+{$IFDEF UNICODE}
+function InternetSetOptionEx(_hInternet:HINTERNET;
+ dwOption:DWORD;
+ lpBuffer:LPVOID;
+ dwBufferLength:DWORD;
+ dwFlags:DWORD
+ ):BOOL; external WinInetDLL name 'InternetSetOptionExW';
+{$ELSE UNICODE}
+function InternetSetOptionEx(_hInternet:HINTERNET;
+ dwOption:DWORD;
+ lpBuffer:LPVOID;
+ dwBufferLength:DWORD;
+ dwFlags:DWORD
+ ):BOOL; external WinInetDLL name 'InternetSetOptionExA';
+{$ENDIF UNICODE}
+
+
+function InternetLockRequestFile(_hInternet:HINTERNET;
+ lphLockRequestInfo:LPHANDLE
+ ):BOOL; external WinInetDLL name 'InternetLockRequestFile';
+
+function InternetUnlockRequestFile(hLockRequestInfo:HANDLE):BOOL; external WinInetDLL name 'InternetUnlockRequestFile';
+
+//
+// flags for InternetSetOptionEx()
+//
+const
+ ISO_GLOBAL = $00000001; // modify option globally
+ ISO_REGISTRY = $00000002; // write option to registry (where applicable)
+
+ ISO_VALID_FLAGS = ISO_GLOBAL or ISO_REGISTRY;
+
+//
+// options manifests for Internet{Query|Set}Option
+//
+const
+ INTERNET_OPTION_CALLBACK = 1;
+ INTERNET_OPTION_CONNECT_TIMEOUT = 2;
+ INTERNET_OPTION_CONNECT_RETRIES = 3;
+ INTERNET_OPTION_CONNECT_BACKOFF = 4;
+ INTERNET_OPTION_SEND_TIMEOUT = 5;
+ INTERNET_OPTION_CONTROL_SEND_TIMEOUT = INTERNET_OPTION_SEND_TIMEOUT;
+ INTERNET_OPTION_RECEIVE_TIMEOUT = 6;
+ INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT = INTERNET_OPTION_RECEIVE_TIMEOUT;
+ INTERNET_OPTION_DATA_SEND_TIMEOUT = 7;
+ INTERNET_OPTION_DATA_RECEIVE_TIMEOUT = 8;
+ INTERNET_OPTION_HANDLE_TYPE = 9;
+ INTERNET_OPTION_LISTEN_TIMEOUT = 11;
+ INTERNET_OPTION_READ_BUFFER_SIZE = 12;
+ INTERNET_OPTION_WRITE_BUFFER_SIZE = 13;
+
+ INTERNET_OPTION_ASYNC_ID = 15;
+ INTERNET_OPTION_ASYNC_PRIORITY = 16;
+
+ INTERNET_OPTION_PARENT_HANDLE = 21;
+ INTERNET_OPTION_KEEP_CONNECTION = 22;
+ INTERNET_OPTION_REQUEST_FLAGS = 23;
+ INTERNET_OPTION_EXTENDED_ERROR = 24;
+
+ INTERNET_OPTION_FLUSH_CACHE = 25;
+ INTERNET_OPTION_OFFLINE_MODE = 26;
+ INTERNET_OPTION_CACHE_STREAM_HANDLE = 27;
+ INTERNET_OPTION_USERNAME = 28;
+ INTERNET_OPTION_PASSWORD = 29;
+ INTERNET_OPTION_ASYNC = 30;
+ INTERNET_OPTION_SECURITY_FLAGS = 31;
+ INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT = 32;
+ INTERNET_OPTION_DATAFILE_NAME = 33;
+ INTERNET_OPTION_URL = 34;
+ INTERNET_OPTION_SECURITY_CERTIFICATE = 35;
+ INTERNET_OPTION_SECURITY_KEY_BITNESS = 36;
+ INTERNET_OPTION_REFRESH = 37;
+ INTERNET_OPTION_PROXY = 38;
+ INTERNET_OPTION_SETTINGS_CHANGED = 39;
+ INTERNET_OPTION_VERSION = 40;
+ INTERNET_OPTION_USER_AGENT = 41;
+ INTERNET_OPTION_END_BROWSER_SESSION = 42;
+ INTERNET_OPTION_PROXY_USERNAME = 43;
+ INTERNET_OPTION_PROXY_PASSWORD = 44;
+ INTERNET_OPTION_CONTEXT_VALUE = 45;
+ INTERNET_OPTION_CONNECT_LIMIT = 46;
+ INTERNET_OPTION_SECURITY_SELECT_CLIENT_CERT = 47;
+ INTERNET_OPTION_POLICY = 48;
+ INTERNET_OPTION_DISCONNECTED_TIMEOUT = 49;
+ INTERNET_OPTION_CONNECTED_STATE = 50;
+ INTERNET_OPTION_IDLE_STATE = 51;
+ INTERNET_OPTION_OFFLINE_SEMANTICS = 52;
+ INTERNET_OPTION_SECONDARY_CACHE_KEY = 53;
+ INTERNET_OPTION_CALLBACK_FILTER = 54;
+ INTERNET_OPTION_CONNECT_TIME = 55;
+ INTERNET_OPTION_SEND_THROUGHPUT = 56;
+ INTERNET_OPTION_RECEIVE_THROUGHPUT = 57;
+ INTERNET_OPTION_REQUEST_PRIORITY = 58;
+ INTERNET_OPTION_HTTP_VERSION = 59;
+ INTERNET_OPTION_RESET_URLCACHE_SESSION = 60;
+ INTERNET_OPTION_ERROR_MASK = 62;
+ INTERNET_OPTION_FROM_CACHE_TIMEOUT = 63;
+ INTERNET_OPTION_BYPASS_EDITED_ENTRY = 64;
+ INTERNET_OPTION_CODEPAGE = 68;
+ INTERNET_OPTION_CACHE_TIMESTAMPS = 69;
+ INTERNET_OPTION_DISABLE_AUTODIAL = 70;
+ INTERNET_OPTION_MAX_CONNS_PER_SERVER = 73;
+ INTERNET_OPTION_MAX_CONNS_PER_1_0_SERVER = 74;
+ INTERNET_OPTION_PER_CONNECTION_OPTION = 75;
+ INTERNET_OPTION_DIGEST_AUTH_UNLOAD = 76;
+ INTERNET_OPTION_IGNORE_OFFLINE = 77;
+ INTERNET_OPTION_IDENTITY = 78;
+ INTERNET_OPTION_REMOVE_IDENTITY = 79;
+ INTERNET_OPTION_ALTER_IDENTITY = 80;
+ INTERNET_OPTION_SUPPRESS_BEHAVIOR = 81;
+ INTERNET_OPTION_AUTODIAL_MODE = 82;
+ INTERNET_OPTION_AUTODIAL_CONNECTION = 83;
+ INTERNET_OPTION_CLIENT_CERT_CONTEXT = 84;
+ INTERNET_OPTION_AUTH_FLAGS = 85;
+ INTERNET_OPTION_COOKIES_3RD_PARTY = 86;
+ INTERNET_OPTION_DISABLE_PASSPORT_AUTH = 87;
+ INTERNET_OPTION_SEND_UTF8_SERVERNAME_TO_PROXY = 88;
+ INTERNET_OPTION_EXEMPT_CONNECTION_LIMIT = 89;
+ INTERNET_OPTION_ENABLE_PASSPORT_AUTH = 90;
+
+ INTERNET_OPTION_HIBERNATE_INACTIVE_WORKER_THREADS = 91;
+ INTERNET_OPTION_ACTIVATE_WORKER_THREADS = 92;
+ INTERNET_OPTION_RESTORE_WORKER_THREAD_DEFAULTS = 93;
+ INTERNET_OPTION_SOCKET_SEND_BUFFER_LENGTH = 94;
+ INTERNET_OPTION_PROXY_SETTINGS_CHANGED = 95;
+ INTERNET_OPTION_SERVER_CERT_CONTEXT = 96;
+
+ INTERNET_OPTION_SOCKET_LINGER_TIME = 97;
+
+
+ INTERNET_FIRST_OPTION = INTERNET_OPTION_CALLBACK;
+ INTERNET_LAST_OPTION = INTERNET_OPTION_PROXY_SETTINGS_CHANGED;
+
+//
+// values for INTERNET_OPTION_PRIORITY
+//
+const
+ INTERNET_PRIORITY_FOREGROUND = 1000;
+
+//
+// handle types
+//
+const
+ INTERNET_HANDLE_TYPE_INTERNET = 1;
+ INTERNET_HANDLE_TYPE_CONNECT_FTP = 2;
+ INTERNET_HANDLE_TYPE_CONNECT_GOPHER = 3;
+ INTERNET_HANDLE_TYPE_CONNECT_HTTP = 4;
+ INTERNET_HANDLE_TYPE_FTP_FIND = 5;
+ INTERNET_HANDLE_TYPE_FTP_FIND_HTML = 6;
+ INTERNET_HANDLE_TYPE_FTP_FILE = 7;
+ INTERNET_HANDLE_TYPE_FTP_FILE_HTML = 8;
+ INTERNET_HANDLE_TYPE_GOPHER_FIND = 9;
+ INTERNET_HANDLE_TYPE_GOPHER_FIND_HTML = 10;
+ INTERNET_HANDLE_TYPE_GOPHER_FILE = 11;
+ INTERNET_HANDLE_TYPE_GOPHER_FILE_HTML = 12;
+ INTERNET_HANDLE_TYPE_HTTP_REQUEST = 13;
+ INTERNET_HANDLE_TYPE_FILE_REQUEST = 14;
+
+
+//
+// values for INTERNET_OPTION_AUTH_FLAGS
+//
+const
+ AUTH_FLAG_DISABLE_NEGOTIATE = $00000001;
+ AUTH_FLAG_ENABLE_NEGOTIATE = $00000002;
+
+//
+// values for INTERNET_OPTION_SECURITY_FLAGS
+//
+
+// query only
+const
+ SECURITY_FLAG_SECURE = $00000001; // can query only
+ SECURITY_FLAG_STRENGTH_WEAK = $10000000;
+ SECURITY_FLAG_STRENGTH_MEDIUM = $40000000;
+ SECURITY_FLAG_STRENGTH_STRONG = $20000000;
+ SECURITY_FLAG_UNKNOWNBIT = $80000000;
+ SECURITY_FLAG_FORTEZZA = $08000000;
+ SECURITY_FLAG_NORMALBITNESS = SECURITY_FLAG_STRENGTH_WEAK;
+
+
+
+// The following are unused
+const
+ SECURITY_FLAG_SSL = $00000002;
+ SECURITY_FLAG_SSL3 = $00000004;
+ SECURITY_FLAG_PCT = $00000008;
+ SECURITY_FLAG_PCT4 = $00000010;
+ SECURITY_FLAG_IETFSSL4 = $00000020;
+
+// The following are for backwards compatability only.
+const
+ SECURITY_FLAG_40BIT = SECURITY_FLAG_STRENGTH_WEAK;
+ SECURITY_FLAG_128BIT = SECURITY_FLAG_STRENGTH_STRONG;
+ SECURITY_FLAG_56BIT = SECURITY_FLAG_STRENGTH_MEDIUM;
+
+// setable flags
+const
+ SECURITY_FLAG_IGNORE_REVOCATION = $00000080;
+ SECURITY_FLAG_IGNORE_UNKNOWN_CA = $00000100;
+ SECURITY_FLAG_IGNORE_WRONG_USAGE = $00000200;
+
+ SECURITY_FLAG_IGNORE_CERT_CN_INVALID = INTERNET_FLAG_IGNORE_CERT_CN_INVALID;
+ SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = INTERNET_FLAG_IGNORE_CERT_DATE_INVALID;
+
+
+ SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTPS = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS;
+ SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTP = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP;
+
+
+
+ SECURITY_SET_MASK = SECURITY_FLAG_IGNORE_REVOCATION or
+ SECURITY_FLAG_IGNORE_UNKNOWN_CA or
+ SECURITY_FLAG_IGNORE_CERT_CN_INVALID or
+ SECURITY_FLAG_IGNORE_CERT_DATE_INVALID or
+ SECURITY_FLAG_IGNORE_WRONG_USAGE;
+
+// valid autodial modes
+const
+ AUTODIAL_MODE_NEVER = 1;
+ AUTODIAL_MODE_ALWAYS = 2;
+ AUTODIAL_MODE_NO_NETWORK_PRESENT = 4;
+
+
+function InternetGetLastResponseInfoA(lpdwError:LPDWORD;
+ lpszBuffer:LPSTR;
+ lpdwBufferLength:LPDWORD
+ ):BOOL; external WinInetDLL name 'InternetGetLastResponseInfoA';
+
+function InternetGetLastResponseInfoW(lpdwError:LPDWORD;
+ lpszBuffer:LPWSTR;
+ lpdwBufferLength:LPDWORD
+ ):BOOL; external WinInetDLL name 'InternetGetLastResponseInfoW';
+
+{$IFDEF UNICODE}
+function InternetGetLastResponseInfo(lpdwError:LPDWORD;
+ lpszBuffer:LPWSTR;
+ lpdwBufferLength:LPDWORD
+ ):BOOL; external WinInetDLL name 'InternetGetLastResponseInfoW';
+{$ELSE UNICODE}
+function InternetGetLastResponseInfo(lpdwError:LPDWORD;
+ lpszBuffer:LPSTR;
+ lpdwBufferLength:LPDWORD
+ ):BOOL; external WinInetDLL name 'InternetGetLastResponseInfoA';
+{$ENDIF UNICODE}
+
+
+//
+// callback function for InternetSetStatusCallback
+//
+
+type
+ INTERNET_STATUS_CALLBACK = procedure(_hInternet:HINTERNET;
+ dwContext:DWORD_PTR;
+ dwInternetStatus:DWORD;
+ lpvStatusInformation:LPVOID;
+ dwStatusInformationLength:DWORD); cdecl;
+
+
+ LPINTERNET_STATUS_CALLBACK = INTERNET_STATUS_CALLBACK;
+
+
+function InternetSetStatusCallbackA(_hInternet:HINTERNET;
+ lpfnInternetCallback:INTERNET_STATUS_CALLBACK
+ ):INTERNET_STATUS_CALLBACK; external WinInetDLL name 'InternetSetStatusCallbackA';
+
+function InternetSetStatusCallbackW(_hInternet:HINTERNET;
+ lpfnInternetCallback:INTERNET_STATUS_CALLBACK
+ ):INTERNET_STATUS_CALLBACK; external WinInetDLL name 'InternetSetStatusCallbackW';
+
+{$IFDEF UNICODE}
+function InternetSetStatusCallback(_hInternet:HINTERNET;
+ lpfnInternetCallback:INTERNET_STATUS_CALLBACK
+ ):INTERNET_STATUS_CALLBACK; external WinInetDLL name 'InternetSetStatusCallbackW';
+{$ELSE UNICODE}
+{$IFDEF WIN32}
+function InternetSetStatusCallback(_hInternet:HINTERNET;
+ lpfnInternetCallback:INTERNET_STATUS_CALLBACK
+ ):INTERNET_STATUS_CALLBACK; external WinInetDLL name 'InternetSetStatusCallbackA';
+{$ELSE WIN32}
+function InternetSetStatusCallback(_hInternet:HINTERNET;
+ lpfnInternetCallback:INTERNET_STATUS_CALLBACK
+ ):INTERNET_STATUS_CALLBACK; external WinInetDLL name 'InternetSetStatusCallback';
+{$ENDIF WIN32}
+{$ENDIF UNICODE}
+
+//
+// status manifests for Internet status callback
+//
+const
+ INTERNET_STATUS_RESOLVING_NAME = 10;
+ INTERNET_STATUS_NAME_RESOLVED = 11;
+ INTERNET_STATUS_CONNECTING_TO_SERVER = 20;
+ INTERNET_STATUS_CONNECTED_TO_SERVER = 21;
+ INTERNET_STATUS_SENDING_REQUEST = 30;
+ INTERNET_STATUS_REQUEST_SENT = 31;
+ INTERNET_STATUS_RECEIVING_RESPONSE = 40;
+ INTERNET_STATUS_RESPONSE_RECEIVED = 41;
+ INTERNET_STATUS_CTL_RESPONSE_RECEIVED = 42;
+ INTERNET_STATUS_PREFETCH = 43;
+ INTERNET_STATUS_CLOSING_CONNECTION = 50;
+ INTERNET_STATUS_CONNECTION_CLOSED = 51;
+ INTERNET_STATUS_HANDLE_CREATED = 60;
+ INTERNET_STATUS_HANDLE_CLOSING = 70;
+ INTERNET_STATUS_DETECTING_PROXY = 80;
+ INTERNET_STATUS_REQUEST_COMPLETE = 100;
+ INTERNET_STATUS_REDIRECT = 110;
+ INTERNET_STATUS_INTERMEDIATE_RESPONSE = 120;
+ INTERNET_STATUS_USER_INPUT_REQUIRED = 140;
+ INTERNET_STATUS_STATE_CHANGE = 200;
+ INTERNET_STATUS_COOKIE_SENT = 320;
+ INTERNET_STATUS_COOKIE_RECEIVED = 321;
+ INTERNET_STATUS_COOKIE_STATE = 322;
+ INTERNET_STATUS_COOKIE_SUPPRESSED = 323;
+ INTERNET_STATUS_PRIVACY_IMPACTED = 324;
+ INTERNET_STATUS_P3P_HEADER = 325;
+ INTERNET_STATUS_P3P_POLICYREF = 326;
+ INTERNET_STATUS_COOKIE_HISTORY = 327;
+ INTERNET_STATUS_SSL_NEGOTIATION_COMPLETE = 401;
+
+//
+// the following can be indicated in a state change notification:
+//
+const
+ INTERNET_STATE_CONNECTED = $00000001; // connected state (mutually exclusive with disconnected)
+ INTERNET_STATE_DISCONNECTED = $00000002; // disconnected from network
+ INTERNET_STATE_DISCONNECTED_BY_USER = $00000010; // disconnected by user request
+ INTERNET_STATE_IDLE = $00000100; // no network requests being made (by Wininet)
+ INTERNET_STATE_BUSY = $00000200; // network requests being made (by Wininet)
+
+//
+// the following values are used for cookie state:
+//
+type
+ InternetCookieState = (COOKIE_STATE_UNKNOWN := $00,
+ COOKIE_STATE_ACCEPT := $01,
+ COOKIE_STATE_PROMPT := $02,
+ COOKIE_STATE_LEASH := $03,
+ COOKIE_STATE_DOWNGRADE := $04,
+ COOKIE_STATE_REJECT := $05);
+
+const
+ COOKIE_STATE_MAX = COOKIE_STATE_REJECT;
+
+type
+ IncomingCookieState = record
+ cSession:longint; // Session cookies received
+ cPersistent:longint; // Persistent cookies received
+
+ cAccepted:longint; // Number of cookies accepted
+ cLeashed:longint; // ... leashed
+ cDowngraded:longint; // ... converted to session-cookies
+ cBlocked:longint; // ... rejected
+
+ pszLocation:PChar; // Optional: URL associated with reported cookie events
+ // This can be used to override request URL
+ end;
+
+type
+ OutgoingCookieState = record
+ cSent:longint;
+ cSuppressed:longint;
+
+ pszLocation:PChar; // Optional: URL associated with reported cookie events
+ // This can be used to override request URL
+ end;
+
+type
+ InternetCookieHistory = record
+ fAccepted:BOOL;
+ fLeashed:BOOL;
+ fDowngraded:BOOL;
+ fRejected:BOOL;
+ end;
+
+type
+ CookieDecision = record
+ dwCookieState:DWORD;
+ fAllowSession:BOOL;
+ end;
+
+//
+// if the following value is returned by InternetSetStatusCallback, then
+// probably an invalid (non-code) address was supplied for the callback
+//
+const
+ INTERNET_INVALID_STATUS_CALLBACK = pointer(-1); // INTERNET_STATUS_CALLBACK(longint(-1));
+
+//
+// FTP
+//
+
+//
+// prototypes
+//
+
+function FtpFindFirstFileA(hConnect:HINTERNET;
+ lpszSearchFile:LPCSTR;
+ lpFindFileData:LPWIN32_FIND_DATAA;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):HINTERNET; external WinInetDLL name 'FtpFindFirstFileA';
+
+function FtpFindFirstFileW(hConnect:HINTERNET;
+ lpszSearchFile:LPCWSTR;
+ lpFindFileData:LPWIN32_FIND_DATAW;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):HINTERNET; external WinInetDLL name 'FtpFindFirstFileW';
+
+{$IFDEF UNICODE}
+function FtpFindFirstFile(hConnect:HINTERNET;
+ lpszSearchFile:LPCWSTR;
+ lpFindFileData:LPWIN32_FIND_DATAW;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):HINTERNET; external WinInetDLL name 'FtpFindFirstFileW';
+{$ELSE UNICODE}
+function FtpFindFirstFile(hConnect:HINTERNET;
+ lpszSearchFile:LPCSTR;
+ lpFindFileData:LPWIN32_FIND_DATAA;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):HINTERNET; external WinInetDLL name 'FtpFindFirstFileA';
+{$ENDIF UNICODE}
+
+function FtpGetFileA(hConnect:HINTERNET;
+ lpszRemoteFile:LPCSTR;
+ lpszNewFile:LPCSTR;
+ fFailIfExists:BOOL;
+ dwFlagsAndAttributes:DWORD;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):BOOL; external WinInetDLL name 'FtpGetFileA';
+
+function FtpGetFileW(hConnect:HINTERNET;
+ lpszRemoteFile:LPCWSTR;
+ lpszNewFile:LPCWSTR;
+ fFailIfExists:BOOL;
+ dwFlagsAndAttributes:DWORD;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):BOOL; external WinInetDLL name 'FtpGetFileW';
+
+{$IFDEF UNICODE}
+function FtpGetFile(hConnect:HINTERNET;
+ lpszRemoteFile:LPCWSTR;
+ lpszNewFile:LPCWSTR;
+ fFailIfExists:BOOL;
+ dwFlagsAndAttributes:DWORD;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):BOOL; external WinInetDLL name 'FtpGetFileW';
+{$ELSE UNICODE}
+function FtpGetFile(hConnect:HINTERNET;
+ lpszRemoteFile:LPCSTR;
+ lpszNewFile:LPCSTR;
+ fFailIfExists:BOOL;
+ dwFlagsAndAttributes:DWORD;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):BOOL; external WinInetDLL name 'FtpGetFileA';
+{$ENDIF UNICODE}
+
+function FtpPutFileA(hConnect:HINTERNET;
+ lpszLocalFile:LPCSTR;
+ lpszNewRemoteFile:LPCSTR;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):BOOL; external WinInetDLL name 'FtpPutFileA';
+
+function FtpPutFileW(hConnect:HINTERNET;
+ lpszLocalFile:LPCWSTR;
+ lpszNewRemoteFile:LPCWSTR;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):BOOL; external WinInetDLL name 'FtpPutFileW';
+
+{$IFDEF UNICODE}
+function FtpPutFile(hConnect:HINTERNET;
+ lpszLocalFile:LPCWSTR;
+ lpszNewRemoteFile:LPCWSTR;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):BOOL; external WinInetDLL name 'FtpPutFileW';
+{$ELSE UNICODE}
+function FtpPutFile(hConnect:HINTERNET;
+ lpszLocalFile:LPCSTR;
+ lpszNewRemoteFile:LPCSTR;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):BOOL; external WinInetDLL name 'FtpPutFileA';
+{$ENDIF UNICODE}
+
+function FtpGetFileEx(hFtpSession:HINTERNET;
+ lpszRemoteFile:LPCSTR;
+ lpszNewFile:LPCWSTR;
+ fFailIfExists:BOOL;
+ dwFlagsAndAttributes:DWORD;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):BOOL; external WinInetDLL name 'FtpGetFileEx';
+
+function FtpPutFileEx(hFtpSession:HINTERNET;
+ lpszLocalFile:LPCWSTR;
+ lpszNewRemoteFile:LPCSTR;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):BOOL; external WinInetDLL name 'FtpPutFileEx';
+
+function FtpDeleteFileA(hConnect:HINTERNET;
+ lpszFileName:LPCSTR
+ ):BOOL; external WinInetDLL name 'FtpDeleteFileA';
+
+function FtpDeleteFileW(hConnect:HINTERNET;
+ lpszFileName:LPCWSTR
+ ):BOOL; external WinInetDLL name 'FtpDeleteFileW';
+
+{$IFDEF UNICODE}
+function FtpDeleteFile(hConnect:HINTERNET;
+ lpszFileName:LPCWSTR
+ ):BOOL; external WinInetDLL name 'FtpDeleteFileW';
+{$ELSE UNICODE}
+function FtpDeleteFile(hConnect:HINTERNET;
+ lpszFileName:LPCSTR
+ ):BOOL; external WinInetDLL name 'FtpDeleteFileA';
+{$ENDIF UNICODE}
+
+function FtpRenameFileA(hConnect:HINTERNET;
+ lpszExisting:LPCSTR;
+ lpszNew:LPCSTR
+ ):BOOL; external WinInetDLL name 'FtpRenameFileA';
+
+function FtpRenameFileW(hConnect:HINTERNET;
+ lpszExisting:LPCWSTR;
+ lpszNew:LPCWSTR
+ ):BOOL; external WinInetDLL name 'FtpRenameFileW';
+{$IFDEF UNICODE}
+function FtpRenameFile(hConnect:HINTERNET;
+ lpszExisting:LPCWSTR;
+ lpszNew:LPCWSTR
+ ):BOOL; external WinInetDLL name 'FtpRenameFileW';
+{$ELSE UNICODE}
+function FtpRenameFile(hConnect:HINTERNET;
+ lpszExisting:LPCSTR;
+ lpszNew:LPCSTR
+ ):BOOL; external WinInetDLL name 'FtpRenameFileA';
+{$ENDIF UNICODE}
+
+function FtpOpenFileA(hConnect:HINTERNET;
+ lpszFileName:LPCSTR;
+ dwAccess:DWORD;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):HINTERNET; external WinInetDLL name 'FtpOpenFileA';
+
+function FtpOpenFileW(hConnect:HINTERNET;
+ lpszFileName:LPCWSTR;
+ dwAccess:DWORD;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):HINTERNET; external WinInetDLL name 'FtpOpenFileW';
+
+{$IFDEF UNICODE}
+function FtpOpenFile(hConnect:HINTERNET;
+ lpszFileName:LPCWSTR;
+ dwAccess:DWORD;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):HINTERNET; external WinInetDLL name 'FtpOpenFileW';
+{$ELSE UNICODE}
+function FtpOpenFile(hConnect:HINTERNET;
+ lpszFileName:LPCSTR;
+ dwAccess:DWORD;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):HINTERNET; external WinInetDLL name 'FtpOpenFileA';
+{$ENDIF UNICODE}
+
+function FtpCreateDirectoryA(hConnect:HINTERNET;
+ lpszDirectory:LPCSTR
+ ):BOOL; external WinInetDLL name 'FtpCreateDirectoryA';
+
+function FtpCreateDirectoryW(hConnect:HINTERNET;
+ lpszDirectory:LPCWSTR
+ ):BOOL; external WinInetDLL name 'FtpCreateDirectoryW';
+
+{$IFDEF UNICODE}
+function FtpCreateDirectory(hConnect:HINTERNET;
+ lpszDirectory:LPCWSTR
+ ):BOOL; external WinInetDLL name 'FtpCreateDirectoryW';
+{$ELSE UNICODE}
+function FtpCreateDirectory(hConnect:HINTERNET;
+ lpszDirectory:LPCSTR
+ ):BOOL; external WinInetDLL name 'FtpCreateDirectoryA';
+{$ENDIF UNICODE}
+
+function FtpRemoveDirectoryA(hConnect:HINTERNET;
+ lpszDirectory:LPCSTR
+ ):BOOL; external WinInetDLL name 'FtpRemoveDirectoryA';
+
+function FtpRemoveDirectoryW(hConnect:HINTERNET;
+ lpszDirectory:LPCWSTR
+ ):BOOL; external WinInetDLL name 'FtpRemoveDirectoryW';
+
+{$IFDEF UNICODE}
+function FtpRemoveDirectory(hConnect:HINTERNET;
+ lpszDirectory:LPCWSTR
+ ):BOOL; external WinInetDLL name 'FtpRemoveDirectoryW';
+{$ELSE UNICODE}
+function FtpRemoveDirectory(hConnect:HINTERNET;
+ lpszDirectory:LPCSTR
+ ):BOOL; external WinInetDLL name 'FtpRemoveDirectoryA';
+{$ENDIF UNICODE}
+
+function FtpSetCurrentDirectoryA(hConnect:HINTERNET;
+ lpszDirectory:LPCSTR
+ ):BOOL; external WinInetDLL name 'FtpSetCurrentDirectoryA';
+
+function FtpSetCurrentDirectoryW(hConnect:HINTERNET;
+ lpszDirectory:LPCWSTR
+ ):BOOL; external WinInetDLL name 'FtpSetCurrentDirectoryW';
+
+{$IFDEF UNICODE}
+function FtpSetCurrentDirectory(hConnect:HINTERNET;
+ lpszDirectory:LPCWSTR
+ ):BOOL; external WinInetDLL name 'FtpSetCurrentDirectoryW';
+{$ELSE UNICODE}
+function FtpSetCurrentDirectory(hConnect:HINTERNET;
+ lpszDirectory:LPCSTR
+ ):BOOL; external WinInetDLL name 'FtpSetCurrentDirectoryA';
+{$ENDIF UNICODE}
+
+function FtpGetCurrentDirectoryA(hConnect:HINTERNET;
+ lpszCurrentDirectory:LPSTR;
+ lpdwCurrentDirectory:LPDWORD
+ ):BOOL; external WinInetDLL name 'FtpGetCurrentDirectoryA';
+
+function FtpGetCurrentDirectoryW(hConnect:HINTERNET;
+ lpszCurrentDirectory:LPWSTR;
+ lpdwCurrentDirectory:LPDWORD
+ ):BOOL; external WinInetDLL name 'FtpGetCurrentDirectoryW';
+
+{$IFDEF UNICODE}
+function FtpGetCurrentDirectory(hConnect:HINTERNET;
+ lpszCurrentDirectory:LPWSTR;
+ lpdwCurrentDirectory:LPDWORD
+ ):BOOL; external WinInetDLL name 'FtpGetCurrentDirectoryW';
+{$ELSE UNICODE}
+function FtpGetCurrentDirectory(hConnect:HINTERNET;
+ lpszCurrentDirectory:LPSTR;
+ lpdwCurrentDirectory:LPDWORD
+ ):BOOL; external WinInetDLL name 'FtpGetCurrentDirectoryA';
+{$ENDIF UNICODE}
+
+function FtpCommandA(hConnect:HINTERNET;
+ fExpectResponse:BOOL;
+ dwFlags:DWORD;
+ lpszCommand:LPCSTR;
+ dwContext:DWORD_PTR;
+ phFtpCommand:LPHINTERNET
+ ):BOOL; external WinInetDLL name 'FtpCommandA';
+
+function FtpCommandW(hConnect:HINTERNET;
+ fExpectResponse:BOOL;
+ dwFlags:DWORD;
+ lpszCommand:LPCWSTR;
+ dwContext:DWORD_PTR;
+ phFtpCommand:LPHINTERNET
+ ):BOOL; external WinInetDLL name 'FtpCommandW';
+
+{$IFDEF UNICODE}
+function FtpCommand(hConnect:HINTERNET;
+ fExpectResponse:BOOL;
+ dwFlags:DWORD;
+ lpszCommand:LPCWSTR;
+ dwContext:DWORD_PTR;
+ phFtpCommand:LPHINTERNET
+ ):BOOL; external WinInetDLL name 'FtpCommandW';
+{$ELSE UNICODE}
+function FtpCommand(hConnect:HINTERNET;
+ fExpectResponse:BOOL;
+ dwFlags:DWORD;
+ lpszCommand:LPCSTR;
+ dwContext:DWORD_PTR;
+ phFtpCommand:LPHINTERNET
+ ):BOOL; external WinInetDLL name 'FtpCommandA';
+{$ENDIF UNICODE}
+
+function FtpGetFileSize(_hFile:HINTERNET;
+ lpdwFileSizeHigh:LPDWORD
+ ):DWORD; external WinInetDLL name 'FtpGetFileSize';
+
+
+
+
+//
+// Gopher
+//
+
+//
+// manifests
+//
+
+//
+// string field lengths (in characters, not bytes)
+//
+const
+ MAX_GOPHER_DISPLAY_TEXT = 128;
+ MAX_GOPHER_SELECTOR_TEXT = 256;
+ MAX_GOPHER_HOST_NAME = INTERNET_MAX_HOST_NAME_LENGTH;
+ MAX_GOPHER_LOCATOR_LENGTH = 1 +
+ MAX_GOPHER_DISPLAY_TEXT +
+ 1 +
+ MAX_GOPHER_SELECTOR_TEXT +
+ 1 +
+ MAX_GOPHER_HOST_NAME +
+ 1 +
+ INTERNET_MAX_PORT_NUMBER_LENGTH +
+ 1 +
+ 1 +
+ 2;
+
+
+//
+// structures/types
+//
+
+//
+// GOPHER_FIND_DATA - returns the results of a GopherFindFirstFile()/
+// InternetFindNextFile() request
+//
+
+type
+ GOPHER_FIND_DATAA = record
+ DisplayString:array[0..MAX_GOPHER_DISPLAY_TEXT] of char;
+ GopherType:DWORD; // GOPHER_TYPE_, if known
+ SizeLow:DWORD;
+ SizeHigh:DWORD;
+ LastModificationTime:FILETIME;
+ Locator:array[0..MAX_GOPHER_LOCATOR_LENGTH] of char;
+ end;
+ LPGOPHER_FIND_DATAA = ^GOPHER_FIND_DATAA;
+
+ GOPHER_FIND_DATAW = record
+ DisplayString:array[0..MAX_GOPHER_DISPLAY_TEXT] of WCHAR;
+ GopherType:DWORD; // GOPHER_TYPE_, if known
+ SizeLow:DWORD;
+ SizeHigh:DWORD;
+ LastModificationTime:FILETIME;
+ Locator:array[0..MAX_GOPHER_LOCATOR_LENGTH] of WCHAR;
+ end;
+ LPGOPHER_FIND_DATAW = ^GOPHER_FIND_DATAW;
+
+
+{$IFDEF UNICODE}
+type
+ GOPHER_FIND_DATA = GOPHER_FIND_DATAW;
+ LPGOPHER_FIND_DATA = LPGOPHER_FIND_DATAW;
+{$ELSE UNICODE}
+type
+ GOPHER_FIND_DATA = GOPHER_FIND_DATAA;
+ LPGOPHER_FIND_DATA = LPGOPHER_FIND_DATAA;
+{$ENDIF UNICODE}
+
+//
+// manifests for GopherType
+//
+const
+ GOPHER_TYPE_TEXT_FILE = $00000001;
+ GOPHER_TYPE_DIRECTORY = $00000002;
+ GOPHER_TYPE_CSO = $00000004;
+ GOPHER_TYPE_ERROR = $00000008;
+ GOPHER_TYPE_MAC_BINHEX = $00000010;
+ GOPHER_TYPE_DOS_ARCHIVE = $00000020;
+ GOPHER_TYPE_UNIX_UUENCODED = $00000040;
+ GOPHER_TYPE_INDEX_SERVER = $00000080;
+ GOPHER_TYPE_TELNET = $00000100;
+ GOPHER_TYPE_BINARY = $00000200;
+ GOPHER_TYPE_REDUNDANT = $00000400;
+ GOPHER_TYPE_TN3270 = $00000800;
+ GOPHER_TYPE_GIF = $00001000;
+ GOPHER_TYPE_IMAGE = $00002000;
+ GOPHER_TYPE_BITMAP = $00004000;
+ GOPHER_TYPE_MOVIE = $00008000;
+ GOPHER_TYPE_SOUND = $00010000;
+ GOPHER_TYPE_HTML = $00020000;
+ GOPHER_TYPE_PDF = $00040000;
+ GOPHER_TYPE_CALENDAR = $00080000;
+ GOPHER_TYPE_INLINE = $00100000;
+ GOPHER_TYPE_UNKNOWN = $20000000;
+ GOPHER_TYPE_ASK = $40000000;
+ GOPHER_TYPE_GOPHER_PLUS = $80000000;
+
+//
+// gopher type macros
+//
+function IS_GOPHER_FILE(_type:DWORD):BOOL;
+function IS_GOPHER_DIRECTORY(_type:DWORD):BOOL;
+function IS_GOPHER_PHONE_SERVER(_type:DWORD):BOOL;
+function IS_GOPHER_ERROR(_type:DWORD):BOOL;
+function IS_GOPHER_INDEX_SERVER(_type:DWORD):BOOL;
+function IS_GOPHER_TELNET_SESSION(_type:DWORD):BOOL;
+function IS_GOPHER_BACKUP_SERVER(_type:DWORD):BOOL;
+function IS_GOPHER_TN3270_SESSION(_type:DWORD):BOOL;
+function IS_GOPHER_ASK(_type:DWORD):BOOL;
+function IS_GOPHER_PLUS(_type:DWORD):BOOL;
+function IS_GOPHER_TYPE_KNOWN(_type:DWORD):BOOL;
+
+//
+// GOPHER_TYPE_FILE_MASK - use this to determine if a locator identifies a
+// (known) file type
+//
+const
+ GOPHER_TYPE_FILE_MASK = GOPHER_TYPE_TEXT_FILE or
+ GOPHER_TYPE_MAC_BINHEX or
+ GOPHER_TYPE_DOS_ARCHIVE or
+ GOPHER_TYPE_UNIX_UUENCODED or
+ GOPHER_TYPE_BINARY or
+ GOPHER_TYPE_GIF or
+ GOPHER_TYPE_IMAGE or
+ GOPHER_TYPE_BITMAP or
+ GOPHER_TYPE_MOVIE or
+ GOPHER_TYPE_SOUND or
+ GOPHER_TYPE_HTML or
+ GOPHER_TYPE_PDF or
+ GOPHER_TYPE_CALENDAR or
+ GOPHER_TYPE_INLINE;
+
+
+//
+// structured gopher attributes (as defined in gopher+ protocol document)
+//
+type
+ GOPHER_ADMIN_ATTRIBUTE_TYPE = record
+ Comment:LPCTSTR;
+ EmailAddress:LPCTSTR;
+ end;
+ LPGOPHER_ADMIN_ATTRIBUTE_TYPE = ^GOPHER_ADMIN_ATTRIBUTE_TYPE;
+
+type
+ GOPHER_MOD_DATE_ATTRIBUTE_TYPE = record
+ DateAndTime:FILETIME;
+ end;
+ LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE = ^GOPHER_MOD_DATE_ATTRIBUTE_TYPE;
+
+type
+ GOPHER_TTL_ATTRIBUTE_TYPE = record
+ Ttl:DWORD;
+ end;
+ LPGOPHER_TTL_ATTRIBUTE_TYPE = ^GOPHER_TTL_ATTRIBUTE_TYPE;
+
+type
+ GOPHER_SCORE_ATTRIBUTE_TYPE = record
+ Score:longint;
+ end;
+ LPGOPHER_SCORE_ATTRIBUTE_TYPE = ^GOPHER_SCORE_ATTRIBUTE_TYPE;
+
+type
+ GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE = record
+ LowerBound:longint;
+ UpperBound:longint;
+ end;
+ LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE = ^GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE;
+
+type
+ GOPHER_SITE_ATTRIBUTE_TYPE = record
+ Site:LPCTSTR;
+ end;
+ LPGOPHER_SITE_ATTRIBUTE_TYPE = ^GOPHER_SITE_ATTRIBUTE_TYPE;
+
+type
+ GOPHER_ORGANIZATION_ATTRIBUTE_TYPE = record
+ Organization:LPCTSTR;
+ end;
+ LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPE = ^GOPHER_ORGANIZATION_ATTRIBUTE_TYPE;
+
+type
+ GOPHER_LOCATION_ATTRIBUTE_TYPE = record
+ Location:LPCTSTR;
+ end;
+ LPGOPHER_LOCATION_ATTRIBUTE_TYPE = ^GOPHER_LOCATION_ATTRIBUTE_TYPE;
+
+type
+ GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE = record
+ DegreesNorth:longint;
+ MinutesNorth:longint;
+ SecondsNorth:longint;
+ DegreesEast:longint;
+ MinutesEast:longint;
+ SecondsEast:longint;
+ end;
+ LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE = ^GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE;
+
+type
+ GOPHER_TIMEZONE_ATTRIBUTE_TYPE = record
+ Zone:longint;
+ end;
+ LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE = ^GOPHER_TIMEZONE_ATTRIBUTE_TYPE;
+
+type
+ GOPHER_PROVIDER_ATTRIBUTE_TYPE = record
+ Provider:LPCTSTR;
+ end;
+ LPGOPHER_PROVIDER_ATTRIBUTE_TYPE = ^GOPHER_PROVIDER_ATTRIBUTE_TYPE;
+
+type
+ GOPHER_VERSION_ATTRIBUTE_TYPE = record
+ Version:LPCTSTR;
+ end;
+ LPGOPHER_VERSION_ATTRIBUTE_TYPE = ^GOPHER_VERSION_ATTRIBUTE_TYPE;
+
+type
+ GOPHER_ABSTRACT_ATTRIBUTE_TYPE = record
+ ShortAbstract:LPCTSTR;
+ AbstractFile:LPCTSTR;
+ end;
+ LPGOPHER_ABSTRACT_ATTRIBUTE_TYPE = ^GOPHER_ABSTRACT_ATTRIBUTE_TYPE;
+
+type
+ GOPHER_VIEW_ATTRIBUTE_TYPE = record
+ ContentType:LPCTSTR;
+ Language:LPCTSTR;
+ Size:DWORD;
+ end;
+ LPGOPHER_VIEW_ATTRIBUTE_TYPE = ^GOPHER_VIEW_ATTRIBUTE_TYPE;
+
+type
+ GOPHER_VERONICA_ATTRIBUTE_TYPE = record
+ TreeWalk:BOOL;
+ end;
+ LPGOPHER_VERONICA_ATTRIBUTE_TYPE = ^GOPHER_VERONICA_ATTRIBUTE_TYPE;
+
+type
+ GOPHER_ASK_ATTRIBUTE_TYPE = record
+ QuestionType:LPCTSTR;
+ QuestionText:LPCTSTR;
+ end;
+ LPGOPHER_ASK_ATTRIBUTE_TYPE = ^GOPHER_ASK_ATTRIBUTE_TYPE;
+
+//
+// GOPHER_UNKNOWN_ATTRIBUTE_TYPE - this is returned if we retrieve an attribute
+// that is not specified in the current gopher/gopher+ documentation. It is up
+// to the application to parse the information
+//
+
+type
+ GOPHER_UNKNOWN_ATTRIBUTE_TYPE = record
+ Text:LPCTSTR;
+ end;
+ LPGOPHER_UNKNOWN_ATTRIBUTE_TYPE = ^GOPHER_UNKNOWN_ATTRIBUTE_TYPE;
+
+//
+// GOPHER_ATTRIBUTE_TYPE - returned in the user's buffer when an enumerated
+// GopherGetAttribute call is made
+//
+
+type
+ GOPHER_ATTRIBUTE_TYPE = record
+ CategoryId:DWORD; // e.g. GOPHER_CATEGORY_ID_ADMIN
+ AttributeId:DWORD; // e.g. GOPHER_ATTRIBUTE_ID_ADMIN
+ case longint of // AttributeType
+ 0: (Admin:GOPHER_ADMIN_ATTRIBUTE_TYPE);
+ 1: (ModDate:GOPHER_MOD_DATE_ATTRIBUTE_TYPE);
+ 2: (Ttl:GOPHER_TTL_ATTRIBUTE_TYPE);
+ 3: (Score:GOPHER_SCORE_ATTRIBUTE_TYPE);
+ 4: (ScoreRange:GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE);
+ 5: (Site:GOPHER_SITE_ATTRIBUTE_TYPE);
+ 6: (Organization:GOPHER_ORGANIZATION_ATTRIBUTE_TYPE);
+ 7: (Location:GOPHER_LOCATION_ATTRIBUTE_TYPE);
+ 8: (GeographicalLocation:GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE);
+ 9: (TimeZone:GOPHER_TIMEZONE_ATTRIBUTE_TYPE);
+ 10: (Provider:GOPHER_PROVIDER_ATTRIBUTE_TYPE);
+ 11: (Version:GOPHER_VERSION_ATTRIBUTE_TYPE);
+ 12: (_Abstract:GOPHER_ABSTRACT_ATTRIBUTE_TYPE);
+ 13: (View:GOPHER_VIEW_ATTRIBUTE_TYPE);
+ 14: (Veronica:GOPHER_VERONICA_ATTRIBUTE_TYPE);
+ 15: (Ask:GOPHER_ASK_ATTRIBUTE_TYPE);
+ 16: (Unknown:GOPHER_UNKNOWN_ATTRIBUTE_TYPE);
+ end;
+ LPGOPHER_ATTRIBUTE_TYPE = ^GOPHER_ATTRIBUTE_TYPE;
+
+const
+ MAX_GOPHER_CATEGORY_NAME = 128; // arbitrary
+ MAX_GOPHER_ATTRIBUTE_NAME = 128; // "
+ MIN_GOPHER_ATTRIBUTE_LENGTH = 256; // "
+
+//
+// known gopher attribute categories. See below for ordinals
+//
+const
+ GOPHER_INFO_CATEGORY = '+INFO';
+ GOPHER_ADMIN_CATEGORY = '+ADMIN';
+ GOPHER_VIEWS_CATEGORY = '+VIEWS';
+ GOPHER_ABSTRACT_CATEGORY = '+ABSTRACT';
+ GOPHER_VERONICA_CATEGORY = '+VERONICA';
+
+//
+// known gopher attributes. These are the attribute names as defined in the
+// gopher+ protocol document
+//
+const
+ GOPHER_ADMIN_ATTRIBUTE = 'Admin';
+ GOPHER_MOD_DATE_ATTRIBUTE = 'Mod-Date';
+ GOPHER_TTL_ATTRIBUTE = 'TTL';
+ GOPHER_SCORE_ATTRIBUTE = 'Score';
+ GOPHER_RANGE_ATTRIBUTE = 'Score-range';
+ GOPHER_SITE_ATTRIBUTE = 'Site';
+ GOPHER_ORG_ATTRIBUTE = 'Org';
+ GOPHER_LOCATION_ATTRIBUTE = 'Loc';
+ GOPHER_GEOG_ATTRIBUTE = 'Geog';
+ GOPHER_TIMEZONE_ATTRIBUTE = 'TZ';
+ GOPHER_PROVIDER_ATTRIBUTE = 'Provider';
+ GOPHER_VERSION_ATTRIBUTE = 'Version';
+ GOPHER_ABSTRACT_ATTRIBUTE = 'Abstract';
+ GOPHER_VIEW_ATTRIBUTE = 'View';
+ GOPHER_TREEWALK_ATTRIBUTE = 'treewalk';
+
+//
+// identifiers for attribute strings
+//
+const
+ GOPHER_ATTRIBUTE_ID_BASE = $ABCCCC00;
+
+ GOPHER_CATEGORY_ID_ALL = GOPHER_ATTRIBUTE_ID_BASE + 1;
+
+ GOPHER_CATEGORY_ID_INFO = GOPHER_ATTRIBUTE_ID_BASE + 2;
+ GOPHER_CATEGORY_ID_ADMIN = GOPHER_ATTRIBUTE_ID_BASE + 3;
+ GOPHER_CATEGORY_ID_VIEWS = GOPHER_ATTRIBUTE_ID_BASE + 4;
+ GOPHER_CATEGORY_ID_ABSTRACT = GOPHER_ATTRIBUTE_ID_BASE + 5;
+ GOPHER_CATEGORY_ID_VERONICA = GOPHER_ATTRIBUTE_ID_BASE + 6;
+ GOPHER_CATEGORY_ID_ASK = GOPHER_ATTRIBUTE_ID_BASE + 7;
+
+ GOPHER_CATEGORY_ID_UNKNOWN = GOPHER_ATTRIBUTE_ID_BASE + 8;
+
+ GOPHER_ATTRIBUTE_ID_ALL = GOPHER_ATTRIBUTE_ID_BASE + 9;
+
+ GOPHER_ATTRIBUTE_ID_ADMIN = GOPHER_ATTRIBUTE_ID_BASE + 10;
+ GOPHER_ATTRIBUTE_ID_MOD_DATE = GOPHER_ATTRIBUTE_ID_BASE + 11;
+ GOPHER_ATTRIBUTE_ID_TTL = GOPHER_ATTRIBUTE_ID_BASE + 12;
+ GOPHER_ATTRIBUTE_ID_SCORE = GOPHER_ATTRIBUTE_ID_BASE + 13;
+ GOPHER_ATTRIBUTE_ID_RANGE = GOPHER_ATTRIBUTE_ID_BASE + 14;
+ GOPHER_ATTRIBUTE_ID_SITE = GOPHER_ATTRIBUTE_ID_BASE + 15;
+ GOPHER_ATTRIBUTE_ID_ORG = GOPHER_ATTRIBUTE_ID_BASE + 16;
+ GOPHER_ATTRIBUTE_ID_LOCATION = GOPHER_ATTRIBUTE_ID_BASE + 17;
+ GOPHER_ATTRIBUTE_ID_GEOG = GOPHER_ATTRIBUTE_ID_BASE + 18;
+ GOPHER_ATTRIBUTE_ID_TIMEZONE = GOPHER_ATTRIBUTE_ID_BASE + 19;
+ GOPHER_ATTRIBUTE_ID_PROVIDER = GOPHER_ATTRIBUTE_ID_BASE + 20;
+ GOPHER_ATTRIBUTE_ID_VERSION = GOPHER_ATTRIBUTE_ID_BASE + 21;
+ GOPHER_ATTRIBUTE_ID_ABSTRACT = GOPHER_ATTRIBUTE_ID_BASE + 22;
+ GOPHER_ATTRIBUTE_ID_VIEW = GOPHER_ATTRIBUTE_ID_BASE + 23;
+ GOPHER_ATTRIBUTE_ID_TREEWALK = GOPHER_ATTRIBUTE_ID_BASE + 24;
+
+ GOPHER_ATTRIBUTE_ID_UNKNOWN = GOPHER_ATTRIBUTE_ID_BASE + 25;
+
+//
+// prototypes
+//
+
+function GopherCreateLocatorA(lpszHost:LPCSTR;
+ nServerPort:INTERNET_PORT;
+ lpszDisplayString:INTERNET_PORT;
+ lpszSelectorString:LPCSTR;
+ dwGopherType:DWORD;
+ lpszLocator:LPSTR;
+ lpdwBufferLength:LPDWORD):BOOL; external WinInetDLL name 'GopherCreateLocatorA';
+
+function GopherCreateLocatorW(lpszHost:LPCWSTR;
+ nServerPort:INTERNET_PORT;
+ lpszDisplayString:INTERNET_PORT;
+ lpszSelectorString:LPCWSTR;
+ dwGopherType:DWORD;
+ lpszLocator:LPWSTR;
+ lpdwBufferLength:LPDWORD):BOOL; external WinInetDLL name 'GopherCreateLocatorW';
+
+{$IFDEF UNICODE}
+function GopherCreateLocator(lpszHost:LPCWSTR;
+ nServerPort:INTERNET_PORT;
+ lpszDisplayString:INTERNET_PORT;
+ lpszSelectorString:LPCWSTR;
+ dwGopherType:DWORD;
+ lpszLocator:LPWSTR;
+ lpdwBufferLength:LPDWORD):BOOL; external WinInetDLL name 'GopherCreateLocatorW';
+{$ELSE UNICODE}
+function GopherCreateLocator(lpszHost:LPCSTR;
+ nServerPort:INTERNET_PORT;
+ lpszDisplayString:INTERNET_PORT;
+ lpszSelectorString:LPCSTR;
+ dwGopherType:DWORD;
+ lpszLocator:LPSTR;
+ lpdwBufferLength:LPDWORD):BOOL; external WinInetDLL name 'GopherCreateLocatorA';
+{$ENDIF UNICODE}
+
+function GopherGetLocatorTypeA(lpszLocator:LPCSTR;
+ lpdwGopherType:LPDWORD):BOOL; external WinInetDLL name 'GopherGetLocatorTypeA';
+
+function GopherGetLocatorTypeW(lpszLocator:LPCWSTR;
+ lpdwGopherType:LPDWORD):BOOL; external WinInetDLL name 'GopherGetLocatorTypeW';
+
+{$IFDEF UNICODE}
+function GopherGetLocatorType(lpszLocator:LPCWSTR;
+ lpdwGopherType:LPDWORD):BOOL; external WinInetDLL name 'GopherGetLocatorTypeW';
+{$ELSE UNICODE}
+function GopherGetLocatorType(lpszLocator:LPCSTR;
+ lpdwGopherType:LPDWORD):BOOL; external WinInetDLL name 'GopherGetLocatorTypeA';
+{$ENDIF UNICODE}
+
+function GopherFindFirstFileA(hConnect:HINTERNET;
+ lpszLocator:LPCSTR;
+ lpszSearchString:LPCSTR;
+ lpFindData:LPGOPHER_FIND_DATAA;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):HINTERNET; external WinInetDLL name 'GopherFindFirstFileA';
+
+function GopherFindFirstFileW(hConnect:HINTERNET;
+ lpszLocator:LPCWSTR;
+ lpszSearchString:LPCWSTR;
+ lpFindData:LPGOPHER_FIND_DATAW;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):HINTERNET; external WinInetDLL name 'GopherFindFirstFileW';
+
+{$IFDEF UNICODE}
+function GopherFindFirstFile(hConnect:HINTERNET;
+ lpszLocator:LPCWSTR;
+ lpszSearchString:LPCWSTR;
+ lpFindData:LPGOPHER_FIND_DATAW;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):HINTERNET; external WinInetDLL name 'GopherFindFirstFileW';
+{$ELSE UNICODE}
+function GopherFindFirstFile(hConnect:HINTERNET;
+ lpszLocator:LPCSTR;
+ lpszSearchString:LPCSTR;
+ lpFindData:LPGOPHER_FIND_DATAA;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):HINTERNET; external WinInetDLL name 'GopherFindFirstFileA';
+{$ENDIF UNICODE}
+
+function GopherOpenFileA(hConnect:HINTERNET;
+ lpszLocator:LPCSTR;
+ lpszView:LPCSTR;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):HINTERNET; external WinInetDLL name 'GopherOpenFileA';
+
+function GopherOpenFileW(hConnect:HINTERNET;
+ lpszLocator:LPCWSTR;
+ lpszView:LPCWSTR;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):HINTERNET; external WinInetDLL name 'GopherOpenFileW';
+
+{$IFDEF UNICODE}
+function GopherOpenFile(hConnect:HINTERNET;
+ lpszLocator:LPCWSTR;
+ lpszView:LPCWSTR;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):HINTERNET; external WinInetDLL name 'GopherOpenFileW';
+{$ELSE UNICODE}
+function GopherOpenFile(hConnect:HINTERNET;
+ lpszLocator:LPCSTR;
+ lpszView:LPCSTR;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):HINTERNET; external WinInetDLL name 'GopherOpenFileA';
+{$ENDIF UNICODE}
+
+type
+ GOPHER_ATTRIBUTE_ENUMERATOR = function(lpAttributeInfo:LPGOPHER_ATTRIBUTE_TYPE;
+ dwError:DWORD):BOOL; cdecl;
+
+function GopherGetAttributeA(hConnect:HINTERNET;
+ lpszLocator:LPCSTR;
+ lpszAttributeName:LPCSTR;
+ lpBuffer:LPBYTE;
+ dwBufferLength:DWORD;
+ lpdwCharactersReturned:LPDWORD;
+ lpfnEnumerator:GOPHER_ATTRIBUTE_ENUMERATOR;
+ dwContext:DWORD_PTR
+ ):BOOL; external WinInetDLL name 'GopherGetAttributeA';
+
+function GopherGetAttributeW(hConnect:HINTERNET;
+ lpszLocator:LPCWSTR;
+ lpszAttributeName:LPCWSTR;
+ lpBuffer:LPBYTE;
+ dwBufferLength:DWORD;
+ lpdwCharactersReturned:LPDWORD;
+ lpfnEnumerator:GOPHER_ATTRIBUTE_ENUMERATOR;
+ dwContext:DWORD_PTR
+ ):BOOL; external WinInetDLL name 'GopherGetAttributeW';
+
+{$IFDEF UNICODE}
+function GopherGetAttribute(hConnect:HINTERNET;
+ lpszLocator:LPCWSTR;
+ lpszAttributeName:LPCWSTR;
+ lpBuffer:LPBYTE;
+ dwBufferLength:DWORD;
+ lpdwCharactersReturned:LPDWORD;
+ lpfnEnumerator:GOPHER_ATTRIBUTE_ENUMERATOR;
+ dwContext:DWORD_PTR
+ ):BOOL; external WinInetDLL name 'GopherGetAttributeW';
+{$ELSE UNICODE}
+function GopherGetAttribute(hConnect:HINTERNET;
+ lpszLocator:LPCSTR;
+ lpszAttributeName:LPCSTR;
+ lpBuffer:LPBYTE;
+ dwBufferLength:DWORD;
+ lpdwCharactersReturned:LPDWORD;
+ lpfnEnumerator:GOPHER_ATTRIBUTE_ENUMERATOR;
+ dwContext:DWORD_PTR
+ ):BOOL; external WinInetDLL name 'GopherGetAttributeA';
+{$ENDIF UNICODE}
+
+
+//
+// HTTP
+//
+
+//
+// manifests
+//
+
+//
+// the default major/minor HTTP version numbers
+//
+const
+ HTTP_MAJOR_VERSION = 1;
+ HTTP_MINOR_VERSION = 0;
+
+ HTTP_VERSIONA = 'HTTP/1.0';
+ HTTP_VERSIONW:WideString = 'HTTP/1.0';
+
+{$IFDEF UNICODE}
+ HTTP_VERSION:WideString = 'HTTP/1.0'; // HTTP_VERSIONW
+{$ELSE UNICODE}
+ HTTP_VERSION = HTTP_VERSIONA;
+{$ENDIF UNICODE}
+
+//
+// HttpQueryInfo info levels. Generally, there is one info level
+// for each potential RFC822/HTTP/MIME header that an HTTP server
+// may send as part of a request response.
+//
+// The HTTP_QUERY_RAW_HEADERS info level is provided for clients
+// that choose to perform their own header parsing.
+//
+const
+ HTTP_QUERY_MIME_VERSION = 0;
+ HTTP_QUERY_CONTENT_TYPE = 1;
+ HTTP_QUERY_CONTENT_TRANSFER_ENCODING = 2;
+ HTTP_QUERY_CONTENT_ID = 3;
+ HTTP_QUERY_CONTENT_DESCRIPTION = 4;
+ HTTP_QUERY_CONTENT_LENGTH = 5;
+ HTTP_QUERY_CONTENT_LANGUAGE = 6;
+ HTTP_QUERY_ALLOW = 7;
+ HTTP_QUERY_PUBLIC = 8;
+ HTTP_QUERY_DATE = 9;
+ HTTP_QUERY_EXPIRES = 10;
+ HTTP_QUERY_LAST_MODIFIED = 11;
+ HTTP_QUERY_MESSAGE_ID = 12;
+ HTTP_QUERY_URI = 13;
+ HTTP_QUERY_DERIVED_FROM = 14;
+ HTTP_QUERY_COST = 15;
+ HTTP_QUERY_LINK = 16;
+ HTTP_QUERY_PRAGMA = 17;
+ HTTP_QUERY_VERSION = 18; // special: part of status line
+ HTTP_QUERY_STATUS_CODE = 19; // special: part of status line
+ HTTP_QUERY_STATUS_TEXT = 20; // special: part of status line
+ HTTP_QUERY_RAW_HEADERS = 21; // special: all headers as ASCIIZ
+ HTTP_QUERY_RAW_HEADERS_CRLF = 22; // special: all headers
+ HTTP_QUERY_CONNECTION = 23;
+ HTTP_QUERY_ACCEPT = 24;
+ HTTP_QUERY_ACCEPT_CHARSET = 25;
+ HTTP_QUERY_ACCEPT_ENCODING = 26;
+ HTTP_QUERY_ACCEPT_LANGUAGE = 27;
+ HTTP_QUERY_AUTHORIZATION = 28;
+ HTTP_QUERY_CONTENT_ENCODING = 29;
+ HTTP_QUERY_FORWARDED = 30;
+ HTTP_QUERY_FROM = 31;
+ HTTP_QUERY_IF_MODIFIED_SINCE = 32;
+ HTTP_QUERY_LOCATION = 33;
+ HTTP_QUERY_ORIG_URI = 34;
+ HTTP_QUERY_REFERER = 35;
+ HTTP_QUERY_RETRY_AFTER = 36;
+ HTTP_QUERY_SERVER = 37;
+ HTTP_QUERY_TITLE = 38;
+ HTTP_QUERY_USER_AGENT = 39;
+ HTTP_QUERY_WWW_AUTHENTICATE = 40;
+ HTTP_QUERY_PROXY_AUTHENTICATE = 41;
+ HTTP_QUERY_ACCEPT_RANGES = 42;
+ HTTP_QUERY_SET_COOKIE = 43;
+ HTTP_QUERY_COOKIE = 44;
+ HTTP_QUERY_REQUEST_METHOD = 45; // special: GET/POST etc.
+ HTTP_QUERY_REFRESH = 46;
+ HTTP_QUERY_CONTENT_DISPOSITION = 47;
+
+//
+// HTTP 1.1 defined headers
+//
+
+ HTTP_QUERY_AGE = 48;
+ HTTP_QUERY_CACHE_CONTROL = 49;
+ HTTP_QUERY_CONTENT_BASE = 50;
+ HTTP_QUERY_CONTENT_LOCATION = 51;
+ HTTP_QUERY_CONTENT_MD5 = 52;
+ HTTP_QUERY_CONTENT_RANGE = 53;
+ HTTP_QUERY_ETAG = 54;
+ HTTP_QUERY_HOST = 55;
+ HTTP_QUERY_IF_MATCH = 56;
+ HTTP_QUERY_IF_NONE_MATCH = 57;
+ HTTP_QUERY_IF_RANGE = 58;
+ HTTP_QUERY_IF_UNMODIFIED_SINCE = 59;
+ HTTP_QUERY_MAX_FORWARDS = 60;
+ HTTP_QUERY_PROXY_AUTHORIZATION = 61;
+ HTTP_QUERY_RANGE = 62;
+ HTTP_QUERY_TRANSFER_ENCODING = 63;
+ HTTP_QUERY_UPGRADE = 64;
+ HTTP_QUERY_VARY = 65;
+ HTTP_QUERY_VIA = 66;
+ HTTP_QUERY_WARNING = 67;
+ HTTP_QUERY_EXPECT = 68;
+ HTTP_QUERY_PROXY_CONNECTION = 69;
+ HTTP_QUERY_UNLESS_MODIFIED_SINCE = 70;
+
+
+
+ HTTP_QUERY_ECHO_REQUEST = 71;
+ HTTP_QUERY_ECHO_REPLY = 72;
+
+// These are the set of headers that should be added back to a request when
+// re-doing a request after a RETRY_WITH response.
+ HTTP_QUERY_ECHO_HEADERS = 73;
+ HTTP_QUERY_ECHO_HEADERS_CRLF = 74;
+
+ HTTP_QUERY_PROXY_SUPPORT = 75;
+ HTTP_QUERY_AUTHENTICATION_INFO = 76;
+ HTTP_QUERY_PASSPORT_URLS = 77;
+ HTTP_QUERY_PASSPORT_CONFIG = 78;
+
+ HTTP_QUERY_MAX = 78;
+
+//
+// HTTP_QUERY_CUSTOM - if this special value is supplied as the dwInfoLevel
+// parameter of HttpQueryInfo() then the lpBuffer parameter contains the name
+// of the header we are to query
+//
+
+ HTTP_QUERY_CUSTOM = 65535;
+
+//
+// HTTP_QUERY_FLAG_REQUEST_HEADERS - if this bit is set in the dwInfoLevel
+// parameter of HttpQueryInfo() then the request headers will be queried for the
+// request information
+//
+
+ HTTP_QUERY_FLAG_REQUEST_HEADERS = $80000000;
+
+//
+// HTTP_QUERY_FLAG_SYSTEMTIME - if this bit is set in the dwInfoLevel parameter
+// of HttpQueryInfo() AND the header being queried contains date information,
+// e.g. the "Expires:" header then lpBuffer will contain a SYSTEMTIME structure
+// containing the date and time information converted from the header string
+//
+
+ HTTP_QUERY_FLAG_SYSTEMTIME = $40000000;
+
+//
+// HTTP_QUERY_FLAG_NUMBER - if this bit is set in the dwInfoLevel parameter of
+// HttpQueryInfo(), then the value of the header will be converted to a number
+// before being returned to the caller, if applicable
+//
+
+ HTTP_QUERY_FLAG_NUMBER = $20000000;
+
+//
+// HTTP_QUERY_FLAG_COALESCE - combine the values from several headers of the
+// same name into the output buffer
+//
+
+ HTTP_QUERY_FLAG_COALESCE = $10000000;
+
+
+ HTTP_QUERY_MODIFIER_FLAGS_MASK = HTTP_QUERY_FLAG_REQUEST_HEADERS or
+ HTTP_QUERY_FLAG_SYSTEMTIME or
+ HTTP_QUERY_FLAG_NUMBER or
+ HTTP_QUERY_FLAG_COALESCE;
+
+
+ HTTP_QUERY_HEADER_MASK = (not HTTP_QUERY_MODIFIER_FLAGS_MASK);
+
+//
+// HTTP Response Status Codes:
+//
+
+ HTTP_STATUS_CONTINUE = 100; // OK to continue with request
+ HTTP_STATUS_SWITCH_PROTOCOLS = 101; // server has switched protocols in upgrade header
+
+ HTTP_STATUS_OK = 200; // request completed
+ HTTP_STATUS_CREATED = 201; // object created, reason = new URI
+ HTTP_STATUS_ACCEPTED = 202; // async completion (TBS)
+ HTTP_STATUS_PARTIAL = 203; // partial completion
+ HTTP_STATUS_NO_CONTENT = 204; // no info to return
+ HTTP_STATUS_RESET_CONTENT = 205; // request completed, but clear form
+ HTTP_STATUS_PARTIAL_CONTENT = 206; // partial GET furfilled
+
+ HTTP_STATUS_AMBIGUOUS = 300; // server couldn't decide what to return
+ HTTP_STATUS_MOVED = 301; // object permanently moved
+ HTTP_STATUS_REDIRECT = 302; // object temporarily moved
+ HTTP_STATUS_REDIRECT_METHOD = 303; // redirection w/ new access method
+ HTTP_STATUS_NOT_MODIFIED = 304; // if-modified-since was not modified
+ HTTP_STATUS_USE_PROXY = 305; // redirection to proxy, location header specifies proxy to use
+ HTTP_STATUS_REDIRECT_KEEP_VERB = 307; // HTTP/1.1: keep same verb
+
+ HTTP_STATUS_BAD_REQUEST = 400; // invalid syntax
+ HTTP_STATUS_DENIED = 401; // access denied
+ HTTP_STATUS_PAYMENT_REQ = 402; // payment required
+ HTTP_STATUS_FORBIDDEN = 403; // request forbidden
+ HTTP_STATUS_NOT_FOUND = 404; // object not found
+ HTTP_STATUS_BAD_METHOD = 405; // method is not allowed
+ HTTP_STATUS_NONE_ACCEPTABLE = 406; // no response acceptable to client found
+ HTTP_STATUS_PROXY_AUTH_REQ = 407; // proxy authentication required
+ HTTP_STATUS_REQUEST_TIMEOUT = 408; // server timed out waiting for request
+ HTTP_STATUS_CONFLICT = 409; // user should resubmit with more info
+ HTTP_STATUS_GONE = 410; // the resource is no longer available
+ HTTP_STATUS_LENGTH_REQUIRED = 411; // the server refused to accept request w/o a length
+ HTTP_STATUS_PRECOND_FAILED = 412; // precondition given in request failed
+ HTTP_STATUS_REQUEST_TOO_LARGE = 413; // request entity was too large
+ HTTP_STATUS_URI_TOO_LONG = 414; // request URI too long
+ HTTP_STATUS_UNSUPPORTED_MEDIA = 415; // unsupported media type
+ HTTP_STATUS_RETRY_WITH = 449; // retry after doing the appropriate action.
+
+ HTTP_STATUS_SERVER_ERROR = 500; // internal server error
+ HTTP_STATUS_NOT_SUPPORTED = 501; // required not supported
+ HTTP_STATUS_BAD_GATEWAY = 502; // error response received from gateway
+ HTTP_STATUS_SERVICE_UNAVAIL = 503; // temporarily overloaded
+ HTTP_STATUS_GATEWAY_TIMEOUT = 504; // timed out waiting for gateway
+ HTTP_STATUS_VERSION_NOT_SUP = 505; // HTTP version not supported
+
+ HTTP_STATUS_FIRST = HTTP_STATUS_CONTINUE;
+ HTTP_STATUS_LAST = HTTP_STATUS_VERSION_NOT_SUP;
+
+//
+// prototypes
+//
+
+function HttpOpenRequestA(hConnect:HINTERNET;
+ lpszVerb:LPCSTR;
+ lpszObjectName:LPCSTR;
+ lpszVersion:LPCSTR;
+ lpszReferrer:LPCSTR;
+ lplpszAcceptTypes:PLPSTR;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):HINTERNET; external WinInetDLL name 'HttpOpenRequestA';
+
+function HttpOpenRequestW(hConnect:HINTERNET;
+ lpszVerb:LPCWSTR;
+ lpszObjectName:LPCWSTR;
+ lpszVersion:LPCWSTR;
+ lpszReferrer:LPCWSTR;
+ lplpszAcceptTypes:PLPWSTR;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):HINTERNET; external WinInetDLL name 'HttpOpenRequestW';
+
+{$IFDEF UNICODE}
+function HttpOpenRequest(hConnect:HINTERNET;
+ lpszVerb:LPCWSTR;
+ lpszObjectName:LPCWSTR;
+ lpszVersion:LPCWSTR;
+ lpszReferrer:LPCWSTR;
+ lplpszAcceptTypes:PLPWSTR;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):HINTERNET; external WinInetDLL name 'HttpOpenRequestW';
+{$ELSE UNICODE}
+function HttpOpenRequest(hConnect:HINTERNET;
+ lpszVerb:LPCSTR;
+ lpszObjectName:LPCSTR;
+ lpszVersion:LPCSTR;
+ lpszReferrer:LPCSTR;
+ lplpszAcceptTypes:PLPSTR;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):HINTERNET; external WinInetDLL name 'HttpOpenRequestA';
+{$ENDIF UNICODE}
+
+function HttpAddRequestHeadersA(hRequest:HINTERNET;
+ lpszHeaders:LPCSTR;
+ dwHeadersLength:DWORD;
+ dwModifiers:DWORD
+ ):BOOL; external WinInetDLL name 'HttpAddRequestHeadersA';
+
+function HttpAddRequestHeadersW(hRequest:HINTERNET;
+ lpszHeaders:LPCWSTR;
+ dwHeadersLength:DWORD;
+ dwModifiers:DWORD
+ ):BOOL; external WinInetDLL name 'HttpAddRequestHeadersW';
+
+{$IFDEF UNICODE}
+function HttpAddRequestHeaders(hRequest:HINTERNET;
+ lpszHeaders:LPCWSTR;
+ dwHeadersLength:DWORD;
+ dwModifiers:DWORD
+ ):BOOL; external WinInetDLL name 'HttpAddRequestHeadersW';
+{$ELSE UNICODE}
+function HttpAddRequestHeaders(hRequest:HINTERNET;
+ lpszHeaders:LPCSTR;
+ dwHeadersLength:DWORD;
+ dwModifiers:DWORD
+ ):BOOL; external WinInetDLL name 'HttpAddRequestHeadersA';
+{$ENDIF UNICODE}
+
+//
+// values for dwModifiers parameter of HttpAddRequestHeaders()
+//
+const
+ HTTP_ADDREQ_INDEX_MASK = $0000FFFF;
+ HTTP_ADDREQ_FLAGS_MASK = $FFFF0000;
+
+//
+// HTTP_ADDREQ_FLAG_ADD_IF_NEW - the header will only be added if it doesn't
+// already exist
+//
+const
+ HTTP_ADDREQ_FLAG_ADD_IF_NEW = $10000000;
+
+//
+// HTTP_ADDREQ_FLAG_ADD - if HTTP_ADDREQ_FLAG_REPLACE is set but the header is
+// not found then if this flag is set, the header is added anyway, so long as
+// there is a valid header-value
+//
+const
+ HTTP_ADDREQ_FLAG_ADD = $20000000;
+
+//
+// HTTP_ADDREQ_FLAG_COALESCE - coalesce headers with same name. e.g.
+// "Accept: text/*" and "Accept: audio/*" with this flag results in a single
+// header: "Accept: text/*, audio/*"
+//
+const
+ HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA = $40000000;
+ HTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON = $01000000;
+ HTTP_ADDREQ_FLAG_COALESCE = HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA;
+
+//
+// HTTP_ADDREQ_FLAG_REPLACE - replaces the specified header. Only one header can
+// be supplied in the buffer. If the header to be replaced is not the first
+// in a list of headers with the same name, then the relative index should be
+// supplied in the low 8 bits of the dwModifiers parameter. If the header-value
+// part is missing, then the header is removed
+//
+const
+ HTTP_ADDREQ_FLAG_REPLACE = $80000000;
+
+function HttpSendRequestA(hRequest:HINTERNET;
+ lpszHeaders:LPCSTR;
+ dwHeadersLength:DWORD;
+ lpOptional:LPVOID;
+ dwOptionalLength:DWORD
+ ):BOOL; external WinInetDLL name 'HttpSendRequestA';
+
+function HttpSendRequestW(hRequest:HINTERNET;
+ lpszHeaders:LPCWSTR;
+ dwHeadersLength:DWORD;
+ lpOptional:LPVOID;
+ dwOptionalLength:DWORD
+ ):BOOL; external WinInetDLL name 'HttpSendRequestW';
+
+{$IFDEF UNICODE}
+function HttpSendRequest(hRequest:HINTERNET;
+ lpszHeaders:LPCWSTR;
+ dwHeadersLength:DWORD;
+ lpOptional:LPVOID;
+ dwOptionalLength:DWORD
+ ):BOOL; external WinInetDLL name 'HttpSendRequestW';
+{$ELSE UNICODE}
+function HttpSendRequest(hRequest:HINTERNET;
+ lpszHeaders:LPCSTR;
+ dwHeadersLength:DWORD;
+ lpOptional:LPVOID;
+ dwOptionalLength:DWORD
+ ):BOOL; external WinInetDLL name 'HttpSendRequestA';
+{$ENDIF UNICODE}
+
+function HttpSendRequestExA(hRequest:HINTERNET;
+ lpBuffersIn:LPINTERNET_BUFFERSA;
+ lpBuffersOut:LPINTERNET_BUFFERSA;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):BOOL; external WinInetDLL name 'HttpSendRequestExA';
+
+function HttpSendRequestExW(hRequest:HINTERNET;
+ lpBuffersIn:LPINTERNET_BUFFERSW;
+ lpBuffersOut:LPINTERNET_BUFFERSW;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):BOOL; external WinInetDLL name 'HttpSendRequestExW';
+
+{$IFDEF UNICODE}
+function HttpSendRequestEx(hRequest:HINTERNET;
+ lpBuffersIn:LPINTERNET_BUFFERS;
+ lpBuffersOut:LPINTERNET_BUFFERS;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):BOOL; external WinInetDLL name 'HttpSendRequestExW';
+{$ELSE UNICODE}
+function HttpSendRequestEx(hRequest:HINTERNET;
+ lpBuffersIn:LPINTERNET_BUFFERS;
+ lpBuffersOut:LPINTERNET_BUFFERS;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):BOOL; external WinInetDLL name 'HttpSendRequestExA';
+{$ENDIF UNICODE}
+
+//
+// flags for HttpSendRequestEx(), HttpEndRequest()
+//
+const
+ HSR_ASYNC = WININET_API_FLAG_ASYNC; // force async
+ HSR_SYNC = WININET_API_FLAG_SYNC; // force sync
+ HSR_USE_CONTEXT = WININET_API_FLAG_USE_CONTEXT; // use dwContext value
+ HSR_INITIATE = $00000008; // iterative operation (completed by HttpEndRequest)
+ HSR_DOWNLOAD = $00000010; // download to file
+ HSR_CHUNKED = $00000020; // operation is send of chunked data
+
+function HttpEndRequestA(hRequest:HINTERNET;
+ lpBuffersOut:LPINTERNET_BUFFERSA;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):BOOL; external WinInetDLL name 'HttpEndRequestA';
+
+function HttpEndRequestW(hRequest:HINTERNET;
+ lpBuffersOut:LPINTERNET_BUFFERSW;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):BOOL; external WinInetDLL name 'HttpEndRequestW';
+
+{$IFDEF UNICODE}
+function HttpEndRequest(hRequest:HINTERNET;
+ lpBuffersOut:LPINTERNET_BUFFERS;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):BOOL; external WinInetDLL name 'HttpEndRequestW';
+{$ELSE UNICODE}
+function HttpEndRequest(hRequest:HINTERNET;
+ lpBuffersOut:LPINTERNET_BUFFERS;
+ dwFlags:DWORD;
+ dwContext:DWORD_PTR
+ ):BOOL; external WinInetDLL name 'HttpEndRequestA';
+{$ENDIF UNICODE}
+
+function HttpQueryInfoA(hRequest:HINTERNET;
+ dwInfoLevel:DWORD;
+ lpBuffer:LPVOID;
+ lpdwBufferLength:LPDWORD;
+ lpdwIndex:LPDWORD
+ ):BOOL; external WinInetDLL name 'HttpQueryInfoA';
+
+function HttpQueryInfoW(hRequest:HINTERNET;
+ dwInfoLevel:DWORD;
+ lpBuffer:LPVOID;
+ lpdwBufferLength:LPDWORD;
+ lpdwIndex:LPDWORD
+ ):BOOL; external WinInetDLL name 'HttpQueryInfoW';
+
+{$IFDEF UNICODE}
+function HttpQueryInfo(hRequest:HINTERNET;
+ dwInfoLevel:DWORD;
+ lpBuffer:LPVOID;
+ lpdwBufferLength:LPDWORD;
+ lpdwIndex:LPDWORD
+ ):BOOL; external WinInetDLL name 'HttpQueryInfoW';
+{$ELSE UNICODE}
+function HttpQueryInfo(hRequest:HINTERNET;
+ dwInfoLevel:DWORD;
+ lpBuffer:LPVOID;
+ lpdwBufferLength:LPDWORD;
+ lpdwIndex:LPDWORD
+ ):BOOL; external WinInetDLL name 'HttpQueryInfoA';
+{$ENDIF UNICODE}
+
+
+//
+// Cookie APIs
+//
+const
+ INTERNET_COOKIE_IS_SECURE = $01;
+ INTERNET_COOKIE_IS_SESSION = $02;
+ INTERNET_COOKIE_THIRD_PARTY = $10;
+ INTERNET_COOKIE_PROMPT_REQUIRED = $20;
+ INTERNET_COOKIE_EVALUATE_P3P = $40;
+ INTERNET_COOKIE_APPLY_P3P = $80;
+
+ INTERNET_COOKIE_P3P_ENABLED = $100;
+ INTERNET_COOKIE_IS_RESTRICTED = $200;
+ INTERNET_COOKIE_IE6 = $400;
+ INTERNET_COOKIE_IS_LEGACY = $800;
+
+function InternetSetCookieA(lpszUrl:LPCSTR;
+ lpszCookieName:LPCSTR;
+ lpszCookieData:LPCSTR
+ ):BOOL; external WinInetDLL name 'InternetSetCookieA';
+
+function InternetSetCookieW(lpszUrl:LPCWSTR;
+ lpszCookieName:LPCWSTR;
+ lpszCookieData:LPCWSTR
+ ):BOOL; external WinInetDLL name 'InternetSetCookieW';
+
+{$IFDEF UNICODE}
+function InternetSetCookie(lpszUrl:LPCWSTR;
+ lpszCookieName:LPCWSTR;
+ lpszCookieData:LPCWSTR
+ ):BOOL; external WinInetDLL name 'InternetSetCookieW';
+{$ELSE UNICODE}
+function InternetSetCookie(lpszUrl:LPCSTR;
+ lpszCookieName:LPCSTR;
+ lpszCookieData:LPCSTR
+ ):BOOL; external WinInetDLL name 'InternetSetCookieA';
+{$ENDIF UNICODE}
+
+function InternetGetCookieA(lpszUrl:LPCSTR;
+ lpszCookieName:LPCSTR;
+ lpCookieData:LPCSTR;
+ lpdwSize:LPDWORD
+ ):BOOL; external WinInetDLL name 'InternetGetCookieA';
+
+function InternetGetCookieW(lpszUrl:LPCWSTR;
+ lpszCookieName:LPCWSTR;
+ lpCookieData:LPCWSTR;
+ lpdwSize:LPDWORD
+ ):BOOL; external WinInetDLL name 'InternetGetCookieW';
+
+{$IFDEF UNICODE}
+function InternetGetCookie(lpszUrl:LPCWSTR;
+ lpszCookieName:LPCWSTR;
+ lpCookieData:LPCWSTR;
+ lpdwSize:LPDWORD
+ ):BOOL; external WinInetDLL name 'InternetGetCookieW';
+{$ELSE UNICODE}
+function InternetGetCookie(lpszUrl:LPCSTR;
+ lpszCookieName:LPCSTR;
+ lpCookieData:LPCSTR;
+ lpdwSize:LPDWORD
+ ):BOOL; external WinInetDLL name 'InternetGetCookieA';
+{$ENDIF UNICODE}
+
+function InternetSetCookieExA(lpszUrl:LPCSTR;
+ lpszCookieName:LPCSTR;
+ lpszCookieData:LPCSTR;
+ dwFlags:DWORD;
+ dwReserved:DWORD_PTR
+ ):DWORD; external WinInetDLL name 'InternetSetCookieExA';
+
+function InternetSetCookieExW(lpszUrl:LPCWSTR;
+ lpszCookieName:LPCWSTR;
+ lpszCookieData:LPCWSTR;
+ dwFlags:DWORD;
+ dwReserved:DWORD_PTR
+ ):DWORD; external WinInetDLL name 'InternetSetCookieExW';
+
+{$IFDEF UNICODE}
+function InternetSetCookieEx(lpszUrl:LPCWSTR;
+ lpszCookieName:LPCWSTR;
+ lpszCookieData:LPCWSTR;
+ dwFlags:DWORD;
+ dwReserved:DWORD_PTR
+ ):DWORD; external WinInetDLL name 'InternetSetCookieExW';
+{$ELSE UNICODE}
+function InternetSetCookieEx(lpszUrl:LPCSTR;
+ lpszCookieName:LPCSTR;
+ lpszCookieData:LPCSTR;
+ dwFlags:DWORD;
+ dwReserved:DWORD_PTR
+ ):DWORD; external WinInetDLL name 'InternetSetCookieExA';
+{$ENDIF UNICODE}
+
+
+//
+// offline browsing
+//
+
+function InternetAttemptConnect(dwReserved:DWORD):DWORD; external WinInetDLL name 'InternetAttemptConnect';
+
+function InternetCheckConnectionA(lpszUrl:LPCSTR;
+ dwFlags:DWORD;
+ dwReserved:DWORD
+ ):BOOL; external WinInetDLL name 'InternetCheckConnectionA';
+
+function InternetCheckConnectionW(lpszUrl:LPCWSTR;
+ dwFlags:DWORD;
+ dwReserved:DWORD
+ ):BOOL; external WinInetDLL name 'InternetCheckConnectionW';
+
+{$IFDEF UNICODE}
+function InternetCheckConnection(lpszUrl:LPCWSTR;
+ dwFlags:DWORD;
+ dwReserved:DWORD
+ ):BOOL; external WinInetDLL name 'InternetCheckConnectionW';
+{$ELSE UNICODE}
+function InternetCheckConnection(lpszUrl:LPCSTR;
+ dwFlags:DWORD;
+ dwReserved:DWORD
+ ):BOOL; external WinInetDLL name 'InternetCheckConnectionA';
+{$ENDIF UNICODE}
+
+const
+ FLAG_ICC_FORCE_CONNECTION = $00000001;
+
+//
+// Internet UI
+//
+
+//
+// InternetErrorDlg - Provides UI for certain Errors.
+//
+const
+ FLAGS_ERROR_UI_FILTER_FOR_ERRORS = $01;
+ FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS = $02;
+ FLAGS_ERROR_UI_FLAGS_GENERATE_DATA = $04;
+ FLAGS_ERROR_UI_FLAGS_NO_UI = $08;
+ FLAGS_ERROR_UI_SERIALIZE_DIALOGS = $10;
+
+//
+// If SERIALIZE_DIALOGS flag set, client should implement thread-safe non-blocking callback...
+//
+
+type
+ PFN_AUTH_NOTIFY = function(dwContext:DWORD_PTR; // as passed to InternetErrorDlg
+ dwReturn:DWORD; // error code: success, resend, or cancel
+ lpResrved:LPVOID // reserved: will be set to null
+ ):DWORD; cdecl;
+
+//
+// ... and last parameter of InternetErrorDlg should point to...
+//
+
+type
+ INTERNET_AUTH_NOTIFY_DATA = record
+ cbStruct:DWORD; // size of this structure
+ dwOptions:DWORD; // reserved: must set to 0
+ pfnNotify:PFN_AUTH_NOTIFY; // notification callback to retry InternetErrorDlg
+ dwContext:DWORD_PTR; // context to pass to to notification function
+ end;
+
+
+function ResumeSuspendedDownload(hRequest:HINTERNET;
+ dwResultCode:DWORD
+ ):BOOL; external WinInetDLL name 'ResumeSuspendedDownload';
+
+function InternetErrorDlg(_hWnd:HWND;
+ hRequest:HINTERNET;
+ dwError:DWORD;
+ dwFlags:DWORD;
+ lppvData:PPVOID
+ ):DWORD; external WinInetDLL name 'InternetErrorDlg';
+
+function InternetConfirmZoneCrossingA(_hWnd:HWND;
+ szUrlPrev:LPSTR;
+ szUrlNew:LPSTR;
+ bPost:BOOL
+ ):DWORD; external WinInetDLL name 'InternetConfirmZoneCrossingA';
+
+function InternetConfirmZoneCrossingW(_hWnd:HWND;
+ szUrlPrev:LPWSTR;
+ szUrlNew:LPWSTR;
+ bPost:BOOL
+ ):DWORD; external WinInetDLL name 'InternetConfirmZoneCrossingW';
+
+{$IFDEF UNICODE}
+function InternetConfirmZoneCrossing(_hWnd:HWND;
+ szUrlPrev:LPWSTR;
+ szUrlNew:LPWSTR;
+ bPost:BOOL
+ ):DWORD; external WinInetDLL name 'InternetConfirmZoneCrossingW';
+{$ELSE UNICODE}
+{$IFDEF WINX32}
+function InternetConfirmZoneCrossing(_hWnd:HWND;
+ szUrlPrev:LPSTR;
+ szUrlNew:LPSTR;
+ bPost:BOOL
+ ):DWORD; external WinInetDLL name 'InternetConfirmZoneCrossingA';
+{$ELSE WINX32}
+function InternetConfirmZoneCrossing(_hWnd:HWND;
+ szUrlPrev:LPSTR;
+ szUrlNew:LPSTR;
+ bPost:BOOL
+ ):DWORD; external WinInetDLL name 'InternetConfirmZoneCrossing';
+{$ENDIF WINX32}
+{$ENDIF UNICODE}
+
+//
+// Internet API error returns
+//
+const
+ INTERNET_ERROR_BASE = 12000;
+
+ ERROR_INTERNET_OUT_OF_HANDLES = INTERNET_ERROR_BASE + 1;
+ ERROR_INTERNET_TIMEOUT = INTERNET_ERROR_BASE + 2;
+ ERROR_INTERNET_EXTENDED_ERROR = INTERNET_ERROR_BASE + 3;
+ ERROR_INTERNET_INTERNAL_ERROR = INTERNET_ERROR_BASE + 4;
+ ERROR_INTERNET_INVALID_URL = INTERNET_ERROR_BASE + 5;
+ ERROR_INTERNET_UNRECOGNIZED_SCHEME = INTERNET_ERROR_BASE + 6;
+ ERROR_INTERNET_NAME_NOT_RESOLVED = INTERNET_ERROR_BASE + 7;
+ ERROR_INTERNET_PROTOCOL_NOT_FOUND = INTERNET_ERROR_BASE + 8;
+ ERROR_INTERNET_INVALID_OPTION = INTERNET_ERROR_BASE + 9;
+ ERROR_INTERNET_BAD_OPTION_LENGTH = INTERNET_ERROR_BASE + 10;
+ ERROR_INTERNET_OPTION_NOT_SETTABLE = INTERNET_ERROR_BASE + 11;
+ ERROR_INTERNET_SHUTDOWN = INTERNET_ERROR_BASE + 12;
+ ERROR_INTERNET_INCORRECT_USER_NAME = INTERNET_ERROR_BASE + 13;
+ ERROR_INTERNET_INCORRECT_PASSWORD = INTERNET_ERROR_BASE + 14;
+ ERROR_INTERNET_LOGIN_FAILURE = INTERNET_ERROR_BASE + 15;
+ ERROR_INTERNET_INVALID_OPERATION = INTERNET_ERROR_BASE + 16;
+ ERROR_INTERNET_OPERATION_CANCELLED = INTERNET_ERROR_BASE + 17;
+ ERROR_INTERNET_INCORRECT_HANDLE_TYPE = INTERNET_ERROR_BASE + 18;
+ ERROR_INTERNET_INCORRECT_HANDLE_STATE = INTERNET_ERROR_BASE + 19;
+ ERROR_INTERNET_NOT_PROXY_REQUEST = INTERNET_ERROR_BASE + 20;
+ ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND = INTERNET_ERROR_BASE + 21;
+ ERROR_INTERNET_BAD_REGISTRY_PARAMETER = INTERNET_ERROR_BASE + 22;
+ ERROR_INTERNET_NO_DIRECT_ACCESS = INTERNET_ERROR_BASE + 23;
+ ERROR_INTERNET_NO_CONTEXT = INTERNET_ERROR_BASE + 24;
+ ERROR_INTERNET_NO_CALLBACK = INTERNET_ERROR_BASE + 25;
+ ERROR_INTERNET_REQUEST_PENDING = INTERNET_ERROR_BASE + 26;
+ ERROR_INTERNET_INCORRECT_FORMAT = INTERNET_ERROR_BASE + 27;
+ ERROR_INTERNET_ITEM_NOT_FOUND = INTERNET_ERROR_BASE + 28;
+ ERROR_INTERNET_CANNOT_CONNECT = INTERNET_ERROR_BASE + 29;
+ ERROR_INTERNET_CONNECTION_ABORTED = INTERNET_ERROR_BASE + 30;
+ ERROR_INTERNET_CONNECTION_RESET = INTERNET_ERROR_BASE + 31;
+ ERROR_INTERNET_FORCE_RETRY = INTERNET_ERROR_BASE + 32;
+ ERROR_INTERNET_INVALID_PROXY_REQUEST = INTERNET_ERROR_BASE + 33;
+ ERROR_INTERNET_NEED_UI = INTERNET_ERROR_BASE + 34;
+
+ ERROR_INTERNET_HANDLE_EXISTS = INTERNET_ERROR_BASE + 36;
+ ERROR_INTERNET_SEC_CERT_DATE_INVALID = INTERNET_ERROR_BASE + 37;
+ ERROR_INTERNET_SEC_CERT_CN_INVALID = INTERNET_ERROR_BASE + 38;
+ ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR = INTERNET_ERROR_BASE + 39;
+ ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR = INTERNET_ERROR_BASE + 40;
+ ERROR_INTERNET_MIXED_SECURITY = INTERNET_ERROR_BASE + 41;
+ ERROR_INTERNET_CHG_POST_IS_NON_SECURE = INTERNET_ERROR_BASE + 42;
+ ERROR_INTERNET_POST_IS_NON_SECURE = INTERNET_ERROR_BASE + 43;
+ ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED = INTERNET_ERROR_BASE + 44;
+ ERROR_INTERNET_INVALID_CA = INTERNET_ERROR_BASE + 45;
+ ERROR_INTERNET_CLIENT_AUTH_NOT_SETUP = INTERNET_ERROR_BASE + 46;
+ ERROR_INTERNET_ASYNC_THREAD_FAILED = INTERNET_ERROR_BASE + 47;
+ ERROR_INTERNET_REDIRECT_SCHEME_CHANGE = INTERNET_ERROR_BASE + 48;
+ ERROR_INTERNET_DIALOG_PENDING = INTERNET_ERROR_BASE + 49;
+ ERROR_INTERNET_RETRY_DIALOG = INTERNET_ERROR_BASE + 50;
+ ERROR_INTERNET_HTTPS_HTTP_SUBMIT_REDIR = INTERNET_ERROR_BASE + 52;
+ ERROR_INTERNET_INSERT_CDROM = INTERNET_ERROR_BASE + 53;
+ ERROR_INTERNET_FORTEZZA_LOGIN_NEEDED = INTERNET_ERROR_BASE + 54;
+ ERROR_INTERNET_SEC_CERT_ERRORS = INTERNET_ERROR_BASE + 55;
+ ERROR_INTERNET_SEC_CERT_NO_REV = INTERNET_ERROR_BASE + 56;
+ ERROR_INTERNET_SEC_CERT_REV_FAILED = INTERNET_ERROR_BASE + 57;
+
+//
+// FTP API errors
+//
+const
+ ERROR_FTP_TRANSFER_IN_PROGRESS = INTERNET_ERROR_BASE + 110;
+ ERROR_FTP_DROPPED = INTERNET_ERROR_BASE + 111;
+ ERROR_FTP_NO_PASSIVE_MODE = INTERNET_ERROR_BASE + 112;
+
+//
+// gopher API errors
+//
+const
+ ERROR_GOPHER_PROTOCOL_ERROR = INTERNET_ERROR_BASE + 130;
+ ERROR_GOPHER_NOT_FILE = INTERNET_ERROR_BASE + 131;
+ ERROR_GOPHER_DATA_ERROR = INTERNET_ERROR_BASE + 132;
+ ERROR_GOPHER_END_OF_DATA = INTERNET_ERROR_BASE + 133;
+ ERROR_GOPHER_INVALID_LOCATOR = INTERNET_ERROR_BASE + 134;
+ ERROR_GOPHER_INCORRECT_LOCATOR_TYPE = INTERNET_ERROR_BASE + 135;
+ ERROR_GOPHER_NOT_GOPHER_PLUS = INTERNET_ERROR_BASE + 136;
+ ERROR_GOPHER_ATTRIBUTE_NOT_FOUND = INTERNET_ERROR_BASE + 137;
+ ERROR_GOPHER_UNKNOWN_LOCATOR = INTERNET_ERROR_BASE + 138;
+
+//
+// HTTP API errors
+//
+const
+ ERROR_HTTP_HEADER_NOT_FOUND = INTERNET_ERROR_BASE + 150;
+ ERROR_HTTP_DOWNLEVEL_SERVER = INTERNET_ERROR_BASE + 151;
+ ERROR_HTTP_INVALID_SERVER_RESPONSE = INTERNET_ERROR_BASE + 152;
+ ERROR_HTTP_INVALID_HEADER = INTERNET_ERROR_BASE + 153;
+ ERROR_HTTP_INVALID_QUERY_REQUEST = INTERNET_ERROR_BASE + 154;
+ ERROR_HTTP_HEADER_ALREADY_EXISTS = INTERNET_ERROR_BASE + 155;
+ ERROR_HTTP_REDIRECT_FAILED = INTERNET_ERROR_BASE + 156;
+ ERROR_HTTP_NOT_REDIRECTED = INTERNET_ERROR_BASE + 160;
+ ERROR_HTTP_COOKIE_NEEDS_CONFIRMATION = INTERNET_ERROR_BASE + 161;
+ ERROR_HTTP_COOKIE_DECLINED = INTERNET_ERROR_BASE + 162;
+ ERROR_HTTP_REDIRECT_NEEDS_CONFIRMATION = INTERNET_ERROR_BASE + 168;
+
+//
+// additional Internet API error codes
+//
+const
+ ERROR_INTERNET_SECURITY_CHANNEL_ERROR = INTERNET_ERROR_BASE + 157;
+ ERROR_INTERNET_UNABLE_TO_CACHE_FILE = INTERNET_ERROR_BASE + 158;
+ ERROR_INTERNET_TCPIP_NOT_INSTALLED = INTERNET_ERROR_BASE + 159;
+ ERROR_INTERNET_DISCONNECTED = INTERNET_ERROR_BASE + 163;
+ ERROR_INTERNET_SERVER_UNREACHABLE = INTERNET_ERROR_BASE + 164;
+ ERROR_INTERNET_PROXY_SERVER_UNREACHABLE = INTERNET_ERROR_BASE + 165;
+
+ ERROR_INTERNET_BAD_AUTO_PROXY_SCRIPT = INTERNET_ERROR_BASE + 166;
+ ERROR_INTERNET_UNABLE_TO_DOWNLOAD_SCRIPT = INTERNET_ERROR_BASE + 167;
+ ERROR_INTERNET_SEC_INVALID_CERT = INTERNET_ERROR_BASE + 169;
+ ERROR_INTERNET_SEC_CERT_REVOKED = INTERNET_ERROR_BASE + 170;
+
+// InternetAutodial specific errors
+const
+ ERROR_INTERNET_FAILED_DUETOSECURITYCHECK = INTERNET_ERROR_BASE + 171;
+ ERROR_INTERNET_NOT_INITIALIZED = INTERNET_ERROR_BASE + 172;
+ ERROR_INTERNET_NEED_MSN_SSPI_PKG = INTERNET_ERROR_BASE + 173;
+ ERROR_INTERNET_LOGIN_FAILURE_DISPLAY_ENTITY_BODY = INTERNET_ERROR_BASE + 174;
+
+
+ INTERNET_ERROR_LAST = ERROR_INTERNET_LOGIN_FAILURE_DISPLAY_ENTITY_BODY;
+
+
+//
+// URLCACHE APIs
+//
+
+//
+// datatype definitions.
+//
+
+//
+// cache entry type flags.
+//
+const
+ NORMAL_CACHE_ENTRY = $00000001;
+ STICKY_CACHE_ENTRY = $00000004;
+ EDITED_CACHE_ENTRY = $00000008;
+ TRACK_OFFLINE_CACHE_ENTRY = $00000010;
+ TRACK_ONLINE_CACHE_ENTRY = $00000020;
+ SPARSE_CACHE_ENTRY = $00010000;
+ COOKIE_CACHE_ENTRY = $00100000;
+ URLHISTORY_CACHE_ENTRY = $00200000;
+
+
+ URLCACHE_FIND_DEFAULT_FILTER = NORMAL_CACHE_ENTRY or
+ COOKIE_CACHE_ENTRY or
+ URLHISTORY_CACHE_ENTRY or
+ TRACK_OFFLINE_CACHE_ENTRY or
+ TRACK_ONLINE_CACHE_ENTRY or
+ STICKY_CACHE_ENTRY;
+
+
+
+//
+// INTERNET_CACHE_ENTRY_INFO -
+//
+
+type
+ _INTERNET_CACHE_ENTRY_INFOA = record
+ dwStructSize:DWORD; // version of cache system.
+ lpszSourceUrlName:LPSTR; // embedded pointer to the URL name string.
+ lpszLocalFileName:LPSTR; // embedded pointer to the local file name.
+ CacheEntryType:DWORD; // cache type bit mask.
+ dwUseCount:DWORD; // current users count of the cache entry.
+ dwHitRate:DWORD; // num of times the cache entry was retrieved.
+ dwSizeLow:DWORD; // low DWORD of the file size.
+ dwSizeHigh:DWORD; // high DWORD of the file size.
+ LastModifiedTime:FILETIME; // last modified time of the file in GMT format.
+ ExpireTime:FILETIME; // expire time of the file in GMT format
+ LastAccessTime:FILETIME; // last accessed time in GMT format
+ LastSyncTime:FILETIME; // last time the URL was synchronized with the source
+ lpHeaderInfo:LPSTR; // embedded pointer to the header info.
+ dwHeaderInfoSize:DWORD; // size of the above header.
+ lpszFileExtension:LPSTR; // File extension used to retrive the urldata as a file.
+ case longint of // Exemption delta from last access time.
+ 0: (dwReserved:DWORD);
+ 1: (dwExemptDelta:DWORD);
+ end;
+ INTERNET_CACHE_ENTRY_INFOA = _INTERNET_CACHE_ENTRY_INFOA;
+ LPINTERNET_CACHE_ENTRY_INFOA = ^_INTERNET_CACHE_ENTRY_INFOA;
+
+ _INTERNET_CACHE_ENTRY_INFOW = record
+ dwStructSize:DWORD; // version of cache system.
+ lpszSourceUrlName:LPWSTR; // embedded pointer to the URL name string.
+ lpszLocalFileName:LPWSTR; // embedded pointer to the local file name.
+ CacheEntryType:DWORD; // cache type bit mask.
+ dwUseCount:DWORD; // current users count of the cache entry.
+ dwHitRate:DWORD; // num of times the cache entry was retrieved.
+ dwSizeLow:DWORD; // low DWORD of the file size.
+ dwSizeHigh:DWORD; // high DWORD of the file size.
+ LastModifiedTime:FILETIME; // last modified time of the file in GMT format.
+ ExpireTime:FILETIME; // expire time of the file in GMT format
+ LastAccessTime:FILETIME; // last accessed time in GMT format
+ LastSyncTime:FILETIME; // last time the URL was synchronized with the source
+ lpHeaderInfo:LPWSTR; // embedded pointer to the header info.
+ dwHeaderInfoSize:DWORD; // size of the above header.
+ lpszFileExtension:LPWSTR; // File extension used to retrive the urldata as a file.
+ case longint of // Exemption delta from last access time.
+ 0: (dwReserved:DWORD);
+ 1: (dwExemptDelta:DWORD);
+ end;
+ INTERNET_CACHE_ENTRY_INFOW = _INTERNET_CACHE_ENTRY_INFOW;
+ LPINTERNET_CACHE_ENTRY_INFOW = ^_INTERNET_CACHE_ENTRY_INFOW;
+
+{$IFDEF UNICODE}
+type
+ INTERNET_CACHE_ENTRY_INFO = INTERNET_CACHE_ENTRY_INFOW;
+ LPINTERNET_CACHE_ENTRY_INFO = LPINTERNET_CACHE_ENTRY_INFOW;
+{$ELSE UNICODE}
+type
+ INTERNET_CACHE_ENTRY_INFO = INTERNET_CACHE_ENTRY_INFOA;
+ LPINTERNET_CACHE_ENTRY_INFO = LPINTERNET_CACHE_ENTRY_INFOA;
+{$ENDIF UNICODE}
+
+type
+ _INTERNET_CACHE_TIMESTAMPS = record
+ ftExpires:FILETIME;
+ ftLastModified:FILETIME;
+ end;
+ INTERNET_CACHE_TIMESTAMPS = _INTERNET_CACHE_TIMESTAMPS;
+ LPINTERNET_CACHE_TIMESTAMPS = ^_INTERNET_CACHE_TIMESTAMPS;
+
+
+
+//
+// Cache Group
+//
+type
+ GROUPID = LONGLONG;
+ LPGROUPID = ^GROUPID;
+
+
+//
+// Cache Group Flags
+//
+const
+ CACHEGROUP_ATTRIBUTE_GET_ALL = $ffffffff;
+ CACHEGROUP_ATTRIBUTE_BASIC = $00000001;
+ CACHEGROUP_ATTRIBUTE_FLAG = $00000002;
+ CACHEGROUP_ATTRIBUTE_TYPE = $00000004;
+ CACHEGROUP_ATTRIBUTE_QUOTA = $00000008;
+ CACHEGROUP_ATTRIBUTE_GROUPNAME = $00000010;
+ CACHEGROUP_ATTRIBUTE_STORAGE = $00000020;
+
+ CACHEGROUP_FLAG_NONPURGEABLE = $00000001;
+ CACHEGROUP_FLAG_GIDONLY = $00000004;
+
+ CACHEGROUP_FLAG_FLUSHURL_ONDELETE = $00000002;
+
+ CACHEGROUP_SEARCH_ALL = $00000000;
+ CACHEGROUP_SEARCH_BYURL = $00000001;
+
+ CACHEGROUP_TYPE_INVALID = $00000001;
+
+
+//
+// updatable cache group fields
+//
+const
+ CACHEGROUP_READWRITE_MASK = CACHEGROUP_ATTRIBUTE_TYPE or
+ CACHEGROUP_ATTRIBUTE_QUOTA or
+ CACHEGROUP_ATTRIBUTE_GROUPNAME or
+ CACHEGROUP_ATTRIBUTE_STORAGE;
+
+//
+// INTERNET_CACHE_GROUP_INFO
+//
+const
+ GROUPNAME_MAX_LENGTH = 120;
+ GROUP_OWNER_STORAGE_SIZE = 4;
+
+type
+ _INTERNET_CACHE_GROUP_INFOA = record
+ dwGroupSize:DWORD;
+ dwGroupFlags:DWORD;
+ dwGroupType:DWORD;
+ dwDiskUsage:DWORD; // in KB
+ dwDiskQuota:DWORD; // in KB
+ dwOwnerStorage:array[0..GROUP_OWNER_STORAGE_SIZE-1] of DWORD;
+ szGroupName:array[0..GROUPNAME_MAX_LENGTH-1] of char;
+ end;
+ INTERNET_CACHE_GROUP_INFOA = _INTERNET_CACHE_GROUP_INFOA;
+ LPINTERNET_CACHE_GROUP_INFOA = ^INTERNET_CACHE_GROUP_INFOA;
+
+ _INTERNET_CACHE_GROUP_INFOW = record
+ dwGroupSize:DWORD;
+ dwGroupFlags:DWORD;
+ dwGroupType:DWORD;
+ dwDiskUsage:DWORD; // in KB
+ dwDiskQuota:DWORD; // in KB
+ dwOwnerStorage:array[0..GROUP_OWNER_STORAGE_SIZE-1] of DWORD;
+ szGroupName:array[0..GROUPNAME_MAX_LENGTH-1] of WCHAR;
+ end;
+ INTERNET_CACHE_GROUP_INFOW = _INTERNET_CACHE_GROUP_INFOW;
+ LPINTERNET_CACHE_GROUP_INFOW = ^INTERNET_CACHE_GROUP_INFOW;
+
+
+{$IFDEF UNICODE}
+type
+ INTERNET_CACHE_GROUP_INFO = INTERNET_CACHE_GROUP_INFOW;
+ LPINTERNET_CACHE_GROUP_INFO = LPINTERNET_CACHE_GROUP_INFOW;
+{$ELSE UNICODE}
+type
+ INTERNET_CACHE_GROUP_INFO = INTERNET_CACHE_GROUP_INFOA;
+ LPINTERNET_CACHE_GROUP_INFO = LPINTERNET_CACHE_GROUP_INFOA;
+{$ENDIF UNICODE}
+
+
+//
+// Cache APIs
+//
+
+function CreateUrlCacheEntryA(lpszUrlName:LPCSTR;
+ dwExpectedFileSize:DWORD;
+ lpszFileExtension:LPCSTR;
+ lpszFileName:LPSTR;
+ dwReserved:DWORD
+ ):BOOL; external WinInetDLL name 'CreateUrlCacheEntryA';
+
+function CreateUrlCacheEntryW(lpszUrlName:LPCWSTR;
+ dwExpectedFileSize:DWORD;
+ lpszFileExtension:LPCWSTR;
+ lpszFileName:LPWSTR;
+ dwReserved:DWORD
+ ):BOOL; external WinInetDLL name 'CreateUrlCacheEntryW';
+
+{$IFDEF UNICODE}
+function CreateUrlCacheEntry(lpszUrlName:LPCWSTR;
+ dwExpectedFileSize:DWORD;
+ lpszFileExtension:LPCWSTR;
+ lpszFileName:LPWSTR;
+ dwReserved:DWORD
+ ):BOOL; external WinInetDLL name 'CreateUrlCacheEntryW';
+{$ELSE UNICODE}
+function CreateUrlCacheEntry(lpszUrlName:LPCSTR;
+ dwExpectedFileSize:DWORD;
+ lpszFileExtension:LPCSTR;
+ lpszFileName:LPSTR;
+ dwReserved:DWORD
+ ):BOOL; external WinInetDLL name 'CreateUrlCacheEntryA';
+{$ENDIF UNICODE}
+
+{$IFNDEF USE_FIXED_COMMIT_URL_CACHE_ENTRY}
+// Temporary state of affairs until we reconcile our apis.
+
+// Why are we doing this? HeaderInfo _should_ be string data.
+// However, one group is passing binary data instead. For the
+// unicode api, we've decided to disallow this, but this
+// brings up an inconsistency between the u and a apis, which
+// is undesirable.
+
+// For Beta 1, we'll go with this behaviour, but in future releases
+// we want to make these apis consistent.
+
+function CommitUrlCacheEntryA(lpszUrlName:LPCSTR;
+ lpszLocalFileName:LPCSTR;
+ ExpireTime:FILETIME;
+ LastModifiedTime:FILETIME;
+ CacheEntryType:DWORD;
+ lpHeaderInfo:LPBYTE;
+ dwHeaderSize:DWORD;
+ lpszFileExtension:LPCSTR;
+ lpszOriginalUrl:LPCSTR
+ ):BOOL; external WinInetDLL name 'CommitUrlCacheEntryA';
+
+function CommitUrlCacheEntryW(lpszUrlName:LPCWSTR;
+ lpszLocalFileName:LPCWSTR;
+ ExpireTime:FILETIME;
+ LastModifiedTime:FILETIME;
+ CacheEntryType:DWORD;
+ lpHeaderInfo:LPWSTR;
+ dwHeaderSize:DWORD;
+ lpszFileExtension:LPCWSTR;
+ lpszOriginalUrl:LPCWSTR
+ ):BOOL; external WinInetDLL name 'CommitUrlCacheEntryW';
+
+{$IFDEF UNICODE}
+function CommitUrlCacheEntry(lpszUrlName:LPCWSTR;
+ lpszLocalFileName:LPCWSTR;
+ ExpireTime:FILETIME;
+ LastModifiedTime:FILETIME;
+ CacheEntryType:DWORD;
+ lpHeaderInfo:LPWSTR;
+ dwHeaderSize:DWORD;
+ lpszFileExtension:LPCWSTR;
+ lpszOriginalUrl:LPCWSTR
+ ):BOOL; external WinInetDLL name 'CommitUrlCacheEntryW';
+{$ELSE UNICODE}
+function CommitUrlCacheEntry(lpszUrlName:LPCSTR;
+ lpszLocalFileName:LPCSTR;
+ ExpireTime:FILETIME;
+ LastModifiedTime:FILETIME;
+ CacheEntryType:DWORD;
+ lpHeaderInfo:LPBYTE;
+ dwHeaderSize:DWORD;
+ lpszFileExtension:LPCSTR;
+ lpszOriginalUrl:LPCSTR
+ ):BOOL; external WinInetDLL name 'CommitUrlCacheEntryA';
+{$ENDIF UNICODE}
+{$ELSE USE_FIXED_COMMIT_URL_CACHE_ENTRY}
+function CommitUrlCacheEntryA(lpszUrlName:LPCSTR;
+ lpszLocalFileName:LPCSTR;
+ ExpireTime:FILETIME;
+ LastModifiedTime:FILETIME;
+ CacheEntryType:DWORD;
+ lpHeaderInfo:LPCSTR;
+ dwHeaderSize:DWORD;
+ lpszFileExtension:LPCSTR;
+ lpszOriginalUrl:LPCSTR
+ ):BOOL; external WinInetDLL name 'CommitUrlCacheEntryA';
+
+function CommitUrlCacheEntryW(lpszUrlName:LPCWSTR;
+ lpszLocalFileName:LPCWSTR;
+ ExpireTime:FILETIME;
+ LastModifiedTime:FILETIME;
+ CacheEntryType:DWORD;
+ lpHeaderInfo:LPCWSTR;
+ dwHeaderSize:DWORD;
+ lpszFileExtension:LPCWSTR;
+ lpszOriginalUrl:LPCWSTR
+ ):BOOL; external WinInetDLL name 'CommitUrlCacheEntryW';
+
+{$IFDEF UNICODE}
+function CommitUrlCacheEntry(lpszUrlName:LPCWSTR;
+ lpszLocalFileName:LPCWSTR;
+ ExpireTime:FILETIME;
+ LastModifiedTime:FILETIME;
+ CacheEntryType:DWORD;
+ lpHeaderInfo:LPCWSTR;
+ dwHeaderSize:DWORD;
+ lpszFileExtension:LPCWSTR;
+ lpszOriginalUrl:LPCWSTR
+ ):BOOL; external WinInetDLL name 'CommitUrlCacheEntryW';
+{$ELSE UNICODE}
+function CommitUrlCacheEntry(lpszUrlName:LPCSTR;
+ lpszLocalFileName:LPCSTR;
+ ExpireTime:FILETIME;
+ LastModifiedTime:FILETIME;
+ CacheEntryType:DWORD;
+ lpHeaderInfo:LPCSTR;
+ dwHeaderSize:DWORD;
+ lpszFileExtension:LPCSTR;
+ lpszOriginalUrl:LPCSTR
+ ):BOOL; external WinInetDLL name 'CommitUrlCacheEntryA';
+{$ENDIF UNICODE}
+{$ENDIF USE_FIXED_COMMIT_URL_CACHE_ENTRY}
+
+function RetrieveUrlCacheEntryFileA(lpszUrlName:LPCSTR;
+ lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA;
+ lpdwCacheEntryInfoBufferSize:LPDWORD;
+ dwReserved:DWORD
+ ):BOOL; external WinInetDLL name 'RetrieveUrlCacheEntryFileA';
+
+function RetrieveUrlCacheEntryFileW(lpszUrlName:LPCWSTR;
+ lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW;
+ lpdwCacheEntryInfoBufferSize:LPDWORD;
+ dwReserved:DWORD
+ ):BOOL; external WinInetDLL name 'RetrieveUrlCacheEntryFileW';
+
+{$IFDEF UNICODE}
+function RetrieveUrlCacheEntryFile(lpszUrlName:LPCWSTR;
+ lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW;
+ lpdwCacheEntryInfoBufferSize:LPDWORD;
+ dwReserved:DWORD
+ ):BOOL; external WinInetDLL name 'RetrieveUrlCacheEntryFileW';
+{$ELSE UNICODE}
+function RetrieveUrlCacheEntryFile(lpszUrlName:LPCSTR;
+ lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA;
+ lpdwCacheEntryInfoBufferSize:LPDWORD;
+ dwReserved:DWORD
+ ):BOOL; external WinInetDLL name 'RetrieveUrlCacheEntryFileA';
+{$ENDIF UNICODE}
+
+function UnlockUrlCacheEntryFileA(lpszUrlName:LPCSTR;
+ dwReserved:DWORD
+ ):BOOL; external WinInetDLL name 'UnlockUrlCacheEntryFileA';
+
+function UnlockUrlCacheEntryFileW(lpszUrlName:LPCWSTR;
+ dwReserved:DWORD
+ ):BOOL; external WinInetDLL name 'UnlockUrlCacheEntryFileW';
+
+{$IFDEF UNICODE}
+function UnlockUrlCacheEntryFile(lpszUrlName:LPCWSTR;
+ dwReserved:DWORD
+ ):BOOL; external WinInetDLL name 'UnlockUrlCacheEntryFileW';
+{$ELSE UNICODE}
+{$IFDEF WIN32}
+function UnlockUrlCacheEntryFile(lpszUrlName:LPCSTR;
+ dwReserved:DWORD
+ ):BOOL; external WinInetDLL name 'UnlockUrlCacheEntryFileA';
+{$ELSE WIN32}
+function UnlockUrlCacheEntryFile(lpszUrlName:LPCSTR;
+ dwReserved:DWORD
+ ):BOOL; external WinInetDLL name 'UnlockUrlCacheEntryFile';
+{$ENDIF WIN32}
+{$ENDIF UNICODE}
+
+function RetrieveUrlCacheEntryStreamA(lpszUrlName:LPCSTR;
+ lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA;
+ lpdwCacheEntryInfoBufferSize:LPDWORD;
+ fRandomRead:BOOL;
+ dwReserved:DWORD
+ ):HANDLE; external WinInetDLL name 'RetrieveUrlCacheEntryStreamA';
+
+function RetrieveUrlCacheEntryStreamW(lpszUrlName:LPCWSTR;
+ lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW;
+ lpdwCacheEntryInfoBufferSize:LPDWORD;
+ fRandomRead:BOOL;
+ dwReserved:DWORD
+ ):HANDLE; external WinInetDLL name 'RetrieveUrlCacheEntryStreamW';
+
+{$IFDEF UNICODE}
+function RetrieveUrlCacheEntryStream(lpszUrlName:LPCWSTR;
+ lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW;
+ lpdwCacheEntryInfoBufferSize:LPDWORD;
+ fRandomRead:BOOL;
+ dwReserved:DWORD
+ ):HANDLE; external WinInetDLL name 'RetrieveUrlCacheEntryStreamW';
+{$ELSE UNICODE}
+function RetrieveUrlCacheEntryStream(lpszUrlName:LPCSTR;
+ lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA;
+ lpdwCacheEntryInfoBufferSize:LPDWORD;
+ fRandomRead:BOOL;
+ dwReserved:DWORD
+ ):HANDLE; external WinInetDLL name 'RetrieveUrlCacheEntryStreamA';
+{$ENDIF UNICODE}
+
+function ReadUrlCacheEntryStream(hUrlCacheStream:HANDLE;
+ dwLocation:DWORD;
+ lpBuffer:LPVOID;
+ lpdwLen:LPDWORD;
+ Reserved:DWORD
+ ):BOOL; external WinInetDLL name 'ReadUrlCacheEntryStream';
+
+function UnlockUrlCacheEntryStream(hUrlCacheStream:HANDLE;
+ Reserved:DWORD
+ ):BOOL; external WinInetDLL name 'UnlockUrlCacheEntryStream';
+
+function GetUrlCacheEntryInfoA(lpszUrlName:LPCSTR;
+ lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA;
+ lpdwCacheEntryInfoBufferSize:LPDWORD
+ ):BOOL; external WinInetDLL name 'GetUrlCacheEntryInfoA';
+
+function GetUrlCacheEntryInfoW(lpszUrlName:LPCWSTR;
+ lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW;
+ lpdwCacheEntryInfoBufferSize:LPDWORD
+ ):BOOL; external WinInetDLL name 'GetUrlCacheEntryInfoW';
+
+{$IFDEF UNICODE}
+function GetUrlCacheEntryInfo(lpszUrlName:LPCWSTR;
+ lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW;
+ lpdwCacheEntryInfoBufferSize:LPDWORD
+ ):BOOL; external WinInetDLL name 'GetUrlCacheEntryInfoW';
+{$ELSE UNICODE}
+function GetUrlCacheEntryInfo(lpszUrlName:LPCSTR;
+ lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA;
+ lpdwCacheEntryInfoBufferSize:LPDWORD
+ ):BOOL; external WinInetDLL name 'GetUrlCacheEntryInfoA';
+{$ENDIF UNICODE}
+
+function FindFirstUrlCacheGroup(dwFlags:DWORD;
+ dwFilter:DWORD;
+ lpSearchCondition:LPVOID;
+ dwSearchCondition:DWORD;
+ lpGroupId:LPGROUPID;
+ lpReserved:LPVOID
+ ):HANDLE; external WinInetDLL name 'FindFirstUrlCacheGroup';
+
+function FindNextUrlCacheGroup(hFind:HANDLE;
+ lpGroupId:LPGROUPID;
+ lpReserved:LPVOID
+ ):BOOL; external WinInetDLL name 'FindNextUrlCacheGroup';
+
+
+function GetUrlCacheGroupAttributeA(gid:GROUPID;
+ dwFlags:DWORD;
+ dwAttributes:DWORD;
+ lpGroupInfo:LPINTERNET_CACHE_GROUP_INFOA;
+ lpdwGroupInfo:LPDWORD;
+ lpReserved:LPVOID
+ ):BOOL; external WinInetDLL name 'GetUrlCacheGroupAttributeA';
+
+function GetUrlCacheGroupAttributeW(gid:GROUPID;
+ dwFlags:DWORD;
+ dwAttributes:DWORD;
+ lpGroupInfo:LPINTERNET_CACHE_GROUP_INFOW;
+ lpdwGroupInfo:LPDWORD;
+ lpReserved:LPVOID
+ ):BOOL; external WinInetDLL name 'GetUrlCacheGroupAttributeW';
+
+{$IFDEF UNICODE}
+function GetUrlCacheGroupAttribute(gid:GROUPID;
+ dwFlags:DWORD;
+ dwAttributes:DWORD;
+ lpGroupInfo:LPINTERNET_CACHE_GROUP_INFOW;
+ lpdwGroupInfo:LPDWORD;
+ lpReserved:LPVOID
+ ):BOOL; external WinInetDLL name 'GetUrlCacheGroupAttributeW';
+{$ELSE UNICODE}
+function GetUrlCacheGroupAttribute(gid:GROUPID;
+ dwFlags:DWORD;
+ dwAttributes:DWORD;
+ lpGroupInfo:LPINTERNET_CACHE_GROUP_INFOA;
+ lpdwGroupInfo:LPDWORD;
+ lpReserved:LPVOID
+ ):BOOL; external WinInetDLL name 'GetUrlCacheGroupAttributeA';
+{$ENDIF UNICODE}
+
+function SetUrlCacheGroupAttributeA(gid:GROUPID;
+ dwFlags:DWORD;
+ dwAttributes:DWORD;
+ lpGroupInfo:LPINTERNET_CACHE_GROUP_INFOA;
+ lpReserved:LPVOID
+ ):BOOL; external WinInetDLL name 'SetUrlCacheGroupAttributeA';
+
+function SetUrlCacheGroupAttributeW(gid:GROUPID;
+ dwFlags:DWORD;
+ dwAttributes:DWORD;
+ lpGroupInfo:LPINTERNET_CACHE_GROUP_INFOW;
+ lpReserved:LPVOID
+ ):BOOL; external WinInetDLL name 'SetUrlCacheGroupAttributeW';
+
+{$IFDEF UNICODE}
+function SetUrlCacheGroupAttribute(gid:GROUPID;
+ dwFlags:DWORD;
+ dwAttributes:DWORD;
+ lpGroupInfo:LPINTERNET_CACHE_GROUP_INFOW;
+ lpReserved:LPVOID
+ ):BOOL; external WinInetDLL name 'SetUrlCacheGroupAttributeW';
+{$ELSE UNICODE}
+function SetUrlCacheGroupAttribute(gid:GROUPID;
+ dwFlags:DWORD;
+ dwAttributes:DWORD;
+ lpGroupInfo:LPINTERNET_CACHE_GROUP_INFOA;
+ lpReserved:LPVOID
+ ):BOOL; external WinInetDLL name 'SetUrlCacheGroupAttributeA';
+{$ENDIF UNICODE}
+
+
+function GetUrlCacheEntryInfoExA(lpszUrl:LPCSTR;
+ lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA;
+ lpdwCacheEntryInfoBufSize:LPDWORD;
+ lpszReserved:LPSTR; // must pass null
+ lpdwReserved:LPDWORD; // must pass null
+ lpReserved:LPVOID; // must pass null
+ dwFlags:DWORD // reserved
+ ):BOOL; external WinInetDLL name 'GetUrlCacheEntryInfoExA';
+
+function GetUrlCacheEntryInfoExW(lpszUrl:LPCWSTR;
+ lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW;
+ lpdwCacheEntryInfoBufSize:LPDWORD;
+ lpszReserved:LPWSTR; // must pass null
+ lpdwReserved:LPDWORD; // must pass null
+ lpReserved:LPVOID; // must pass null
+ dwFlags:DWORD // reserved
+ ):BOOL; external WinInetDLL name 'GetUrlCacheEntryInfoExW';
+
+{$IFDEF UNICODE}
+function GetUrlCacheEntryInfoEx(lpszUrl:LPCWSTR;
+ lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW;
+ lpdwCacheEntryInfoBufSize:LPDWORD;
+ lpszReserved:LPWSTR; // must pass null
+ lpdwReserved:LPDWORD; // must pass null
+ lpReserved:LPVOID; // must pass null
+ dwFlags:DWORD // reserved
+ ):BOOL; external WinInetDLL name 'GetUrlCacheEntryInfoExW';
+{$ELSE UNICODE}
+function GetUrlCacheEntryInfoEx(lpszUrl:LPCSTR;
+ lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA;
+ lpdwCacheEntryInfoBufSize:LPDWORD;
+ lpszReserved:LPSTR; // must pass null
+ lpdwReserved:LPDWORD; // must pass null
+ lpReserved:LPVOID; // must pass null
+ dwFlags:DWORD // reserved
+ ):BOOL; external WinInetDLL name 'GetUrlCacheEntryInfoExA';
+{$ENDIF UNICODE}
+
+const
+ CACHE_ENTRY_ATTRIBUTE_FC = $00000004;
+ CACHE_ENTRY_HITRATE_FC = $00000010;
+ CACHE_ENTRY_MODTIME_FC = $00000040;
+ CACHE_ENTRY_EXPTIME_FC = $00000080;
+ CACHE_ENTRY_ACCTIME_FC = $00000100;
+ CACHE_ENTRY_SYNCTIME_FC = $00000200;
+ CACHE_ENTRY_HEADERINFO_FC = $00000400;
+ CACHE_ENTRY_EXEMPT_DELTA_FC = $00000800;
+
+function SetUrlCacheEntryInfoA(lpszUrlName:LPCSTR;
+ lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA;
+ dwFieldControl:DWORD
+ ):BOOL; external WinInetDLL name 'SetUrlCacheEntryInfoA';
+
+function SetUrlCacheEntryInfoW(lpszUrlName:LPCWSTR;
+ lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW;
+ dwFieldControl:DWORD
+ ):BOOL; external WinInetDLL name 'SetUrlCacheEntryInfoW';
+
+{$IFDEF UNICODE}
+function SetUrlCacheEntryInfo(lpszUrlName:LPCWSTR;
+ lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW;
+ dwFieldControl:DWORD
+ ):BOOL; external WinInetDLL name 'SetUrlCacheEntryInfoW';
+{$ELSE UNICODE}
+function SetUrlCacheEntryInfo(lpszUrlName:LPCSTR;
+ lpCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA;
+ dwFieldControl:DWORD
+ ):BOOL; external WinInetDLL name 'SetUrlCacheEntryInfoA';
+{$ENDIF UNICODE}
+
+
+//
+// Cache Group Functions
+//
+
+function CreateUrlCacheGroup(dwFlags:DWORD;
+ lpReserved:LPVOID // must pass NULL
+ ):GROUPID; external WinInetDLL name 'CreateUrlCacheGroup';
+
+function DeleteUrlCacheGroup(GroupId:GROUPID;
+ dwFlags:DWORD; // must pass 0
+ lpReserved:LPVOID // must pass NULL
+ ):BOOL; external WinInetDLL name 'DeleteUrlCacheGroup';
+
+// Flags for SetUrlCacheEntryGroup
+const
+ INTERNET_CACHE_GROUP_ADD = 0;
+ INTERNET_CACHE_GROUP_REMOVE = 1;
+
+function SetUrlCacheEntryGroupA(lpszUrlName:LPCSTR;
+ dwFlags:DWORD;
+ GroupId:GROUPID;
+ pbGroupAttributes:LPBYTE; // must pass NULL
+ cbGroupAttributes:DWORD; // must pass 0
+ lpReserved:LPVOID // must pass NULL
+ ):BOOL; external WinInetDLL name 'SetUrlCacheEntryGroupA';
+
+function SetUrlCacheEntryGroupW(lpszUrlName:LPCWSTR;
+ dwFlags:DWORD;
+ GroupId:GROUPID;
+ pbGroupAttributes:LPBYTE; // must pass NULL
+ cbGroupAttributes:DWORD; // must pass 0
+ lpReserved:LPVOID // must pass NULL
+ ):BOOL; external WinInetDLL name 'SetUrlCacheEntryGroupW';
+
+{$IFDEF UNICODE}
+function SetUrlCacheEntryGroup(lpszUrlName:LPCWSTR;
+ dwFlags:DWORD;
+ GroupId:GROUPID;
+ pbGroupAttributes:LPBYTE; // must pass NULL
+ cbGroupAttributes:DWORD; // must pass 0
+ lpReserved:LPVOID // must pass NULL
+ ):BOOL; external WinInetDLL name 'SetUrlCacheEntryGroupW';
+{$ELSE UNICODE}
+{$IFDEF WIN32}
+function SetUrlCacheEntryGroup(lpszUrlName:LPCSTR;
+ dwFlags:DWORD;
+ GroupId:GROUPID;
+ pbGroupAttributes:LPBYTE; // must pass NULL
+ cbGroupAttributes:DWORD; // must pass 0
+ lpReserved:LPVOID // must pass NULL
+ ):BOOL; external WinInetDLL name 'SetUrlCacheEntryGroupA';
+{$ELSE WIN32}
+function SetUrlCacheEntryGroup(lpszUrlName:LPCSTR;
+ dwFlags:DWORD;
+ GroupId:GROUPID;
+ pbGroupAttributes:LPBYTE; // must pass NULL
+ cbGroupAttributes:DWORD; // must pass 0
+ lpReserved:LPVOID // must pass NULL
+ ):BOOL; external WinInetDLL name 'SetUrlCacheEntryGroup';
+{$ENDIF WIN32}
+{$ENDIF UNICODE}
+
+function FindFirstUrlCacheEntryExA(lpszUrlSearchPattern:LPCSTR;
+ dwFlags:DWORD;
+ dwFilter:DWORD;
+ GroupId:GROUPID;
+ lpFirstCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA;
+ lpdwFirstCacheEntryInfoBufferSize:LPDWORD;
+ lpReserved:LPVOID; // must pass NULL
+ pcbReserved2:LPDWORD; // must pass NULL
+ lpReserved3:LPVOID // must pass NULL
+ ):HANDLE; external WinInetDLL name 'FindFirstUrlCacheEntryExA';
+
+function FindFirstUrlCacheEntryExW(lpszUrlSearchPattern:LPCWSTR;
+ dwFlags:DWORD;
+ dwFilter:DWORD;
+ GroupId:GROUPID;
+ lpFirstCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW;
+ lpdwFirstCacheEntryInfoBufferSize:LPDWORD;
+ lpReserved:LPVOID; // must pass NULL
+ pcbReserved2:LPDWORD; // must pass NULL
+ lpReserved3:LPVOID // must pass NULL
+ ):HANDLE; external WinInetDLL name 'FindFirstUrlCacheEntryExW';
+
+{$IFDEF UNICODE}
+function FindFirstUrlCacheEntryEx(lpszUrlSearchPattern:LPCWSTR;
+ dwFlags:DWORD;
+ dwFilter:DWORD;
+ GroupId:GROUPID;
+ lpFirstCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW;
+ lpdwFirstCacheEntryInfoBufferSize:LPDWORD;
+ lpReserved:LPVOID; // must pass NULL
+ pcbReserved2:LPDWORD; // must pass NULL
+ lpReserved3:LPVOID // must pass NULL
+ ):HANDLE; external WinInetDLL name 'FindFirstUrlCacheEntryExW';
+{$ELSE UNICODE}
+function FindFirstUrlCacheEntryEx(lpszUrlSearchPattern:LPCSTR;
+ dwFlags:DWORD;
+ dwFilter:DWORD;
+ GroupId:GROUPID;
+ lpFirstCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA;
+ lpdwFirstCacheEntryInfoBufferSize:LPDWORD;
+ lpReserved:LPVOID; // must pass NULL
+ pcbReserved2:LPDWORD; // must pass NULL
+ lpReserved3:LPVOID // must pass NULL
+ ):HANDLE; external WinInetDLL name 'FindFirstUrlCacheEntryExA';
+{$ENDIF UNICODE}
+
+function FindNextUrlCacheEntryExA(hEnumHandle:HANDLE;
+ lpFirstCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA;
+ lpdwFirstCacheEntryInfoBufferSize:LPDWORD;
+ lpReserved:LPVOID; // must pass NULL
+ pcbReserved2:LPDWORD; // must pass NULL
+ lpReserved3:LPVOID // must pass NULL
+ ):BOOL; external WinInetDLL name 'FindNextUrlCacheEntryExA';
+
+function FindNextUrlCacheEntryExW(hEnumHandle:HANDLE;
+ lpFirstCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW;
+ lpdwFirstCacheEntryInfoBufferSize:LPDWORD;
+ lpReserved:LPVOID; // must pass NULL
+ pcbReserved2:LPDWORD; // must pass NULL
+ lpReserved3:LPVOID // must pass NULL
+ ):BOOL; external WinInetDLL name 'FindNextUrlCacheEntryExW';
+
+{$IFDEF UNICODE}
+function FindNextUrlCacheEntryEx(hEnumHandle:HANDLE;
+ lpFirstCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW;
+ lpdwFirstCacheEntryInfoBufferSize:LPDWORD;
+ lpReserved:LPVOID; // must pass NULL
+ pcbReserved2:LPDWORD; // must pass NULL
+ lpReserved3:LPVOID // must pass NULL
+ ):BOOL; external WinInetDLL name 'FindNextUrlCacheEntryExW';
+{$ELSE UNICODE}
+function FindNextUrlCacheEntryEx(hEnumHandle:HANDLE;
+ lpFirstCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA;
+ lpdwFirstCacheEntryInfoBufferSize:LPDWORD;
+ lpReserved:LPVOID; // must pass NULL
+ pcbReserved2:LPDWORD; // must pass NULL
+ lpReserved3:LPVOID // must pass NULL
+ ):BOOL; external WinInetDLL name 'FindNextUrlCacheEntryExA';
+{$ENDIF UNICODE}
+
+function FindFirstUrlCacheEntryA(lpszUrlSearchPattern:LPCSTR;
+ lpFirstCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA;
+ lpdwFirstCacheEntryInfoBufferSize:LPDWORD
+ ):HANDLE; external WinInetDLL name 'FindFirstUrlCacheEntryA';
+
+function FindFirstUrlCacheEntryW(lpszUrlSearchPattern:LPCWSTR;
+ lpFirstCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW;
+ lpdwFirstCacheEntryInfoBufferSize:LPDWORD
+ ):HANDLE; external WinInetDLL name 'FindFirstUrlCacheEntryW';
+
+{$IFDEF UNICODE}
+function FindFirstUrlCacheEntry(lpszUrlSearchPattern:LPCWSTR;
+ lpFirstCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW;
+ lpdwFirstCacheEntryInfoBufferSize:LPDWORD
+ ):HANDLE; external WinInetDLL name 'FindFirstUrlCacheEntryW';
+{$ELSE UNICODE}
+function FindFirstUrlCacheEntry(lpszUrlSearchPattern:LPCSTR;
+ lpFirstCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA;
+ lpdwFirstCacheEntryInfoBufferSize:LPDWORD
+ ):HANDLE; external WinInetDLL name 'FindFirstUrlCacheEntryA';
+{$ENDIF UNICODE}
+
+function FindNextUrlCacheEntryA(hEnumHandle:HANDLE;
+ lpNextCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA;
+ lpdwNextCacheEntryInfoBufferSize:LPDWORD
+ ):BOOL; external WinInetDLL name 'FindNextUrlCacheEntryA';
+
+function FindNextUrlCacheEntryW(hEnumHandle:HANDLE;
+ lpNextCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW;
+ lpdwNextCacheEntryInfoBufferSize:LPDWORD
+ ):BOOL; external WinInetDLL name 'FindNextUrlCacheEntryW';
+
+{$IFDEF UNICODE}
+function FindNextUrlCacheEntry(hEnumHandle:HANDLE;
+ lpNextCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOW;
+ lpdwNextCacheEntryInfoBufferSize:LPDWORD
+ ):BOOL; external WinInetDLL name 'FindNextUrlCacheEntryW';
+{$ELSE UNICODE}
+function FindNextUrlCacheEntry(hEnumHandle:HANDLE;
+ lpNextCacheEntryInfo:LPINTERNET_CACHE_ENTRY_INFOA;
+ lpdwNextCacheEntryInfoBufferSize:LPDWORD
+ ):BOOL; external WinInetDLL name 'FindNextUrlCacheEntryA';
+{$ENDIF UNICODE}
+
+
+function FindCloseUrlCache(hEnumHandle:HANDLE):BOOL; external WinInetDLL name 'FindCloseUrlCache';
+
+function DeleteUrlCacheEntryA(lpszUrlName:LPCSTR):BOOL; external WinInetDLL name 'DeleteUrlCacheEntryA';
+
+function DeleteUrlCacheEntryW(lpszUrlName:LPCWSTR):BOOL; external WinInetDLL name 'DeleteUrlCacheEntryW';
+
+{$IFDEF UNICODE}
+function DeleteUrlCacheEntry(lpszUrlName:LPCWSTR):BOOL; external WinInetDLL name 'DeleteUrlCacheEntryW';
+{$ELSE UNICODE}
+{$IFDEF WIN32}
+function DeleteUrlCacheEntry(lpszUrlName:LPCSTR):BOOL; external WinInetDLL name 'DeleteUrlCacheEntryA';
+{$ELSE WIN32}
+function DeleteUrlCacheEntry(lpszUrlName:LPCSTR):BOOL; external WinInetDLL name 'DeleteUrlCacheEntry';
+{$ENDIF WIN32}
+{$ENDIF UNICODE}
+
+
+
+//
+// Autodial APIs
+//
+
+{$IFNDEF WINCE}
+// Despite the functions
+// InternetDial
+// InternetHangUp
+// InternetAutodial
+// InternetAutodialHangup
+// InternetInitializeAutoProxyDll
+// are declared in wininet.h for both WIN32 and WINCE there are no such
+// functions exported by wininet.dll under CE.
+function InternetDialA(hwndParent:HWND;
+ lpszConnectoid:LPSTR;
+ dwFlags:DWORD;
+ lpdwConnection:PDWORD_PTR;
+ dwReserved:DWORD
+ ):DWORD; external WinInetDLL name 'InternetDialA';
+
+function InternetDialW(hwndParent:HWND;
+ lpszConnectoid:LPWSTR;
+ dwFlags:DWORD;
+ lpdwConnection:PDWORD_PTR;
+ dwReserved:DWORD
+ ):DWORD; external WinInetDLL name 'InternetDialW';
+
+{$IFDEF UNICODE}
+function InternetDial(hwndParent:HWND;
+ lpszConnectoid:LPWSTR;
+ dwFlags:DWORD;
+ lpdwConnection:PDWORD_PTR;
+ dwReserved:DWORD
+ ):DWORD; external WinInetDLL name 'InternetDialW';
+{$ELSE UNICODE}
+{$IFDEF WIN32}
+function InternetDial(hwndParent:HWND;
+ lpszConnectoid:LPSTR;
+ dwFlags:DWORD;
+ lpdwConnection:PDWORD_PTR;
+ dwReserved:DWORD
+ ):DWORD; external WinInetDLL name 'InternetDialA';
+{$ELSE WIN32}
+function InternetDial(hwndParent:HWND;
+ lpszConnectoid:LPSTR;
+ dwFlags:DWORD;
+ lpdwConnection:PDWORD_PTR;
+ dwReserved:DWORD
+ ):DWORD; external WinInetDLL name 'InternetDial';
+{$ENDIF WIN32}
+{$ENDIF UNICODE}
+
+// Flags for InternetDial - must not conflict with InternetAutodial flags
+// as they are valid here also.
+const
+ INTERNET_DIAL_FORCE_PROMPT = $2000;
+ INTERNET_DIAL_SHOW_OFFLINE = $4000;
+ INTERNET_DIAL_UNATTENDED = $8000;
+
+function InternetHangUp(dwConnection:DWORD_PTR;
+ dwReserved:DWORD
+ ):DWORD; external WinInetDLL name 'InternetHangUp';
+
+function InternetAutodial(dwFlags:DWORD;
+ hwndParent:HWND
+ ):BOOL; external WinInetDLL name 'InternetAutodial';
+
+// Flags for InternetAutodial
+const
+ INTERNET_AUTODIAL_FORCE_ONLINE = 1;
+ INTERNET_AUTODIAL_FORCE_UNATTENDED = 2;
+ INTERNET_AUTODIAL_FAILIFSECURITYCHECK = 4;
+ INTERNET_AUTODIAL_OVERRIDE_NET_PRESENT = 8;
+
+ INTERNET_AUTODIAL_FLAGS_MASK = INTERNET_AUTODIAL_FORCE_ONLINE or
+ INTERNET_AUTODIAL_FORCE_UNATTENDED or
+ INTERNET_AUTODIAL_FAILIFSECURITYCHECK or
+ INTERNET_AUTODIAL_OVERRIDE_NET_PRESENT;
+
+function InternetAutodialHangup(dwReserved:DWORD):BOOL; external WinInetDLL name 'InternetAutodialHangup';
+
+function InternetInitializeAutoProxyDll(dwReserved:DWORD):BOOL; external WinInetDLL name 'InternetInitializeAutoProxyDll';
+{$ENDIF WINCE}
+
+const
+ INTERENT_GOONLINE_REFRESH = $00000001;
+ INTERENT_GOONLINE_MASK = $00000001;
+
+function InternetGoOnlineA(lpszURL:LPSTR;
+ hwndParent:HWND;
+ dwFlags:DWORD
+ ):BOOL; external WinInetDLL name 'InternetGoOnlineA';
+
+function InternetGoOnlineW(lpszURL:LPWSTR;
+ hwndParent:HWND;
+ dwFlags:DWORD
+ ):BOOL; external WinInetDLL name 'InternetGoOnlineW';
+
+{$IFDEF UNICODE}
+function InternetGoOnline(lpszURL:LPWSTR;
+ hwndParent:HWND;
+ dwFlags:DWORD
+ ):BOOL; external WinInetDLL name 'InternetGoOnlineW';
+{$ELSE UNICODE}
+{$IFDEF WIN32}
+function InternetGoOnline(lpszURL:LPSTR;
+ hwndParent:HWND;
+ dwFlags:DWORD
+ ):BOOL; external WinInetDLL name 'InternetGoOnlineA';
+{$ELSE WIN32}
+function InternetGoOnline(lpszURL:LPSTR;
+ hwndParent:HWND;
+ dwFlags:DWORD
+ ):BOOL; external WinInetDLL name 'InternetGoOnline';
+{$ENDIF WIN32}
+{$ENDIF UNICODE}
+
+
+function InternetGetConnectedState(lpdwFlags:LPDWORD;
+ dwReserved:DWORD
+ ):BOOL; external WinInetDLL name 'InternetGetConnectedState';
+
+
+function InternetGetConnectedStateExA(lpdwFlags:LPDWORD;
+ lpszConnectionName:LPSTR;
+ dwNameLen:DWORD;
+ dwReserved:DWORD
+ ):BOOL; external WinInetDLL name 'InternetGetConnectedStateExA';
+
+function InternetGetConnectedStateExW(lpdwFlags:LPDWORD;
+ lpszConnectionName:LPWSTR;
+ dwNameLen:DWORD;
+ dwReserved:DWORD
+ ):BOOL; external WinInetDLL name 'InternetGetConnectedStateExW';
+
+{$IFDEF UNICODE}
+function InternetGetConnectedStateEx(lpdwFlags:LPDWORD;
+ lpszConnectionName:LPWSTR;
+ dwNameLen:DWORD;
+ dwReserved:DWORD
+ ):BOOL; external WinInetDLL name 'InternetGetConnectedStateExW';
+{$ELSE UNICODE}
+{$IFDEF WIN32}
+function InternetGetConnectedStateEx(lpdwFlags:LPDWORD;
+ lpszConnectionName:LPSTR;
+ dwNameLen:DWORD;
+ dwReserved:DWORD
+ ):BOOL; external WinInetDLL name 'InternetGetConnectedStateExA';
+{$ELSE WIN32}
+function InternetGetConnectedStateEx(lpdwFlags:LPDWORD;
+ lpszConnectionName:LPSTR;
+ dwNameLen:DWORD;
+ dwReserved:DWORD
+ ):BOOL; external WinInetDLL name 'InternetGetConnectedStateEx';
+{$ENDIF WIN32}
+{$ENDIF UNICODE}
+
+// Flags for InternetGetConnectedState and Ex
+const
+ INTERNET_CONNECTION_MODEM = $01;
+ INTERNET_CONNECTION_LAN = $02;
+ INTERNET_CONNECTION_PROXY = $04;
+ INTERNET_CONNECTION_MODEM_BUSY = $08; // no longer used
+ INTERNET_RAS_INSTALLED = $10;
+ INTERNET_CONNECTION_OFFLINE = $20;
+ INTERNET_CONNECTION_CONFIGURED = $40;
+
+//
+// Custom dial handler functions
+//
+
+// Custom dial handler prototype
+type
+ PFN_DIAL_HANDLER = function(param1:HWND; param2:LPCSTR; param3:DWORD; param4:LPDWORD):DWORD; cdecl;
+
+// Flags for custom dial handler
+const
+ INTERNET_CUSTOMDIAL_CONNECT = 0;
+ INTERNET_CUSTOMDIAL_UNATTENDED = 1;
+ INTERNET_CUSTOMDIAL_DISCONNECT = 2;
+ INTERNET_CUSTOMDIAL_SHOWOFFLINE = 4;
+
+// Custom dial handler supported functionality flags
+const
+ INTERNET_CUSTOMDIAL_SAFE_FOR_UNATTENDED = 1;
+ INTERNET_CUSTOMDIAL_WILL_SUPPLY_STATE = 2;
+ INTERNET_CUSTOMDIAL_CAN_HANGUP = 4;
+
+{
+ The obsolete functions InternetSetDialStateA and InternetSetDialStateW and
+ constants for them are left out.
+}
+
+
+function InternetSetPerSiteCookieDecisionA(pchHostName:LPCSTR;
+ dwDecision:DWORD
+ ):BOOL; external WinInetDLL name 'InternetSetPerSiteCookieDecisionA';
+
+function InternetSetPerSiteCookieDecisionW(pchHostName:LPCWSTR;
+ dwDecision:DWORD
+ ):BOOL; external WinInetDLL name 'InternetSetPerSiteCookieDecisionW';
+
+{$IFDEF UNICODE}
+function InternetSetPerSiteCookieDecision(pchHostName:LPCWSTR;
+ dwDecision:DWORD
+ ):BOOL; external WinInetDLL name 'InternetSetPerSiteCookieDecisionW';
+{$ELSE UNICODE}
+function InternetSetPerSiteCookieDecision(pchHostName:LPCSTR;
+ dwDecision:DWORD
+ ):BOOL; external WinInetDLL name 'InternetSetPerSiteCookieDecisionA';
+{$ENDIF UNICODE}
+
+function InternetGetPerSiteCookieDecisionA(pchHostName:LPCSTR;
+ pResult:PULONG
+ ):BOOL; external WinInetDLL name 'InternetGetPerSiteCookieDecisionA';
+
+function InternetGetPerSiteCookieDecisionW(pchHostName:LPCWSTR;
+ pResult:PULONG
+ ):BOOL; external WinInetDLL name 'InternetGetPerSiteCookieDecisionW';
+
+{$IFDEF UNICODE}
+function InternetGetPerSiteCookieDecision(pchHostName:LPCWSTR;
+ pResult:PULONG
+ ):BOOL; external WinInetDLL name 'InternetGetPerSiteCookieDecisionW';
+{$ELSE UNICODE}
+function InternetGetPerSiteCookieDecision(pchHostName:LPCSTR;
+ pResult:PULONG
+ ):BOOL; external WinInetDLL name 'InternetGetPerSiteCookieDecisionA';
+{$ENDIF UNICODE}
+
+function InternetClearAllPerSiteCookieDecisions:BOOL; external WinInetDLL name 'InternetClearAllPerSiteCookieDecisions';
+
+
+function InternetEnumPerSiteCookieDecisionA(pszSiteName:LPSTR;
+ pcSiteNameSize:PULONG;
+ pdwDecision:PULONG;
+ dwIndex:ULONG
+ ):BOOL; external WinInetDLL name 'InternetEnumPerSiteCookieDecisionA';
+
+function InternetEnumPerSiteCookieDecisionW(pszSiteName:LPWSTR;
+ pcSiteNameSize:PULONG;
+ pdwDecision:PULONG;
+ dwIndex:ULONG
+ ):BOOL; external WinInetDLL name 'InternetEnumPerSiteCookieDecisionW';
+
+{$IFDEF UNICODE}
+function InternetEnumPerSiteCookieDecision(pszSiteName:LPWSTR;
+ pcSiteNameSize:PULONG;
+ pdwDecision:PULONG;
+ dwIndex:ULONG
+ ):BOOL; external WinInetDLL name 'InternetEnumPerSiteCookieDecisionW';
+{$ELSE UNICODE}
+function InternetEnumPerSiteCookieDecision(pszSiteName:LPSTR;
+ pcSiteNameSize:PULONG;
+ pdwDecision:PULONG;
+ dwIndex:ULONG
+ ):BOOL; external WinInetDLL name 'InternetEnumPerSiteCookieDecisionA';
+{$ENDIF UNICODE}
+
+const
+ INTERNET_IDENTITY_FLAG_PRIVATE_CACHE = $01;
+ INTERNET_IDENTITY_FLAG_SHARED_CACHE = $02;
+ INTERNET_IDENTITY_FLAG_CLEAR_DATA = $04;
+ INTERNET_IDENTITY_FLAG_CLEAR_COOKIES = $08;
+ INTERNET_IDENTITY_FLAG_CLEAR_HISTORY = $10;
+ INTERNET_IDENTITY_FLAG_CLEAR_CONTENT = $20;
+
+ INTERNET_SUPPRESS_RESET_ALL = $00;
+ INTERNET_SUPPRESS_COOKIE_POLICY = $01;
+ INTERNET_SUPPRESS_COOKIE_POLICY_RESET = $02;
+
+//
+// Privacy settings values and APIs
+//
+const
+ PRIVACY_TEMPLATE_NO_COOKIES = 0;
+ PRIVACY_TEMPLATE_HIGH = 1;
+ PRIVACY_TEMPLATE_MEDIUM_HIGH = 2;
+ PRIVACY_TEMPLATE_MEDIUM = 3;
+ PRIVACY_TEMPLATE_MEDIUM_LOW = 4;
+ PRIVACY_TEMPLATE_LOW = 5;
+ PRIVACY_TEMPLATE_CUSTOM = 100;
+ PRIVACY_TEMPLATE_ADVANCED = 101;
+
+ PRIVACY_TEMPLATE_MAX = PRIVACY_TEMPLATE_LOW;
+
+ PRIVACY_TYPE_FIRST_PARTY = 0;
+ PRIVACY_TYPE_THIRD_PARTY = 1;
+
+function PrivacySetZonePreferenceW(dwZone:DWORD;
+ dwType:DWORD;
+ dwTemplate:DWORD;
+ pszPreference:LPCWSTR
+ ):DWORD; external WinInetDLL name 'PrivacySetZonePreferenceW';
+function PrivacySetZonePreference(dwZone:DWORD;
+ dwType:DWORD;
+ dwTemplate:DWORD;
+ pszPreference:LPCWSTR
+ ):DWORD; external WinInetDLL name 'PrivacySetZonePreferenceW';
+
+function PrivacyGetZonePreferenceW(dwZone:DWORD;
+ dwType:DWORD;
+ pdwTemplate:LPDWORD;
+ pszBuffer:LPWSTR;
+ pdwBufferLength:LPDWORD
+ ):DWORD; external WinInetDLL name 'PrivacyGetZonePreferenceW';
+function PrivacyGetZonePreference(dwZone:DWORD;
+ dwType:DWORD;
+ pdwTemplate:LPDWORD;
+ pszBuffer:LPWSTR;
+ pdwBufferLength:LPDWORD
+ ):DWORD; external WinInetDLL name 'PrivacyGetZonePreferenceW';
+
+// *
+// * Return packing to whatever it was before we
+// * entered this file
+// *
+{$PACKRECORDS DEFAULT} // #include <poppack.h>
+
+implementation
+
+//
+// gopher type macros
+//
+function IS_GOPHER_FILE(_type:DWORD):BOOL; inline;
+begin
+ IS_GOPHER_FILE:=(_type and GOPHER_TYPE_FILE_MASK)<>0;
+end;
+
+function IS_GOPHER_DIRECTORY(_type:DWORD):BOOL; inline;
+begin
+ IS_GOPHER_DIRECTORY:=(_type and GOPHER_TYPE_DIRECTORY)<>0;
+end;
+
+function IS_GOPHER_PHONE_SERVER(_type:DWORD):BOOL; inline;
+begin
+ IS_GOPHER_PHONE_SERVER:=(_type and GOPHER_TYPE_CSO)<>0;
+end;
+
+function IS_GOPHER_ERROR(_type:DWORD):BOOL; inline;
+begin
+ IS_GOPHER_ERROR:=(_type and GOPHER_TYPE_ERROR)<>0;
+end;
+
+function IS_GOPHER_INDEX_SERVER(_type:DWORD):BOOL; inline;
+begin
+ IS_GOPHER_INDEX_SERVER:=(_type and GOPHER_TYPE_INDEX_SERVER)<>0;
+end;
+
+function IS_GOPHER_TELNET_SESSION(_type:DWORD):BOOL; inline;
+begin
+ IS_GOPHER_TELNET_SESSION:=(_type and GOPHER_TYPE_TELNET)<>0;
+end;
+
+function IS_GOPHER_BACKUP_SERVER(_type:DWORD):BOOL; inline;
+begin
+ IS_GOPHER_BACKUP_SERVER:=(_type and GOPHER_TYPE_REDUNDANT)<>0;
+end;
+
+function IS_GOPHER_TN3270_SESSION(_type:DWORD):BOOL; inline;
+begin
+ IS_GOPHER_TN3270_SESSION:=(_type and GOPHER_TYPE_TN3270)<>0;
+end;
+
+function IS_GOPHER_ASK(_type:DWORD):BOOL; inline;
+begin
+ IS_GOPHER_ASK:=(_type and GOPHER_TYPE_ASK)<>0;
+end;
+
+function IS_GOPHER_PLUS(_type:DWORD):BOOL; inline;
+begin
+ IS_GOPHER_PLUS:=(_type and GOPHER_TYPE_GOPHER_PLUS)<>0;
+end;
+
+function IS_GOPHER_TYPE_KNOWN(_type:DWORD):BOOL; inline;
+begin
+ IS_GOPHER_TYPE_KNOWN:=(_type and GOPHER_TYPE_UNKNOWN)=0;
+end;
+
+end.
diff --git a/packages/winceunits/src/ws2bth.pp b/packages/winceunits/src/ws2bth.pp
new file mode 100644
index 0000000000..43cfa8580b
--- /dev/null
+++ b/packages/winceunits/src/ws2bth.pp
@@ -0,0 +1,320 @@
+{
+ 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 Name:
+//
+// ws2bth.h
+//
+// Abstract:
+//
+// Winsock 2 Bluetooth Annex definitions.
+//
+
+//
+// Microsoft Windows Mobile 6.0 for PocketPC SDK.
+//
+
+unit ws2bth;
+
+{$CALLING cdecl}
+
+interface
+
+uses Windows;
+
+const
+ BTH_MAX_NAME_SIZE = 248; // max length of device friendly name.
+
+// Some explanations of the BT_ADDR structure.
+// Taken from module bt_ddi.h which is a part of MS WinCE 6.0 Platform Builder
+// and defines interfaces between layers of Bluetooth device driver.
+
+// ------------------------------------ BD_ADDR------------------------------------
+//
+{$PACKRECORDS 1} // #pragma pack(push, 1)
+type
+ __bd_addr = record
+ SAP:Cardinal; // Significant address part.
+ // The lower 24 bits are the 'Lower address part' and
+ // the higher 8 bits are the 'Upper address part'.
+ NAP:word; // Non-significant address part.
+ end;
+ BD_ADDR = __bd_addr;
+(* Declared as:
+typedef struct __bd_addr {
+ union {
+ struct {
+ unsigned int LAP : 24; // Lower address part
+ unsigned int UAP : 8; // Upper address part
+ };
+ unsigned int SAP; // Significant address part
+ };
+
+ unsigned short NAP; // Non-significant address part
+} BD_ADDR;
+*)
+{$PACKRECORDS DEFAULT} // #pragma pack(pop)
+
+const
+ BLUETOOTH_TRANSPORT_NAME = 'MSBT';
+
+// End of BT_ADDR explanation.
+
+type
+ BT_ADDR = ULONGLONG;
+ PBT_ADDR = ^BT_ADDR;
+ TBtAddr = BT_ADDR;
+ PBtAddr = ^TBtAddr;
+
+type
+ BT_COD = ULONG;
+ TBtCod = BT_COD;
+
+type
+ BT_LAP = ULONG;
+ TBtLap = BT_LAP;
+
+const
+ NAP_MASK = ULONGLONG($FFFF00000000);
+ SAP_MASK = ULONGLONG($0000FFFFFFFF);
+
+ NAP_BIT_OFFSET = 8 * 4;
+ SAP_BIT_OFFSET = 0;
+
+// Macro functions.
+function GET_NAP(const _bt_addr:BT_ADDR):USHORT;
+
+function GET_SAP(const _bt_addr:BT_ADDR):ULONG;
+
+function SET_NAP(const _nap:USHORT):ULONGLONG;
+
+function SET_SAP(const _sap:ULONG):ULONGLONG;
+
+function SET_NAP_SAP(const _nap:USHORT; const _sap:ULONG):ULONGLONG;
+
+
+// Turn 1 byte packing of structures on
+const
+ L2CAP_MAX_MTU = 65535;
+
+const
+ BT_ADDR_NULL = $000000000000;
+ BT_ADDR_IAC_FIRST = $9E8B00;
+ BT_ADDR_IAC_LAST = $9E8B3f;
+ BT_ADDR_LIAC = $9E8B00;
+ BT_ADDR_GIAC = $9E8B33;
+
+ BT_PORT_NULL = 0;
+ BT_PORT_WILDCARD = 0;
+ BT_PORT_ANY = -1;
+ BT_PORT_MIN = $1;
+ BT_PORT_MAX = $ffff;
+ BT_PORT_DYN_FIRST = $1001;
+ BT_PORT_EXCL_BIT = $0100;
+
+const
+ AF_BTH = 32;
+ AF_BT = AF_BTH;
+ WINDOWS_AF_BT = AF_BTH;
+ AF_MAX = 33;
+
+ PF_BTH = AF_BTH;
+ PF_MAX = AF_BTH;
+
+
+ NS_BTH = 16;
+
+const
+ SVCID_BTH_PROVIDER:GUID = (D1: $06AA63E0; D2: $7D60; D3: $41FF; D4: ($AF, $B2, $3E, $E6, $D2, $D9, $39, $2D));
+// SVCID_BTH_PROVIDER:GUID = '{06AA63E0-7D60-41FF-AFB2-3EE6D2D9392D}';
+
+
+// Bluetooth protocol #s are assigned according to the Bluetooth
+// Assigned Numbers portion of the Bluetooth Specification
+const
+ BTHPROTO_RFCOMM = $0003;
+ BTHPROTO_L2CAP = $0100;
+
+ SDP_ENUMDEVICES = $00000010;
+ SDP_SET = $00000011;
+ SDP_QUERY = $00000012;
+
+ RFCOMM_FLOW_CONTROL = $00000013;
+
+ SOL_RFCOMM = $03;
+ SOL_BTHTDI = $100;
+ SOL_SDP = $0101;
+
+type
+ _BTH_SOCKOPT_SECURITY = record
+ iLength:longint; // == 0 or 16 for link key, 0<=..<=16 for PIN. 0 = revoke
+ btAddr:BT_ADDR;
+ caData:array[0..15] of byte;
+ end;
+ BTH_SOCKOPT_SECURITY = _BTH_SOCKOPT_SECURITY;
+ PBTH_SOCKOPT_SECURITY = ^_BTH_SOCKOPT_SECURITY;
+
+type
+ _BTH_LOCAL_VERSION = record
+ hci_version:byte;
+ hci_revision:word;
+ lmp_version:byte;
+ lmp_subversion:word;
+ manufacturer:word;
+ lmp_features:array[0..7] of byte;
+ end;
+ BTH_LOCAL_VERSION = _BTH_LOCAL_VERSION;
+ PBTH_LOCAL_VERSION = ^_BTH_LOCAL_VERSION;
+
+type
+ _BTH_REMOTE_VERSION = record
+ lmp_version:byte;
+ lmp_subversion:word;
+ manufacturer:word;
+ lmp_features:array[0..7] of byte;
+ end;
+ BTH_REMOTE_VERSION = _BTH_REMOTE_VERSION;
+ PBTH_REMOTE_VERSION = ^_BTH_REMOTE_VERSION;
+
+type
+ _BTH_REMOTE_NAME = record
+ bt:BT_ADDR;
+ szNameBuffer:array[0..BTH_MAX_NAME_SIZE-1] of WideChar;
+ end;
+ BTH_REMOTE_NAME = _BTH_REMOTE_NAME;
+ PBTH_REMOTE_NAME = ^_BTH_REMOTE_NAME;
+
+type
+ _BTH_HOLD_MODE = record
+ hold_mode_max:word;
+ hold_mode_min:word;
+ interval:word; // out
+ end;
+ BTH_HOLD_MODE = _BTH_HOLD_MODE;
+ PBTH_HOLD_MODE = ^_BTH_HOLD_MODE;
+
+type
+ _BTH_SNIFF_MODE = record
+ sniff_mode_max:word;
+ sniff_mode_min:word;
+ sniff_attempt:word;
+ sniff_timeout:word;
+ interval:word; // out
+ end;
+ BTH_SNIFF_MODE = _BTH_SNIFF_MODE;
+ PBTH_SNIFF_MODE = ^_BTH_SNIFF_MODE;
+
+type
+ _BTH_PARK_MODE = record
+ beacon_max:word;
+ beacon_min:word;
+ interval:word; // out
+ end;
+ BTH_PARK_MODE = _BTH_PARK_MODE;
+ PBTH_PARK_MODE = ^_BTH_PARK_MODE;
+
+const
+ SO_BTH_AUTHENTICATE = $00000001; // optlen=0, optval ignored
+ SO_BTH_ENCRYPT = $00000002; // optlen=sizeof(unsigned int), optval = &(unsigned int)TRUE/FALSE
+ SO_BTH_SET_PIN = $00000003; // bound only! survives socket! optlen=sizeof(BTH_SOCKOPT_SECURITY), optval=&BTH_SOCKOPT_SECURITY
+ SO_BTH_SET_LINK = $00000004; // bound only! survives socket! optlen=sizeof(BTH_SOCKOPT_SECURITY), optval=&BTH_SOCKOPT_SECURITY
+ SO_BTH_GET_LINK = $00000005; // bound only! optlen=sizeof(BTH_SOCKOPT_SECURITY), optval=&BTH_SOCKOPT_SECURITY
+ SO_BTH_SET_MTU = $00000006; // unconnected only! optlen=sizeof(unsigned int), optval = &mtu
+ SO_BTH_GET_MTU = $00000007; // optlen=sizeof(unsigned int), optval = &mtu
+ SO_BTH_SET_MTU_MAX = $00000008; // unconnected only! optlen=sizeof(unsigned int), optval = &max. mtu
+ SO_BTH_GET_MTU_MAX = $00000009; // bound only! optlen=sizeof(unsigned int), optval = &max. mtu
+ SO_BTH_SET_MTU_MIN = $0000000a; // unconnected only! optlen=sizeof(unsigned int), optval = &min. mtu
+ SO_BTH_GET_MTU_MIN = $0000000b; // bound only! optlen=sizeof(unsigned int), optval = &min. mtu
+ SO_BTH_SET_XON_LIM = $0000000c; // optlen=sizeof(unsigned int), optval = &xon limit (set flow off)
+ SO_BTH_GET_XON_LIM = $0000000d; // optlen=sizeof(unsigned int), optval = &xon
+ SO_BTH_SET_XOFF_LIM = $0000000e; // optlen=sizeof(unsigned int), optval = &xoff limit (set flow on)
+ SO_BTH_GET_XOFF_LIM = $0000000f; // optlen=sizeof(unsigned int), optval = &xoff
+ SO_BTH_SET_SEND_BUFFER = $00000010; // optlen=sizeof(unsigned int), optval = &max buffered size for send
+ SO_BTH_GET_SEND_BUFFER = $00000011; // optlen=sizeof(unsigned int), optval = &max buffered size for send
+ SO_BTH_SET_RECV_BUFFER = $00000012; // optlen=sizeof(unsigned int), optval = &max buffered size for recv
+ SO_BTH_GET_RECV_BUFFER = $00000013; // optlen=sizeof(unsigned int), optval = &max buffered size for recv
+ SO_BTH_GET_V24_BR = $00000014; // connected only! optlen=2*sizeof(unsigned int), optval = &{v24 , br}
+ SO_BTH_GET_RLS = $00000015; // connected only! optlen=sizeof(unsigned int), optval = &rls
+ SO_BTH_SEND_MSC = $00000016; // connected only! optlen=2*sizeof(unsigned int), optval = &{v24, br}
+ SO_BTH_SEND_RLS = $00000017; // connected only! optlen=sizeof(unsigned int), optval = &rls
+ SO_BTH_GET_FLOW_TYPE = $00000018; // connected only! optlen=sizeof(unsigned int), optval=&1=credit-based, 0=legacy
+ SO_BTH_SET_PAGE_TO = $00000019; // no restrictions. optlen=sizeof(unsigned int), optval = &page timeout
+ SO_BTH_GET_PAGE_TO = $0000001a; // no restrictions. optlen=sizeof(unsigned int), optval = &page timeout
+ SO_BTH_SET_SCAN = $0000001b; // no restrictions. optlen=sizeof(unsigned int), optval = &scan mode
+ SO_BTH_GET_SCAN = $0000001c; // no restrictions. optlen=sizeof(unsigned int), optval = &scan mode
+ SO_BTH_SET_COD = $0000001d; // no restrictions. optlen=sizeof(unsigned int), optval = &cod
+ SO_BTH_GET_COD = $0000001e; // no restrictions. optlen=sizeof(unsigned int), optval = &cod
+ SO_BTH_GET_LOCAL_VER = $0000001f; // no restrictions. optlen=sizeof(BTH_LOCAL_VERSION), optval = &BTH_LOCAL_VERSION
+ SO_BTH_GET_REMOTE_VER = $00000020; // connected only! optlen=sizeof(BTH_REMOTE_VERSION), optval = &BTH_REMOTE_VERSION
+ SO_BTH_GET_AUTHN_ENABLE = $00000021; // no restrictions. optlen=sizeof(unsigned int), optval = &authentication enable
+ SO_BTH_SET_AUTHN_ENABLE = $00000022; // no restrictions. optlen=sizeof(unsigned int), optval = &authentication enable
+ SO_BTH_SET_READ_REMOTE_NAME = $00000023; // no restrictions. optlen=sizeof(BTH_REMOTE_NAME), optval=&BTH_REMOTE_NAME
+ SO_BTH_GET_LINK_POLICY = $00000024; // connected only! optlen=sizeof(unsigned int), optval = &link policy
+ SO_BTH_SET_LINK_POLICY = $00000025; // connected only! optlen=sizeof(unsigned int), optval = &link policy
+ SO_BTH_ENTER_HOLD_MODE = $00000026; // connected only! optlen=sizeof(BTH_HOLD_MODE), optval = &BTH_HOLD_MODE
+ SO_BTH_ENTER_SNIFF_MODE = $00000027; // connected only! optlen=sizeof(BTH_SNIFF_MODE), optval = &BTH_SNIFF_MODE
+ SO_BTH_EXIT_SNIFF_MODE = $00000028; // connected only! optlen=0, optval - ignored
+ SO_BTH_ENTER_PARK_MODE = $00000029; // connected only! optlen=sizeof(BTH_PARK_MODE), optval = &BTH_PARK_MODE
+ SO_BTH_EXIT_PARK_MODE = $0000002a; // connected only! optlen=0, optval - ignored
+ SO_BTH_GET_MODE = $0000002b; // connected only! optlen=sizeof(int), optval = &mode
+
+type
+ _SOCKADDR_BTH = record
+ addressFamily:USHORT;
+ btAddr:BT_ADDR;
+ serviceClassId:GUID;
+ port:ULONG;
+ end;
+ SOCKADDR_BTH = _SOCKADDR_BTH;
+ PSOCKADDR_BTH = ^_SOCKADDR_BTH;
+
+type
+ __bth_inquiry_result = record
+ ba:BT_ADDR;
+ cod:LongWord;
+ clock_offset:word;
+ page_scan_mode:byte;
+ page_scan_period_mode:byte;
+ page_scan_repetition_mode:byte;
+ end;
+ BthInquiryResult = __bth_inquiry_result;
+ PBthInquiryResult = ^BthInquiryResult;
+
+implementation
+
+function GET_NAP(const _bt_addr:BT_ADDR):USHORT; inline;
+begin
+ GET_NAP:=USHORT((_bt_addr and NAP_MASK) shr NAP_BIT_OFFSET);
+end;
+
+function GET_SAP(const _bt_addr:BT_ADDR):ULONG; inline;
+begin
+ GET_SAP:=ULONG((_bt_addr and SAP_MASK) shr SAP_BIT_OFFSET);
+end;
+
+function SET_NAP(const _nap:USHORT):ULONGLONG; inline;
+begin
+ SET_NAP:=ULONGLONG(_nap shl NAP_BIT_OFFSET);
+end;
+
+function SET_SAP(const _sap:ULONG):ULONGLONG; inline;
+begin
+ SET_SAP:=ULONGLONG(_sap shr SAP_BIT_OFFSET);
+end;
+
+function SET_NAP_SAP(const _nap:USHORT; const _sap:ULONG):ULONGLONG; inline;
+begin
+ SET_NAP_SAP:=SET_NAP(_nap) or SET_SAP(_sap);
+end;
+
+end. \ No newline at end of file
diff --git a/rtl/wince/wininc/base.inc b/rtl/wince/wininc/base.inc
index 3954f2ac96..184973328c 100644
--- a/rtl/wince/wininc/base.inc
+++ b/rtl/wince/wininc/base.inc
@@ -297,6 +297,50 @@
WCTYPE_T = WCHAR_T; //+stdlib
TIME_T=ULONG; //+stdlib
WPARAM = Longint; //windef UINT_PTR
+
+// The left side of these typedefs are machine and compiler dependent.
+// From types.h
+type
+ INT8 = ShortInt;
+ UINT8 = byte;
+ INT16 = SmallInt;
+ UINT16 = word;
+ INT32 = longint;
+ UINT32 = LongWord;
+// INT64
+ UINT64 = QWord;
+
+type
+ _INT128 = packed record
+ u0,u1,u2:UINT32;
+ u3:INT32;
+ end;
+ INT128 = _INT128;
+
+ _UINT128 = packed record
+ u0,u1,u2,u3:UINT32;
+ end;
+ UINT128 = _UINT128;
+
+type
+ PINT8 = ^INT8;
+ PUINT8 = ^UINT8;
+ PINT16 = ^INT16;
+ PUINT16 = ^UINT16;
+ PINT32 = ^INT32;
+ PUINT32 = ^UINT32;
+// PINT64
+ PUINT64 = ^UINT64;
+ PINT128 = ^INT128;
+ PUINT128 = ^UINT128;
+
+type
+ PPVOID = ^pointer;
+
+type
+ WIN32_ERROR_CODE = DWORD;
+
+
{
Enumerations
}
@@ -1000,3 +1044,4 @@ type
{$endif read_implementation}
+
diff --git a/rtl/wince/wininc/coredll.inc b/rtl/wince/wininc/coredll.inc
index 697b1db8dc..a15e26413e 100644
--- a/rtl/wince/wininc/coredll.inc
+++ b/rtl/wince/wininc/coredll.inc
@@ -215,10 +215,8 @@
30C DumpKCallProfile
3DB EnableCaretSystemWide
553 EnableEUDC
- BF EnumDevices
50E EnumDisplayDevices
666 EnumDisplayMonitors
- BE EnumPnpIds
14D EnumUILanguagesW
374 ExtractResource
17F FileSystemPowerFunction
@@ -239,7 +237,6 @@
29 GetCurrentFT
39F GetCurrentPermissions
186 GetDeviceByIndex
- C0 GetDeviceKeys
2FA GetEventData
394 GetFSHeapInfo
407 GetForegroundInfo
@@ -263,8 +260,6 @@
377 GetRomFileBytes
376 GetRomFileInfo
102 GetStoreInformation
-- 40E GetSystemPowerStatusEx -> power.inc
-- 40F GetSystemPowerStatusEx2 -> power.inc
2D0 GetUserDirectory
1B7 GetWindowTextWDirect
37E GiveKPhys
@@ -377,11 +372,8 @@
33C NKDbgPrintfW
3A7 NKTerminateThread
36F NKvDbgPrintfW
- 49F NLedGetDeviceInfo
- 4A0 NLedSetDevice
30F NotifyForceCleanboot
410 NotifyWinUserSystem
- C1 OpenDeviceKey
395 OtherThreadsRunning
3BB PPSHRestart
C PSLNotify
@@ -405,7 +397,6 @@
2D4 PegSetUserNotification
1CE PegWriteRecordProps
2F1 PerformCallBack4
- 267 PlaySoundW
3A3 PowerOffSystem
37C PrintTrackedItem
373 ProcessDetachAllDLLs
@@ -418,31 +409,6 @@
485 QAUnhookWindowsJournalHook
2F2 QueryAPISetID
91 Random
- 1FC RasDeleteEntry
- 207 RasDevConfigDialogEditW
- 1F3 RasDial
- 1FE RasEnumConnections
- 203 RasEnumDevicesW
- 1F6 RasEnumEntries
- 1FF RasGetConnectStatus
- 206 RasGetDispPhoneNumW
- 20A RasGetEapConnectionData
- 208 RasGetEapUserData
- 200 RasGetEntryDevConfig
- 1F7 RasGetEntryDialParams
- 1F9 RasGetEntryProperties
- 205 RasGetLinkStatistics
- 204 RasGetProjectionInfoW
- 1F5 RasHangUp
- 1F4 RasHangup
- 202 RasIOControl
- 1FD RasRenameEntry
- 20B RasSetEapConnectionData
- 209 RasSetEapUserData
- 201 RasSetEntryDevConfig
- 1F8 RasSetEntryDialParams
- 1FA RasSetEntryProperties
- 1FB RasValidateEntryName
181 ReadFileWithSeek
3C0 ReadRegistryFromOEM
1BE RectangleAnimation
@@ -1811,8 +1777,6 @@
58C _ltoa
58D _ltow
602 _mbmemset
- 590 _memccpy
- 593 _memicmp
597 _msize
598 _nextafter
5C1 _purecall
@@ -1826,27 +1790,10 @@
60A _snprintf
605 _snwprintf
5A4 _statusfp
- 71 _strdup
- 77 _stricmp
- 75 _strlwr
- 78 _strnicmp
- 72 _strnset
- 73 _strrev
- 74 _strset
- 76 _strupr
- 5B0 _swab
5B3 _ultoa
5B4 _ultow
60B _vsnprintf
606 _vsnwprintf
- 64 _wcsdup
- 146 _wcsicmp
- 147 _wcslwr
- 145 _wcsnicmp
- 5D _wcsnset
- 60 _wcsrev
- 61 _wcsset
- 148 _wcsupr
61E _wfdopen
63D _wfopen
61F _wfreopen
@@ -1856,36 +1803,6 @@
5B9 _y1
5BA _yn
559 abs
- 28B acmDriverAdd
- 28C acmDriverClose
- 28D acmDriverDetails
- 28E acmDriverEnum
- 28F acmDriverID
- 290 acmDriverMessage
- 291 acmDriverOpen
- 292 acmDriverPriority
- 293 acmDriverRemove
- 2A8 acmFilterChoose
- 294 acmFilterDetails
- 295 acmFilterEnum
- 296 acmFilterTagDetails
- 297 acmFilterTagEnum
- 2A7 acmFormatChoose
- 298 acmFormatDetails
- 299 acmFormatEnum
- 29A acmFormatSuggest
- 29B acmFormatTagDetails
- 29C acmFormatTagEnum
- 2A5 acmGetVersion
- 2A6 acmMetrics
- 29D acmStreamClose
- 29E acmStreamConvert
- 29F acmStreamMessage
- 2A0 acmStreamOpen
- 2A1 acmStreamPrepareHeader
- 2A2 acmStreamReset
- 2A3 acmStreamSize
- 2A4 acmStreamUnprepareHeader
55A acos
55B asin
55C atan
@@ -1893,7 +1810,6 @@
560 atof
55E atoi
55F atol
- 58F calloc
564 ceil
68A ceilf
629 clearerr
@@ -1924,7 +1840,6 @@
639 fputwc
63C fputws
622 fread
- 577 free
579 frexp
619 fscanf
62C fseek
@@ -1941,16 +1856,6 @@
584 ldexp
585 ldiv
589 longjmp
- 2B2 mixerClose
- 2A9 mixerGetControlDetails
- 2AA mixerGetDevCaps
- 2AB mixerGetID
- 2AC mixerGetLineControls
- 2AD mixerGetLineInfo
- 2AE mixerGetNumDevs
- 2AF mixerMessage
- 2B0 mixerOpen
- 2B1 mixerSetControlDetails
596 modf
599 pow
60D printf
@@ -1959,13 +1864,11 @@
635 putwchar
59A qsort
59B rand
- 59C realloc
60C scanf
601 setjmp
62F setvbuf
5A0 sin
5A1 sinh
- 266 sndPlaySoundW
608 sprintf
5A2 sqrt
68E sqrtf
@@ -2004,41 +1907,6 @@
609 vsprintf
604 vswprintf
633 vwprintf
- 283 waveInAddBuffer
- 280 waveInClose
- 27E waveInGetDevCaps
- 27F waveInGetErrorText
- 288 waveInGetID
- 27D waveInGetNumDevs
- 287 waveInGetPosition
- 289 waveInMessage
- 28A waveInOpen
- 281 waveInPrepareHeader
- 286 waveInReset
- 284 waveInStart
- 285 waveInStop
- 282 waveInUnprepareHeader
- 274 waveOutBreakLoop
- 26D waveOutClose
- 269 waveOutGetDevCaps
- 26C waveOutGetErrorText
- 27A waveOutGetID
- 268 waveOutGetNumDevs
- 276 waveOutGetPitch
- 278 waveOutGetPlaybackRate
- 275 waveOutGetPosition
- 26A waveOutGetVolume
- 27B waveOutMessage
- 27C waveOutOpen
- 271 waveOutPause
- 26E waveOutPrepareHeader
- 273 waveOutReset
- 272 waveOutRestart
- 277 waveOutSetPitch
- 279 waveOutSetPlaybackRate
- 26B waveOutSetVolume
- 26F waveOutUnprepareHeader
- 270 waveOutWrite
632 wprintf
631 wscanf
@@ -2097,6 +1965,9 @@ function BeginDeferWindowPos(nNumWindows:longint):HDWP; external KernelDLL name
function BeginPaint(hWnd:HWND; lpPaint:LPPAINTSTRUCT):HDC; external KernelDLL name 'BeginPaint';
function BitBlt(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint;_para6:HDC; _para7:longint; _para8:longint; _para9:DWORD):WINBOOL; external KernelDLL name 'BitBlt';
function BringWindowToTop(hWnd:HWND):WINBOOL; external KernelDLL name 'BringWindowToTop';
+
+// Allocates an array in memory with elements initialized to 0.
+function calloc(num:SIZE_T; _size:SIZE_T):pointer; external KernelDLL name 'calloc'; // index 58F
function CallNextHookEx(hhk:HHOOK; nCode:longint; wParam:WPARAM; lParam:LPARAM):LRESULT; external KernelDLL name 'CallNextHookEx';
function CallWindowProc(lpPrevWndFunc:WNDPROC; hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external KernelDLL name 'CallWindowProcW';
function CallWindowProcW(lpPrevWndFunc:WNDPROC; hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external KernelDLL name 'CallWindowProcW';
@@ -2300,6 +2171,7 @@ function FoldString(dwMapFlags:DWORD; lpSrcStr:LPCWSTR; cchSrc:longint; lpDestSt
function FoldStringW(dwMapFlags:DWORD; lpSrcStr:LPCWSTR; cchSrc:longint; lpDestStr:LPWSTR; cchDest:longint):longint; external KernelDLL name 'FoldStringW';
function FormatMessage(dwFlags:DWORD; lpSource:LPCVOID; dwMessageId:DWORD; dwLanguageId:DWORD; lpBuffer:LPWSTR;nSize:DWORD; Arguments:va_list):DWORD; external KernelDLL name 'FormatMessageW';
function FormatMessageW(dwFlags:DWORD; lpSource:LPCVOID; dwMessageId:DWORD; dwLanguageId:DWORD; lpBuffer:LPWSTR;nSize:DWORD; Arguments:va_list):DWORD; external KernelDLL name 'FormatMessageW';
+procedure free(memblock:pointer); external KernelDLL name 'free'; // index 577
function FreeLibrary(hLibModule:HMODULE):WINBOOL; external KernelDLL name 'FreeLibrary';
procedure FreeLibraryAndExitThread(hLibModule:HMODULE; dwExitCode:DWORD); external KernelDLL name 'FreeLibraryAndExitThread';
function GetActiveWindow:HWND; external KernelDLL name 'GetActiveWindow';
@@ -2771,6 +2643,7 @@ procedure RaiseException(dwExceptionCode:DWORD; dwExceptionFlags:DWORD; nNumberO
function ReadFile(hFile:HANDLE; lpBuffer:LPVOID; nNumberOfBytesToRead:DWORD; lpNumberOfBytesRead:LPDWORD; lpOverlapped:LPOVERLAPPED):BOOL; external KernelDLL name 'ReadFile'; // index F4
function ReadProcessMemory(hProcess:HANDLE; lpBaseAddress:LPCVOID; lpBuffer:LPVOID; nSize:DWORD; lpNumberOfBytesRead:LPDWORD):WINBOOL; external KernelDLL name 'ReadProcessMemory';
function RealizePalette(_para1:HDC):UINT; external KernelDLL name 'RealizePalette'; // index 52F
+function realloc(memblock:pointer; _size:SIZE_T):pointer; external KernelDLL name 'realloc'; // index 59C
function RectInRegion(_para1:HRGN; const _para2:RECT):WINBOOL; external KernelDLL name 'RectInRegion';
function RectVisible(_para1:HDC; const _para2:RECT):WINBOOL; external KernelDLL name 'RectVisible';
function Rectangle(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint):WINBOOL; external KernelDLL name 'Rectangle';
@@ -3086,6 +2959,42 @@ function wvsprintf(_para1:LPWSTR; _para2:LPCWSTR; arglist:va_list):longint; exte
function wvsprintfW(_para1:LPWSTR; _para2:LPCWSTR; arglist:va_list):longint; external KernelDLL name 'wvsprintfW';
procedure ZeroMemory(Destination:PVOID; Length:DWORD);
+// dest - pointer to destination.
+// src - pointer to source.
+// c - last character to copy.
+// count - number of characters.
+// Returns: if the character c is copied, _memccpy returns a pointer to the
+// byte in dest that immediately follows the character. If c is not copied, it
+// returns NULL.
+function _memccpy(dest:pointer; src:pointer; c:longint; _count:Cardinal):pointer; external KernelDLL name '_memccpy'; // index 590
+function _memicmp(buf1:pointer; buf2:pointer; _count:Cardinal):longint; external KernelDLL name '_memicmp'; // index 593
+
+// _strdup function calls malloc to allocate storage space for a copy of
+// strSource and then copies strSource to the allocated space.
+function _strdup(strSource:PAnsiChar):PAnsiChar; external KernelDLL name '_strdup'; // index 71
+function _stricmp(string1:PAnsiChar; string2:PAnsiChar):longint; external KernelDLL name '_stricmp'; // index 77
+function _strlwr(_string:PAnsiChar):PAnsiChar; external KernelDLL name '_strlwr'; // index 75
+function _strnicmp(string1:PAnsiChar; string2:PAnsiChar; _count:SIZE_T):longint; external KernelDLL name '_strnicmp'; // index 78
+function _strnset(_string:PAnsiChar; c:longint; _count:SIZE_T):PAnsiChar; external KernelDLL name '_strnset'; // index 72
+function _strrev(_string:PAnsiChar):PAnsiChar; external KernelDLL name '_strrev'; // index 73
+function _strset(_string:PAnsiChar; c:longint):PAnsiChar; external KernelDLL name '_strset'; // index 74
+function _strupr(_string:PAnsiChar):PAnsiChar; external KernelDLL name '_strupr'; // index 76
+
+// The _swab function copies n bytes from src, swaps each pair of adjacent bytes,
+// and stores the result at dest. The integer n should be an even number to allow
+// for swapping. _swab is typically used to prepare binary data for transfer to
+// a machine that uses a different byte order.
+procedure _swab(src:PAnsiChar; dest:PAnsiChar; n:longint); external KernelDLL name '_swab'; // index 5B0
+
+function _wcsdup(strSource:PWideChar):PWideChar; external KernelDLL name '_wcsdup'; // index 64
+function _wcsicmp(string1:PWideChar; string2:PWideChar):longint; external KernelDLL name '_wcsicmp'; // index 146
+function _wcslwr(_string:PWideChar):PWideChar; external KernelDLL name '_wcslwr'; // index 147
+function _wcsnicmp(string1:PWideChar; string2:PWideChar; _count:SIZE_T):longint; external KernelDLL name '_wcsnicmp'; // index 145
+function _wcsnset(_string:PWideChar; c:WCHAR; _count:SIZE_T):PWideChar; external KernelDLL name '_wcsnset'; // index 5D
+function _wcsrev(_string:PWideChar):PWideChar; external KernelDLL name '_wcsrev'; // index 60
+function _wcsset(_string:PWideChar; c:WCHAR):PWideChar; external KernelDLL name '_wcsset'; // index 61
+function _wcsupr(_string:PWideChar):PWideChar; external KernelDLL name '_wcsupr'; // index 148
+
{$endif read_interface}
@@ -4180,3 +4089,4 @@ end;
+
diff --git a/rtl/wince/wininc/defines.inc b/rtl/wince/wininc/defines.inc
index 0554281306..d2b664b9d6 100644
--- a/rtl/wince/wininc/defines.inc
+++ b/rtl/wince/wininc/defines.inc
@@ -667,7 +667,7 @@
WS_BORDER = $800000;
WS_CAPTION = $c00000;
WS_CHILD = $40000000;
- WS_CHILDWINDOW = $40000000;
+{ WS_CHILDWINDOW = $40000000; // Not declared in WinCE }
WS_CLIPCHILDREN = $2000000;
WS_CLIPSIBLINGS = $4000000;
WS_DISABLED = $8000000;
@@ -684,6 +684,7 @@
WS_THICKFRAME = $40000;
WS_VISIBLE = $10000000;
WS_VSCROLL = $200000;
+
BS_3STATE = $5;
BS_AUTO3STATE = $6;
BS_AUTOCHECKBOX = $3;
@@ -704,12 +705,13 @@
BS_PUSHLIKE = $1000;
BS_RADIOBUTTON = $4;
BS_RIGHT = $200;
- BS_RIGHTBUTTON = $20;
+ BS_RIGHTBUTTON = BS_LEFTTEXT;
BS_TEXT = 0;
BS_TOP = $400;
- BS_USERBUTTON = $8;
+{ BS_USERBUTTON = $8; // Unsupported under WinCE. }
BS_VCENTER = $c00;
- BS_FLAT = $8000;
+{ BS_FLAT = $8000; // Unsupported under WinCE. }
+
CBS_AUTOHSCROLL = $40;
CBS_DISABLENOSCROLL = $800;
CBS_DROPDOWN = $2;
@@ -718,11 +720,23 @@
CBS_LOWERCASE = $4000;
CBS_NOINTEGRALHEIGHT = $400;
CBS_OEMCONVERT = $80;
- CBS_OWNERDRAWFIXED = $10;
- CBS_OWNERDRAWVARIABLE = $20;
- CBS_SIMPLE = $1;
+{ CBS_OWNERDRAWFIXED = $10; // Unsupported under WinCE. }
+{ CBS_OWNERDRAWVARIABLE = $20; // Unsupported under WinCE. }
+{ CBS_SIMPLE = $1; // Unsupported under WinCE. }
CBS_SORT = $100;
CBS_UPPERCASE = $2000;
+
+{ Extended combo box styles }
+ CBS_EX_CONSTSTRINGDATA = $00000002;
+{ If you specify the CBS_EX_CONSTSTRINGDATA style when the application
+ inserts a string into the list part of a combo box, the combo box
+ stores the pointer passed to it by the application rather than copying
+ the string. This saves RAM resources when you have a large table of
+ strings in ROM that you want to insert into a combo box. }
+
+
+
+{ Edit Control Styles }
ES_AUTOHSCROLL = $80;
ES_AUTOVSCROLL = $40;
ES_CENTER = $1;
@@ -737,6 +751,9 @@
ES_RIGHT = $2;
ES_UPPERCASE = $8;
ES_WANTRETURN = $1000;
+ ES_COMBOBOX = $0200; { Indicates that the edit control is part of a combo box. }
+
+{ List box styles }
LBS_DISABLENOSCROLL = $1000;
LBS_EXTENDEDSEL = $800;
LBS_HASSTRINGS = $40;
@@ -750,90 +767,106 @@
LBS_OWNERDRAWFIXED = $10;
LBS_OWNERDRAWVARIABLE = $20;
LBS_SORT = $2;
- LBS_STANDARD = $a00003;
+// LBS_STANDARD = $a00003;
LBS_USETABSTOPS = $80;
LBS_WANTKEYBOARDINPUT = $400;
- SBS_BOTTOMALIGN = $4;
+ LBS_STANDARD = LBS_NOTIFY or LBS_SORT or WS_VSCROLL or WS_BORDER;
+
+{ Extended list box styles }
+ LBS_EX_CONSTSTRINGDATA = $00000002;
+{ Windows CE supports the LBS_EX_CONSTSTRINGDATA style that saves RAM
+ resources when you have a large table of strings in ROM that you want
+ to insert into a list box. }
+
+{ Scroll bar styles }
+{ SBS_BOTTOMALIGN = $4; // Unsupported under WinCE. }
SBS_HORZ = 0;
- SBS_LEFTALIGN = $2;
- SBS_RIGHTALIGN = $4;
- SBS_SIZEBOX = $8;
- SBS_SIZEBOXBOTTOMRIGHTALIGN = $4;
- SBS_SIZEBOXTOPLEFTALIGN = $2;
- SBS_SIZEGRIP = $10;
- SBS_TOPALIGN = $2;
+{ SBS_LEFTALIGN = $2; // Unsupported under WinCE. }
+{ SBS_RIGHTALIGN = $4; // Unsupported under WinCE. }
+{ SBS_SIZEBOX = $8; // Unsupported under WinCE. }
+{ SBS_SIZEBOXBOTTOMRIGHTALIGN = $4; // Unsupported under WinCE. }
+{ SBS_SIZEBOXTOPLEFTALIGN = $2; // Unsupported under WinCE. }
+{ SBS_SIZEGRIP = $10; // Unsupported under WinCE. }
+{ SBS_TOPALIGN = $2; // Unsupported under WinCE. }
SBS_VERT = $1;
+
+{ Static control styles }
SS_BITMAP = $e;
- SS_BLACKFRAME = $7;
- SS_BLACKRECT = $4;
+{ SS_BLACKFRAME = $7; // Unsupported under WinCE. }
+{ SS_BLACKRECT = $4; // Unsupported under WinCE. }
SS_CENTER = $1;
SS_CENTERIMAGE = $200;
- SS_ENHMETAFILE = $f;
- SS_ETCHEDFRAME = $12;
- SS_ETCHEDHORZ = $10;
- SS_ETCHEDVERT = $11;
- SS_GRAYFRAME = $8;
- SS_GRAYRECT = $5;
+{ SS_ENHMETAFILE = $f; // Unsupported under WinCE. }
+{ SS_ETCHEDFRAME = $12; // Unsupported under WinCE. }
+{ SS_ETCHEDHORZ = $10; // Unsupported under WinCE. }
+{ SS_ETCHEDVERT = $11; // Unsupported under WinCE. }
+{ SS_GRAYFRAME = $8; // Unsupported under WinCE. }
+{ SS_GRAYRECT = $5; // Unsupported under WinCE. }
SS_ICON = $3;
SS_LEFT = 0;
SS_LEFTNOWORDWRAP = $c;
SS_NOPREFIX = $80;
SS_NOTIFY = $100;
- SS_OWNERDRAW = $d;
- SS_REALSIZEIMAGE = $800;
+{ SS_OWNERDRAW = $d; // Unsupported under WinCE. }
+{ SS_REALSIZEIMAGE = $800; // Unsupported under WinCE. }
SS_RIGHT = $2;
- SS_RIGHTJUST = $400;
- SS_SIMPLE = $b;
- SS_SUNKEN = $1000;
- SS_USERITEM = $a;
- SS_WHITEFRAME = $9;
- SS_WHITERECT = $6;
+{ SS_RIGHTJUST = $400; // Unsupported under WinCE. }
+{ SS_SIMPLE = $b; // Unsupported under WinCE. }
+{ SS_SUNKEN = $1000; // Unsupported under WinCE. }
+{ SS_USERITEM = $a; // Unsupported under WinCE. }
+{ SS_WHITEFRAME = $9; // Unsupported under WinCE. }
+{ SS_WHITERECT = $6; // Unsupported under WinCE. }
+
{ Dialog styles }
- DS_ABSALIGN = $1;
- DS_SYSMODAL = $2;
+{ DS_ABSALIGN = $1; // Unsupported under WinCE. }
+{ DS_SYSMODAL = $2; // Unsupported under WinCE. }
DS_3DLOOK = $4;
- DS_FIXEDSYS = $8;
- DS_NOFAILCREATE = $10;
- DS_LOCALEDIT = $20;
- DS_SETFONT = $40;
- DS_MODALFRAME = $80;
- DS_NOIDLEMSG = $100;
- DS_SETFOREGROUND = $200;
+{ DS_FIXEDSYS = $8; // Unsupported under WinCE. }
+{ DS_NOFAILCREATE = $10; // Unsupported under WinCE. }
+ DS_LOCALEDIT = $20; { Edit items get Local storage. }
+ DS_SETFONT = $40; { User specified font for Dlg controls. }
+ DS_MODALFRAME = $80; { Can be combined with WS_CAPTION. }
+{ DS_NOIDLEMSG = $100; // Unsupported under WinCE. }
+ DS_SETFOREGROUND = $200; { not in Windows 3.1 }
DS_CONTROL = $400;
DS_CENTER = $800;
- DS_CENTERMOUSE = $1000;
- DS_CONTEXTHELP = $2000;
- DS_NOCLOSEBTN = $4000;
+{ DS_CENTERMOUSE = $1000; // Unsupported under WinCE. }
+{ DS_CONTEXTHELP = $2000; // Unsupported under WinCE. }
+ DS_NOCLOSEBTN = $4000;
{ CreateWindowEx }
- WS_EX_LEFT = 0;
- WS_EX_LTRREADING = 0;
- WS_EX_RIGHTSCROLLBAR = 0;
+{ WS_EX_LEFT = 0; // Not declared. }
+{ WS_EX_LTRREADING = 0; // Not declared. }
+{ WS_EX_RIGHTSCROLLBAR = 0; // Not declared. }
WS_EX_DLGMODALFRAME = $1;
- WS_EX_NOPARENTNOTIFY = $4;
+{ WS_EX_NOPARENTNOTIFY = $4; // Unsupported under WinCE. }
WS_EX_TOPMOST = $8;
- WS_EX_ACCEPTFILES = $10;
- WS_EX_TRANSPARENT = $20;
- WS_EX_MDICHILD = $40;
+{ WS_EX_ACCEPTFILES = $10; // Unsupported under WinCE. }
+{ WS_EX_TRANSPARENT = $20; // Unsupported under WinCE. }
+{ WS_EX_MDICHILD = $40; // Unsupported under WinCE. }
WS_EX_TOOLWINDOW = $80;
- WS_EX_PALETTEWINDOW = $188;
+{ WS_EX_PALETTEWINDOW = $188; // Unsupported under WinCE. }
WS_EX_WINDOWEDGE = $100;
WS_EX_CLIENTEDGE = $200;
- WS_EX_OVERLAPPEDWINDOW = $300;
+ WS_EX_OVERLAPPEDWINDOW = WS_EX_WINDOWEDGE or WS_EX_CLIENTEDGE;
WS_EX_CONTEXTHELP = $400;
WS_EX_RIGHT = $1000;
WS_EX_RTLREADING = $2000;
WS_EX_LEFTSCROLLBAR = $4000;
- WS_EX_CONTROLPARENT = $10000;
+{ WS_EX_CONTROLPARENT = $10000; // Unsupported under WinCE. }
WS_EX_STATICEDGE = $20000;
- WS_EX_APPWINDOW = $40000;
- WS_EX_NOANIMATION = $4000000;
+{ WS_EX_APPWINDOW = $40000; // Unsupported under WinCE. }
+ WS_EX_NOANIMATION = $4000000;
WS_EX_NOACTIVATE = $8000000;
- WS_EX_INK = $10000000;
- WS_EX_ABOVESTARTUP = $20000000;
+ WS_EX_INK = $10000000;
+ WS_EX_ABOVESTARTUP = $20000000;
WS_EX_NODRAG = $40000000;
WS_EX_CAPTIONOKBTN = $80000000;
+ WS_EX_NOINHERITLAYOUT = $00100000; // Disable inheritence of mirroring by children
+ WS_EX_LAYOUTRTL = $00400000; // Right to left mirroring
+
+
{ CreateWindowStation }
WINSTA_ACCESSCLIPBOARD = $4;
WINSTA_ACCESSGLOBALATOMS = $20;
@@ -1191,13 +1224,13 @@
{STARTDOC = 10; conflicts with AbortDoc function }
cSTARTDOC = 10;
{ EscapeCommFunction }
- CLRDTR = 6; //winbase
- CLRRTS = 4; //winbase
- SETDTR = 5; //winbase
- SETRTS = 3; //winbase
- SETXOFF = 1; //winbase
- SETXON = 2; //winbase
- SETBREAK = 8; //winbase
+ CLRDTR = 6; //winbase
+ CLRRTS = 4; //winbase
+ SETDTR = 5; //winbase
+ SETRTS = 3; //winbase
+ SETXOFF = 1; //winbase
+ SETXON = 2; //winbase
+ SETBREAK = 8; //winbase
CLRBREAK = 9; //winbase
// Some CE devices share a UART between an IRDA port and a serial port.
// These escape functions allow control over the mode.
@@ -1323,6 +1356,10 @@
CP_ACP = 0;
CP_MACCP = 2;
CP_OEMCP = 1;
+ { WinCE 5.0+}
+ CP_UTF7 = 65000;
+ CP_UTF8 = 65001;
+
{ GetDateFormat }
{ already defined above !!
#define DATE_SHORTDATE (1)
@@ -1563,12 +1600,13 @@
QS_SENDMESSAGE = 64;
QS_TIMER = 16;
{ GetScrollInfo, SetScrollInfo }
- SIF_ALL = 23;
+{ SIF_ALL = 23; }
SIF_PAGE = 2;
SIF_POS = 4;
SIF_RANGE = 1;
SIF_DISABLENOSCROLL = 8;
SIF_TRACKPOS = $10;
+ SIF_ALL = SIF_RANGE or SIF_PAGE or SIF_POS or SIF_TRACKPOS;
{ GetStdHandle }
@@ -1673,7 +1711,7 @@
COLOR_STATICTEXT =26 or SYS_COLOR_INDEX_FLAG;
COLOR_GRADIENTACTIVECAPTION =27 or SYS_COLOR_INDEX_FLAG;
COLOR_GRADIENTINACTIVECAPTION =28 or SYS_COLOR_INDEX_FLAG;
- C_SYS_COLOR_TYPES =29;
+ C_SYS_COLOR_TYPES =29;
COLOR_DESKTOP =COLOR_BACKGROUND;
COLOR_3DFACE =COLOR_BTNFACE;
@@ -1831,11 +1869,11 @@
LMEM_DISCARDABLE = $0F00; //**** Ignored ****/
LMEM_VALID_FLAGS = $0F72;
LMEM_INVALID_HANDLE = $8000;
- LMEM_DDESHARE = $0000; //**** Ignored ****/
- LMEM_LOWER = $0000; //**** Ignored ****/
- LMEM_NOT_BANKED = $0000; //**** Ignored ****/
- LMEM_NOTIFY = $0000; //**** Ignored ****/
- LMEM_SHARE = $0000; //**** Ignored ****/
+ LMEM_DDESHARE = $0000; //**** Ignored ****/
+ LMEM_LOWER = $0000; //**** Ignored ****/
+ LMEM_NOT_BANKED = $0000; //**** Ignored ****/
+ LMEM_NOTIFY = $0000; //**** Ignored ****/
+ LMEM_SHARE = $0000; //**** Ignored ****/
LPTR = LMEM_FIXED or LMEM_ZEROINIT;
LHND = LMEM_MOVEABLE or LMEM_ZEROINIT;
NONZEROLHND = LMEM_MOVEABLE;
@@ -2695,13 +2733,13 @@
SH_LAST_NOTIFY = 16; // Last set notified on Thread/Process Termination
SH_GDI = 16;
SH_WMGR = 17;
- SH_WNET = 18; // WNet APIs for network redirector
+ SH_WNET = 18; // WNet APIs for network redirector
SH_COMM = 19; // Communications not "COM"
SH_FILESYS_APIS = 20; // File system APIS
SH_SHELL = 21;
SH_DEVMGR_APIS = 22; // File system device manager
- SH_TAPI = 23;
- SH_PATCHER = 24;
+ SH_TAPI = 23;
+ SH_PATCHER = 24;
SH_SERVICES = 26;
SH_LASTRESERVED = 26;
@@ -3637,20 +3675,20 @@
LPSTR_TEXTCALLBACKA = LPSTR(-(1));
- {$ifdef UNICODE}
+ {$ifdef UNICODE}
{const this is a function in fact !!
LPSTR_TEXTCALLBACK = LPSTR_TEXTCALLBACKW;}
LPSTR_TEXTCALLBACK = LPWSTR(-(1));
- {$else}
+ {$else}
- {const
- LPSTR_TEXTCALLBACK = LPSTR_TEXTCALLBACKA; }
+ {const
+ LPSTR_TEXTCALLBACK = LPSTR_TEXTCALLBACKA; }
LPSTR_TEXTCALLBACK =LPSTR(-(1));
- {$endif}
+ {$endif}
- { LV_ITEM structure }
+ { LV_ITEM structure }
const
LVIF_TEXT = 1;
@@ -5073,6 +5111,7 @@ PROCESSOR_ARM_V4TFP_INSTRUCTION PROCESSOR_ARM_V4TFP_INSTRUCTION
LB_ERRSPACE = -(2);
LB_OKAY = 0;
{ CB_DIR message }
+ CB_OKAY = 0;
CB_ERR = -(1);
CB_ERRSPACE = -(2);
{ WM_IME_CONTROL message }
@@ -5607,7 +5646,7 @@ PROCESSOR_ARM_V4TFP_INSTRUCTION PROCESSOR_ARM_V4TFP_INSTRUCTION
// The following flags control the contents of the CONTEXT structure.
//
CONTEXT_SH3 = $00000040;
- CONTEXT_SH4 = $000000c0; // CONTEXT_SH3 | 0x80 - must contain the SH3 bits
+ CONTEXT_SH4 = $000000c0; // CONTEXT_SH3 | 0x80 - must contain the SH3 bits
{$ifdef SH3}
CONTEXT_CONTROL = CONTEXT_SH3 or $00000001;
@@ -5615,7 +5654,7 @@ PROCESSOR_ARM_V4TFP_INSTRUCTION PROCESSOR_ARM_V4TFP_INSTRUCTION
CONTEXT_DEBUG_REGISTERS = CONTEXT_SH3 or $00000008;
CONTEXT_DSP_REGISTERS = CONTEXT_SH3 or $00000010;
CONTEXT_FULL = CONTEXT_CONTROL or CONTEXT_INTEGER or CONTEXT_DEBUG_REGISTERS or CONTEXT_DSP_REGISTERS;
-{$else} // SH4
+{$else} // SH4
CONTEXT_CONTROL = CONTEXT_SH4 or $00000001;
CONTEXT_INTEGER = CONTEXT_SH4 or $00000002;
CONTEXT_DEBUG_REGISTERS = CONTEXT_SH4 or $00000008;
@@ -5655,7 +5694,7 @@ PROCESSOR_ARM_V4TFP_INSTRUCTION PROCESSOR_ARM_V4TFP_INSTRUCTION
// Specific OEM extentions
- PF_ARM_INTEL_XSCALE = $80010001;
+ PF_ARM_INTEL_XSCALE = $80010001;
PF_ARM_INTEL_PMU = $80010002;
PF_ARM_INTEL_WMMX = $80010003;
diff --git a/rtl/wince/wininc/messages.inc b/rtl/wince/wininc/messages.inc
index eb260c40be..ab5269cae0 100644
--- a/rtl/wince/wininc/messages.inc
+++ b/rtl/wince/wininc/messages.inc
@@ -126,6 +126,7 @@
CB_SETLOCALE = 345;
CB_SETTOPINDEX = 348;
CB_SHOWDROPDOWN = 335;
+ CB_GETCOMBOBOXINFO = $0162;
{ Combo Box notifications }
CBN_CLOSEUP = 8;
CBN_DBLCLK = 2;
@@ -227,7 +228,8 @@
EM_STREAMIN = 1097;
EM_STREAMOUT = 1098;
EM_UNDO = 199;
- { Edit control }
+
+ { Edit control notifications }
EN_SETFOCUS =$0100;
EN_KILLFOCUS =$0200;
EN_CHANGE =$0300;
@@ -236,6 +238,9 @@
EN_MAXTEXT =$0501;
EN_HSCROLL =$0601;
EN_VSCROLL =$0602;
+ EN_ALIGN_LTR_EC = $0700;
+ EN_ALIGN_RTL_EC = $0701;
+
EN_CORRECTTEXT = 1797;
EN_DROPFILES = 1795;
diff --git a/rtl/wince/wininc/struct.inc b/rtl/wince/wininc/struct.inc
index 3a48993028..1e6da550d8 100644
--- a/rtl/wince/wininc/struct.inc
+++ b/rtl/wince/wininc/struct.inc
@@ -849,6 +849,22 @@
TCOLORMAP = COLORMAP;
PCOLORMAP = ^COLORMAP;
+{*
+ * Combo Box Structures
+ *}
+ tagCOMBOBOXINFO = record
+ cbSize:DWORD;
+ rcItem:RECT;
+ rcButton:RECT;
+ stateButton:DWORD; // Currently unsupported on CE
+ hwndCombo:HWND;
+ hwndItem:HWND;
+ hwndList:HWND;
+ end;
+ COMBOBOXINFO = tagCOMBOBOXINFO;
+ PCOMBOBOXINFO = ^tagCOMBOBOXINFO;
+ LPCOMBOBOXINFO = ^tagCOMBOBOXINFO;
+
DCB = record
DCBlength : DWORD;
BaudRate : DWORD;
@@ -7120,6 +7136,25 @@
TVSFIXEDFILEINFO = VS_FIXEDFILEINFO;
PVSFIXEDFILEINFO = ^VS_FIXEDFILEINFO;
+
+// Windows CE File API definitions copied from NT's winbase.h
+ _WIN32_FIND_DATAA =record
+ dwFileAttributes:DWORD;
+ ftCreationTime:FILETIME;
+ ftLastAccessTime:FILETIME;
+ ftLastWriteTime:FILETIME;
+ nFileSizeHigh:DWORD;
+ nFileSizeLow:DWORD;
+ dwReserved0:DWORD;
+ dwReserved1:DWORD;
+ cFileName:array[0..MAX_PATH-1] of char;
+ cAlternateFileName:array[0..13] of char;
+ end;
+ WIN32_FIND_DATAA = _WIN32_FIND_DATAA;
+ PWIN32_FIND_DATAA = ^_WIN32_FIND_DATAA;
+ LPWIN32_FIND_DATAA = ^_WIN32_FIND_DATAA;
+
+
WIN32_FIND_DATAW = record
dwFileAttributes : DWORD;
ftCreationTime : FILETIME;
@@ -7128,7 +7163,7 @@
nFileSizeHigh : DWORD;
nFileSizeLow : DWORD;
dwOID: DWORD;
- cFileName : array[0..MAX_PATH] of WCHAR;
+ cFileName : array[0..MAX_PATH-1] of WCHAR;
end;
LPWIN32_FIND_DATAW = ^WIN32_FIND_DATAW;
@@ -7625,7 +7660,7 @@ type
tagBSTRBLOB = record
cbsize : ULONG;
- pdata : pbyte;
+ pdata : pbyte;
end;
BSTRBLOB=TagBSTRBlob;
TBSTRBLOB=BSTRBLOB;
diff --git a/rtl/wince/winsock2.pp b/rtl/wince/winsock2.pp
index d3cceeb7c2..0b57326f89 100644
--- a/rtl/wince/winsock2.pp
+++ b/rtl/wince/winsock2.pp
@@ -386,6 +386,40 @@ type
PSockAddr = ^TSockAddr;
TSockAddr = TSockAddrIn;
+{*
+ * Portable socket structure (RFC 2553).
+ *}
+
+{*
+ * Desired design of maximum size and alignment.
+ * These are implementation specific.
+ *}
+const
+ _SS_MAXSIZE = 128; // Maximum size.
+ _SS_ALIGNSIZE = SizeOf(Int64); // Desired alignment.
+
+{*
+ * Definitions used for sockaddr_storage structure paddings design.
+ *}
+const
+ _SS_PAD1SIZE = _SS_ALIGNSIZE - SizeOf(SmallInt);
+ _SS_PAD2SIZE = _SS_MAXSIZE - (SizeOf(SmallInt) + _SS_PAD1SIZE + _SS_ALIGNSIZE);
+
+type
+ sockaddr_storage = record
+ ss_family:SmallInt; // Address family.
+ __ss_pad1:array[0.._SS_PAD1SIZE-1] of char; // 6 byte pad, this is to make
+ // implementation specific pad up to
+ // alignment field that follows explicit
+ // in the data structure.
+ __ss_align:Int64; // Field to force desired structure.
+ __ss_pad2:array[0.._SS_PAD2SIZE-1] of char; // 112 byte pad to achieve desired size;
+ // _SS_MAXSIZE value minus size of
+ // ss_family, __ss_pad1, and
+ // __ss_align fields is 112.
+ end;
+
+
{ Structure used by kernel to pass protocol information in raw sockets. }
PSockProto = ^TSockProto;
TSockProto = record