summaryrefslogtreecommitdiff
path: root/packages/os2units/src/mcidrv.pas
diff options
context:
space:
mode:
Diffstat (limited to 'packages/os2units/src/mcidrv.pas')
-rw-r--r--packages/os2units/src/mcidrv.pas358
1 files changed, 358 insertions, 0 deletions
diff --git a/packages/os2units/src/mcidrv.pas b/packages/os2units/src/mcidrv.pas
new file mode 100644
index 0000000000..8dae915bff
--- /dev/null
+++ b/packages/os2units/src/mcidrv.pas
@@ -0,0 +1,358 @@
+{
+ Copyright (c) 1991, 1992 by International Business Machines Corporation
+ Copyright (c) 2002 by Andry Svirgunov (cool2@ngs.ru)
+ Copyright (c) 2002-2003 by Yuri Prokushev (prokushev@freemail.ru)
+
+ MCI drivers interface
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Library General Public License (LGPL) as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version. 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.
+
+ See the GNU Library General Public License for more details. You should
+ have received a copy of the GNU Library General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ **********************************************************************}
+
+{
+@abstract(MCI drivers interface)
+@author(Andry Svirgunov (cool2@ngs.ru))
+@author(Yuri Prokushev (prokushev@freemail.ru))
+@created(01 Oct 2002)
+@lastmod(19 Jan 2003)
+MCI drivers interface
+Warning: This code is alfa. Future versions of this unit will propably
+not be compatible.
+}
+Unit mcidrv;
+
+Interface
+
+Type
+ GID=Integer;
+
+///**************************************************************************/
+// MCI Driver message identifiers */
+///**************************************************************************/
+const
+ MCIDRV_SAVE = 900;
+ MCIDRV_RESTORE = 901;
+ MCIDRV_SYNC = 902;
+ MCIDRV_CHANGERESOURCE = 903;
+ MCIDRV_CONNECT = 904;
+ MCIDRV_ASSOCIATE = 905;
+ MCIDRV_DISCONNECT = 906;
+ MCIDRV_TEST_CONNECTION = 907;
+ MCIDRV_START = 908;
+ MCIDRV_SEEK = 909;
+ MCIDRV_STOP = 910;
+ MCIDRV_MODIFY_CONNECTION = 911;
+ MCIDRV_INIT_CONNECTION = 912;
+ MCIDRV_DEINIT_CONNECTION = 913;
+ MCIDRV_ENABLE_EVENT = 915;
+ MCIDRV_GETTIME = 917;
+
+///*******************************************************************/
+// The following messages are used by the MCIDRV_CONNECT message */
+///*******************************************************************/
+
+ MCIDRV_CONNECT_TARGET = $00010000;
+ MCIDRV_CONNECT_SOURCE = $00020000;
+ MCIDRV_SET_CONNNECTOR_TYPE = $00040000;
+ MCIDRV_CHANGE_SEM = $00080000;
+
+///*******************************************************************/
+// The following messages are used by MCIDRV_MODIFY_CONNECTION */
+///*******************************************************************/
+
+
+ MCIDRV_MODIFY_10 =$00100000; // back level MCI driver.
+ MCIDRV_MIX_STANDALONE =$00200000;
+
+
+///*******************************************************************/
+// The following messages are used by MCIDRV_START */
+///*******************************************************************/
+
+ MCIDRV_CUE_PLAYBACK = $00010000;
+ MCIDRV_CUE_RECORD = $00020000;
+ MCIDRV_START_PLAYBACK = $00040000;
+ MCIDRV_START_RECORD = $00080000;
+ MCIDRV_START_PREROLL = $00100000;
+
+///*******************************************************************/
+// The following messages are used by MCIDRV_ASSOCIATE */
+///*******************************************************************/
+
+ MCIDRV_OUTPUT = $00010000;
+ MCIDRV_INPUT = $00020000;
+
+///*******************************************************************/
+// The following messages are used by MCIDRV_STOP */
+///*******************************************************************/
+
+ MCIDRV_PAUSE_STREAM_NETWORK = $00010000;
+ MCIDRV_FLUSH_STREAM_NETWORK = $00020000;
+ MCIDRV_DISCARD_STREAM_NETWORK = $00040000;
+
+///*******************************************************************/
+// The following messages are used by MCIDRV_DEINIT_CONNECTION */
+///*******************************************************************/
+
+ MCIDRV_MODIFY_HANDLER =$00010000;
+
+
+
+///*******************************************************************/
+// The following range of message ID's are reserved for internal use */
+// by MCI drivers */
+///*******************************************************************/
+ MCI_INTERNAL_MESSAGES_START = 1000;
+ MCI_INTERNAL_MESSAGES_END = 1999;
+
+///*******************************************************************/
+// Flags used by the string parser for command tables */
+// NOTE: All flags must have an "L" suffix in order to be parsed as */
+// DWORDs by the resource compiler */
+///*******************************************************************/
+ MCI_COMMAND_HEAD = $00000001;
+ MCI_END_COMMAND = $00000002;
+ MCI_END_COMMAND_LIST = $00000003;
+ MCI_RETURN = $00000004;
+ MCI_STRING = $00000005;
+ MCI_FLAG = $00000006;
+ MCI_INTEGER = $00000007;
+ MCI_CONSTANT = $00000008;
+ MCI_CONSTANT_INTEGER = $00000009;
+ MCI_CONSTANT_STRING = $0000000A;
+ MCI_END_CONSTANT = $0000000B;
+ MCI_DEFAULT_STRING = $0000000C;
+ MCI_DEFAULT_INTEGER = $0000000D;
+ MCI_RETURN_TYPE = $0000000E;
+ MCI_RETURN_TYPE_STRING = $0000000F;
+ MCI_END_RETURN_TYPE = $00000010;
+ MCI_CONSTANT_2 = $00000011;
+ MCI_END_CONSTANT_2 = $00000012;
+ MCI_CONSTANT_PAIR = $00000013;
+ MCI_END_CONSTANT_PAIR = $00000014;
+ MCI_CONSTANT_INTEGER_PAIR = $00000015;
+ MCI_CONSTANT_STRING_PAIR = $00000016;
+ MCI_RECTL = $00000017;
+ MCI_CONSTANT_4 = $00000018;
+ MCI_END_CONSTANT_4 = $00000019;
+ MCI_FOURCC = $0000001A;
+ MCI_OR = $0000001B;
+ MCI_END_OR = $0000001C;
+ MCI_STRING_LIST = $0000001D;
+
+///*******************************************************************/
+// Return types supported by mciSendString */
+// Values 0x0000 -> 0xFF00 are reserved by MMPM2 */
+// Values 0xFF01 -> 0xFFFF are user definable */
+///*******************************************************************/
+ MCI_INTEGER_RETURNED = $1000;
+ MCI_COLONIZED2_RETURN = $2000;
+ MCI_COLONIZED3_RETURN = $3000;
+ MCI_COLONIZED4_RETURN = $4000;
+ MCI_TRUE_FALSE_RETURN = $5000;
+ MCI_ON_OFF_RETURN = $6000;
+ MCI_DEVICENAME_RETURN = $7000;
+ MCI_TIME_FORMAT_RETURN = $8000;
+ MCI_SPEED_FORMAT_RETURN = $9000;
+ MCI_MODE_RETURN = $A000;
+ MCI_MEDIA_TYPE_RETURN = $B000;
+ MCI_TRACK_TYPE_RETURN = $C000;
+ MCI_CONNECTOR_TYPE_RETURN = $D000;
+ MCI_CDXA_CHANNEL_DESTINATION_RETURN = $E000;
+ MCI_PREROLL_TYPE_RETURN = $F000;
+ MCI_FORMAT_TAG_RETURN = $F100;
+ MCI_SEQ_SYNCHRONIZATION_RETURN = $F200;
+ MCI_VIDEO_QUALITY_RETURN = $F300;
+ MCI_AUDIO_QUALITY_RETURN = $F400;
+ MCI_IMAGE_QUALITY_RETURN = $F500;
+ MCI_VIDEO_COMPRESSION_RETURN = $F600;
+ MCI_AUDIO_COMPRESSION_RETURN = $F700;
+ MCI_IMAGE_COMPRESSION_RETURN = $F800;
+ MCI_RECTL_RETURN = $F900;
+ MCI_FOURCC_RETURN = $FA00;
+ MCI_IMAGE_PELFORMAT_RETURN = $FB00;
+ MCI_DIRECTION_RETURN = $FC00;
+ MCI_SIGNED_INTEGER_RETURN = $FD00;
+
+ MCI_USER_RETURN = $FF01;
+///*******************************************************************/
+// End of msg text used by mciGetErrorString */
+///*******************************************************************/
+ MCIERR_BASE = 5000;
+ MCIERR_MSG_TABLE_END = MCIERR_BASE + 7000;
+
+///*******************************************************************/
+// */
+// MCI DEVICE shareability categories */
+// */
+///*******************************************************************/
+ FIXEDSINGLECONTEXT = $0001;
+ DYNAMICSINGLECONTEXT = $0002;
+ LIMITEDMULTIPLECONTEXT = $0003;
+ UNLIMITEDMULTIPLECONTEXT = $0004;
+
+///*******************************************************************/
+// MCI driver flag for close during exit list processing */
+///*******************************************************************/
+ MCI_CLOSE_EXIT = $10000000;
+
+///*******************************************************************/
+// MCI driver specific error table resource number base */
+///*******************************************************************/
+ MMERROR_TABLE_BASE = 500;
+
+///*******************************************************************/
+// */
+// MCIDRV_CHANGERESOURCE message flags */
+// */
+///*******************************************************************/
+
+Type
+ mciDrv_ChangeResource_Parms = record
+ pInstance : Pointer; // pointer to device instance
+ usResourceUnits : Integer; // required resource units
+ usResourceClass : Integer; // resource class
+ usResourcePriority : Integer; // resource priority
+ end;
+ pmciDrv_ChangeResource_Parms = ^mciDrv_ChangeResource_Parms;
+
+///*******************************************************************/
+// */
+// MCIDRV_ENABLE_EVENT message flags */
+// */
+///*******************************************************************/
+
+Type
+ HSTREAM=LongInt;
+ hID=LongInt;
+ hEvent = LongInt; // Event Handle
+ phEvent = ^hEvent; // Pointer to Event Handle
+ HWND = LongInt;
+ MMTIME = LongInt;
+Type
+ evcb = record
+ ulType : LongInt; // Event type (input)
+ ulSubType : LongInt; // Event SubType (input)
+ ulFlags : LongInt; // 0 (Input), status (Output)
+ hstream : HSTREAM; // handle to stream for this event
+ hid : hID; // handler Id (input/output)
+ ulStatus : LongInt; // Event status (output)
+ ulEventParm1 : LongInt; // Event parameters (input), hID if implicit event
+ ulEventParm2 : LongInt; // Event parameters (input)
+ ulEventParm3 : LongInt; // Event parameters (input)
+ end;
+ pevcb = ^evcb;
+
+Type
+ MCIDRV_EVENT_PARMS = record
+ ulLength:LongInt; // Length of event parms */
+ pevcb:PEVCB; // pointer to event control block */
+ phevent:PHEVENT; // pointer to the event to enable in network */
+ end;
+ PMCIDRV_EVENT_PARMS=^MCIDRV_EVENT_PARMS;
+
+///*******************************************************************/
+// */
+// MCIDRV_SYNC message flags */
+// */
+///*******************************************************************/
+Const
+ MCIDRV_SYNC_ENABLE = $00000100;
+ MCIDRV_SYNC_DISABLE = $00000200;
+ MCIDRV_SYNC_REC_PULSE = $00000400;
+ MCIDRV_SYNC_MASTER = $00000800;
+ MCIDRV_SYNC_SET_MASTER = $00001000;
+
+Type
+ sync_evcb = record
+ ulType : LongInt; // Event_SYNC
+ ulSubType : LongInt; // Not used
+ ulSyncFlags : LongInt; // 0 (input),status (output)
+ hstream : HStream; // handle to stream for this event
+ hid : hID; // Handler id
+ ulStatus : LongInt; // Event status (output)
+ mmtimeStart : mmTime; // Filled in by Sync/Stream manager
+ // at SpiEnableSync time. (input)
+ mmtimeMaster : mmTime; // Filled in by Master SH (input)
+ mmtimeSlave : mmTime; // Filled in by slave SH. (output)
+ end;
+ pSync_evcb = ^sync_Evcb;
+
+Type
+ mciDrv_Sync_Parms = record
+ hStreams : ^hStream; // Pointer to list of stream IDs
+ ulNumStreams : LongInt; // number of stream IDs
+ mmTime : mmTime; // Sync Pulse Time
+ NonStreamMaster : Boolean; // TRUE if this device can be master
+ pevcbSyncPulse : pSync_evcb; // pointer to EVCB address (output)
+ hidMaster : hID; // Master NULL sh ID (valid only on
+ // MCIDRV_SYNC_MASTER
+ ulReserved1 : LongInt; // Reserved field
+ ulReserved2 : LongInt; // Reserved field
+ end;
+ pmciDrv_Sync_Parms = ^mciDrv_Sync_Parms;
+
+
+//*******************************************************************/
+// contains information for open message for MCI drivers */
+//*******************************************************************/
+Type
+ mmDrv_Open_Parms = record
+ hwndCallback : hwnd; // call back handle
+ usDeviceID : Integer; // The device ID assigned to this instance
+ usDeviceType : Integer; // The device type number
+ usDeviceOrd : Integer; // The device ordinal number
+ pInstance : Pointer; // pointer to the instance structure allocated
+ // initialized by the driver. The MCI driver
+ // will fill in this parameter.
+ szDevDLLName : Array[0..259] of Char; // Character string containing the device
+ // specific DLL name to call for the open.
+ // (ie. ACPA.DLL)
+ pszElementName : pChar; // typically a file name or NULL
+ usDevParmLen : Integer; // Device parameters data block length.
+ pDevParm : Pointer; // Device parameters data block. This data
+ // block is unique to each type of device.
+ // (ie. LVD "COM1 9600 N 7 1").
+ Reserved0 : Pointer;
+ usResourceUnitsRequired : Integer; // number of resource units this instance
+ // requires.
+ usResourceClass : Integer; // resource class this instance belongs to
+ usResourcePriority : Integer; // resource priority for this instance
+ ulParam2 : LongInt; // Pointer to MCI_OPEN structure
+ end;
+ pmmDrv_Open_Parms = ^mmDrv_Open_Parms;
+
+
+///*******************************************************************/
+// */
+// MCIDRV_RESTORE message flags */
+// */
+///*******************************************************************/
+
+Type
+ MCIDRV_RESTORE_PARMS = record
+ ulLength:longint; // Length of restore parms */
+ ulMasterVolume:longint; // Master volume value */
+ end;
+ PMCIDRV_RESTORE_PARMS=^MCIDRV_RESTORE_PARMS;
+
+function mdmDriverNotify( usDeviceID: Integer; wnd: Hwnd; usMsgType: Integer;
+ usUserParm: Integer; ulMsgParm: LongInt): LongInt; cdecl;
+
+Implementation
+
+function mdmDriverNotify( usDeviceID: Integer; wnd: Hwnd; usMsgType: Integer;
+ usUserParm: Integer; ulMsgParm: LongInt): LongInt; cdecl; external 'MDM' index 17;
+
+End.