windows-nt/Source/XPSP1/NT/multimedia/media/inc/mcihand.h
2020-09-26 16:20:57 +08:00

132 lines
3.7 KiB
C

/*
mcihand.h
This file defines the constants, structures and APIs used
to implement the MCI handler interface.
6/17/91 NigelT
*/
#ifndef MCIHAND_H
#define MCIHAND_H
//
// Define the name of a handler entry point
//
#define MCI_HANDLER_PROC_NAME "DriverProc"
//
// Typedef the entry routine for a driver
//
typedef LONG (HANDLERPROC)(DWORD dwId, UINT msg, LONG lp1, LONG lp2);
typedef HANDLERPROC *LPHANDLERPROC;
//
// Define the messages sent to a handler which are generic to the
// handler rather than a specific device handled by it.
//
#define MCI_OPEN_HANDLER 0x0001
#define MCI_CLOSE_HANDLER 0x0002
#define MCI_QUERY_CONFIGURE 0x0003
#define MCI_CONFIGURE 0x0004
//
// Define the device specific messages sent to the handlers
//
#define MCI_OPEN_DEVICE 0x0800
#define MCI_CLOSE_DEVICE 0x0801
/*
// #ifndef MAKEMCIRESOURCE
// #define MAKEMCIRESOURCE(wRet, wRes) MAKELONG((wRet), (wRes))
// #endif
*/
//
// Define the return code for happy campers
// This is returned in response to driver messages which succeed
//
#define MCI_SUCCESS 0x00000000
//
// String return values only used with MAKEMCIRESOURCE
//
#define MCI_FORMAT_RETURN_BASE MCI_FORMAT_MILLISECONDS_S
#define MCI_FORMAT_MILLISECONDS_S (MCI_STRING_OFFSET + 21)
#define MCI_FORMAT_HMS_S (MCI_STRING_OFFSET + 22)
#define MCI_FORMAT_MSF_S (MCI_STRING_OFFSET + 23)
#define MCI_FORMAT_FRAMES_S (MCI_STRING_OFFSET + 24)
#define MCI_FORMAT_SMPTE_24_S (MCI_STRING_OFFSET + 25)
#define MCI_FORMAT_SMPTE_25_S (MCI_STRING_OFFSET + 26)
#define MCI_FORMAT_SMPTE_30_S (MCI_STRING_OFFSET + 27)
#define MCI_FORMAT_SMPTE_30DROP_S (MCI_STRING_OFFSET + 28)
#define MCI_FORMAT_BYTES_S (MCI_STRING_OFFSET + 29)
#define MCI_FORMAT_SAMPLES_S (MCI_STRING_OFFSET + 30)
#define MCI_FORMAT_TMSF_S (MCI_STRING_OFFSET + 31)
#define WAVE_FORMAT_PCM_S (MCI_WAVE_OFFSET + 0)
#define WAVE_MAPPER_S (MCI_WAVE_OFFSET + 1)
#define MIDIMAPPER_S (MCI_SEQ_OFFSET + 11)
//
// Parameters for internal version of MCI_OPEN message sent from
// mciOpenDevice to the handler. The wCustomCommandTable field is
// set by the driver. It is set to MCI_TABLE_NOT_PRESENT if there
// is no table. The wType field is also set by the driver.
//
typedef struct {
LPSTR lpstrParams; // parameter string for entry in ini file
DWORD wDeviceID; // device ID
UINT wCustomCommandTable; // custom command table
UINT wType; // driver type
} MCI_OPEN_HANDLER_PARMS;
typedef MCI_OPEN_HANDLER_PARMS FAR * LPMCI_OPEN_HANDLER_PARMS;
//
// The maximum length of an MCI device type
//
#define MCI_MAX_DEVICE_TYPE_LENGTH 80
//
// Flags for mciSendCommandInternal which direct mciSendString how to
// interpret the return value
//
#define MCI_RESOURCE_RETURNED 0x00010000 // resource ID
#define MCI_COLONIZED3_RETURN 0x00020000 // colonized ID, 3 bytes data
#define MCI_COLONIZED4_RETURN 0x00040000 // colonized ID, 4 bytes data
#define MCI_INTEGER_RETURNED 0x00080000 // Integer conversion needed
#define MCI_RESOURCE_DRIVER 0x00100000 // driver owns returned resource
//
// Command table information type tags
//
#define MCI_TABLE_NOT_PRESENT (-1)
#define MCI_CUSTOM_TABLE 0
#define MCI_COMMAND_HEAD 0
#define MCI_STRING 1
#define MCI_INTEGER 2
#define MCI_END_COMMAND 3
#define MCI_RETURN 4
#define MCI_FLAG 5
#define MCI_END_COMMAND_LIST 6
#define MCI_RECT 7
#define MCI_CONSTANT 8
#define MCI_END_CONSTANT 9
#endif /* MCIHAND_H */