windows-nt/Source/XPSP1/NT/base/mvdm/meinc/vtdapi.h
2020-09-26 16:20:57 +08:00

180 lines
4.8 KiB
C

/*****************************************************************************
//;
// VTDAPI.INC
//;
// VTDAPI service equates and structures
//;
*****************************************************************************/
#define MULTIMEDIA_OEM_ID 0x0440 // MS Reserved OEM # 34
#define VTDAPI_DEVICE_ID MULTIMEDIA_OEM_ID + 2 // VTD API Device
/* VTDAPI_Get_Version
//;
// ENTRY:
// AX = 0
// ES:BX = pointer to VTDAPI_Get_Version_Parameters structure
//
// RETURNS:
// SUCCESS: AX == TRUE
// ERROR: AX == FALSE
*/
#define VTDAPI_Get_Version 0
/* VTDAPI_Begin_Min_Int_Period
//;
// ENTRY:
// AX = 1
// CX = interrupt period in ms
//
// RETURNS:
// SUCCESS: AX != 0
// ERROR: AX == 0
*/
#define VTDAPI_Begin_Min_Int_Period 1
/* VTDAPI_End_Min_Int_Period
//;
// ENTRY:
// AX = 2
// ES:BX = pointer to word interrupt period in ms
//;
// RETURNS:
// SUCCESS: AX == TIMERR_NOERROR
// ERROR: AX == TIMERR_NOCANDO
*/
#define VTDAPI_End_Min_Int_Period 2
/* VTDAPI_Get_Int_Period
//;
// ENTRY:
// AX = 3
//;
// RETURNS:
// DX:AX = current period (resolution) in ms
*/
#define VTDAPI_Get_Int_Period 3
/* VTDAPI_Get_Sys_Time
//;
// ENTRY:
// AX = 4
//;
// RETURNS:
// DX:AX = current time in ms
*/
#define VTDAPI_Get_Sys_Time 4
/* VTDAPI_Timer_Start
//;
// ENTRY:
// AX = 5
// ES:BX = pointer to VTDAPI_Timer_Parameters structure
//;
// RETURNS:
// SUCCESS: AX != 0, 16 bit timer handle
// ERROR: AX == 0
*/
#define VTDAPI_Timer_Start 5
/* VTDAPI_Timer_Stop
//;
// ENTRY:
// AX = 6
// CX = 16 bit timer handle from VTDAPI_Timer_Start
//;
// RETURNS:
// SUCCESS: AX == TIMERR_NOERROR
// ERROR: AX == TIMERR_NOCANDO, invalid timer handle
*/
#define VTDAPI_Timer_Stop 6
/* VTDAPI_Start_User_Timer
//;
// ENTRY:
// AX = 7
// ES:BX = pointer to VTDAPI_Timer_Parameters structure
//;
// RETURNS:
// SUCCESS: EAX != 0, 32 bit timer handle
// ERROR: EAX == 0
*/
#define VTDAPI_Start_User_Timer 7
/* VTDAPI_Stop_User_Timer
//;
// ENTRY:
// AX = 8
// ES:BX = pointer to 32 bit timer handle from VTDAPI_Start_User_Timer
//;
// RETURNS:
// SUCCESS: AX == 0
// ERROR: AX != 0
*/
#define VTDAPI_Stop_User_Timer 8
/* VTDAPI_Get_System_Time_Selector
//;
// ENTRY:
// AX = 9
//;
// RETURNS:
// SUCCESS: AX = R/O selector to a dword of running ms
// ERROR: AX == 0
*/
#define VTDAPI_Get_System_Time_Selector 9
/* VTDAPI_Cleanup_Timers
//;
// ENTRY:
// AX = 10
// CX = CS selector
//;
// RETURNS:
// NONE
*/
#define VTDAPI_Cleanup_Timers 10
typedef struct VTDAPI_Get_Version_Parameters {
DWORD VTDAPI_Version;
DWORD VTDAPI_Min_Period;
DWORD VTDAPI_Max_Period;
} VTDAPI_Get_Version_Parameters;
typedef struct VTDAPI_Timer_Parameters {
WORD VTDAPI_Timer_Period;
WORD VTDAPI_Timer_Resolution;
DWORD VTDAPI_Timer_IPCS;
DWORD VTDAPI_Timer_Inst;
WORD VTDAPI_Timer_Flags;
DWORD VTDAPI_Timer_Ring0_Thread; /* ;Internal */
DWORD VTDAPI_Timer_Handle; /* ;Internal */
} VTDAPI_Timer_Parameters;
#ifndef TIME_ONESHOT
#define TIME_ONESHOT 0x0000 // program timer for single event
#define TIME_PERIODIC 0x0001 // program for continuous periodic event
#endif
#define TIME_PERIODIC_BIT 0x00 /* ;Internal */
#define TIME_SYSCB 0x0002 // use windows timer events /* ;Internal */
#define TIME_EVENT_SET 0x0010 // Set event /* ;Internal */
#define TIME_EVENT_PULSE 0x0020 // Pulse event /* ;Internal */
#define TIME_APC 0x0040 // APC callback /* ;Internal */
#define TIME_VALID_FLAGS 0x0073 // Valid flags /* ;Internal */
#ifndef TIMERR_BASE
#define TIMERR_BASE 96
#define TIMERR_NOERROR 0 // no error
#define TIMERR_NOCANDO (TIMERR_BASE+1) // the operation wasn't executed
#endif
#define VTDAPI_IOCTL_Get_Version 0 /* ;Internal */
#define VTDAPI_IOCTL_Get_Resolution 1 /* ;Internal */
#define VTDAPI_IOCTL_Begin_Min_Int_Period 2 /* ;Internal */
#define VTDAPI_IOCTL_End_Min_Int_Period 3 /* ;Internal */
#define VTDAPI_IOCTL_Get_Int_Period 4 /* ;Internal */
#define VTDAPI_IOCTL_Get_Sys_Time 5 /* ;Internal */
#define VTDAPI_IOCTL_Timer_Start 6 /* ;Internal */
#define VTDAPI_IOCTL_Timer_Stop 7 /* ;Internal */
#define VTDAPI_IOCTL_Timer_Rundown 8 /* ;Internal */