📄 ave2kif.h
字号:
//++
// File Name:
// ave2kif.h
//
// Contents:
// Application-driver interface stuff for AVE2K driver
//--
#ifndef _AVE2K_INTERFACE
#define _AVE2K_INTERFACE
//Define control code and it's companion data structure
//This data structures are shared by application and driver, so their alignment
//is explicitly given.
#pragma pack(push,1)
//Application gets current display parameters and passes to driver by this
//control code
#define IOCTL_DISPLAY_PARAMETER CTL_CODE( \
FILE_DEVICE_UNKNOWN, \
0X803, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
typedef struct{
ULONG Width;
ULONG Height;
ULONG Depth;
ULONG Pitch;
ULONG PhysicalAddress;
ULONG VirtualAddress;
ULONG BitCount;
}DISPLAY_PARAMETER, *PDISPLAY_PARAMETER;
//Overlay parameters are past by this control code
#define IOCTL_OVERLAY_WINDOW CTL_CODE( \
FILE_DEVICE_UNKNOWN, \
0X804, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
typedef struct{
// ULONG Channel;
ULONG Top;
ULONG Left;
ULONG Right;
ULONG Bottom;
ULONG OpenClose;
ULONG Top2;
ULONG Left2;
ULONG Right2;
ULONG Bottom2;
ULONG OpenClose2;
}OVERLAY_WINDOW, *POVERLAY_WINDOW;
typedef struct{
ULONG Channel;
ULONG Enable;
}AVE2KDATA_STREAM_CTL, *PAVE2KDATA_STREAM_CTL;
#define IOCTL_DATA_STREAM CTL_CODE( \
FILE_DEVICE_UNKNOWN, \
0X805, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
//************NOT USED
#define IOCTL_FETCH_CACHE CTL_CODE(\
FILE_DEVICE_UNKNOWN, \
0X806, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
//Clipping parameters are passed by this control code
#define IOCTL_CLIPPING CTL_CODE(\
FILE_DEVICE_UNKNOWN, \
0X807, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
//data structured associated with clipping configuration
typedef struct {
ULONG left;
ULONG top;
ULONG right;
ULONG bottom;
}AVE2KCLIPPINGRECT, *PAVE2KCLIPPINGRECT;
//#pragma warning(disable:4200)
typedef struct {
ULONG nChannel;
ULONG lNumOfRect;
AVE2KCLIPPINGRECT ClippingRect[16];
}AVE2KCLIPLIST, *PAVE2KCLIPLIST;
//#pragma warning(default:4200)
#define IOCTL_VIDEO_DATARATE CTL_CODE(\
FILE_DEVICE_UNKNOWN, \
0X808, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
typedef struct{
ULONG Channel;
ULONG DataRate;
}AVE2KDATA_RATE, *PAVE2KDATA_RATE;
#define IOCTL_AUDIO_DATARATE CTL_CODE(\
FILE_DEVICE_UNKNOWN, \
0X809, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
typedef enum{ARATE_32=1,
ARATE_48,
ARATE_56,
ARATE_64,
ARATE_80,
ARATE_96,
ARATE_112,
ARATE_128,
ARATE_160,
ARATE_192,
ARATE_224,
ARATE_256,
ARATE_320,
ARATE_384} AUDIO_DATARATE;
#define IOCTL_VIDEO_PARAMETER CTL_CODE(\
FILE_DEVICE_UNKNOWN, \
0X80a, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
typedef struct{
ULONG Channel;
ULONG Brightness;
ULONG Contrast;
ULONG Saturation;
ULONG Hue;
}AVE2K_VIDEO_PARAMETER, *PAVE2K_VIDEO_PARAMETER;
#define AVE2K_STREAM_MULTIP 0
#define AVE2K_STREAM_VIDEO 1
#define AVE2K_STREAM_AUDIO 2
#define IOCTL_STREAM_TYPE CTL_CODE(\
FILE_DEVICE_UNKNOWN, \
0X80b, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
typedef struct{
ULONG Channel;
ULONG Stream;
}AVE2K_STREAM_TYPE, *PAVE2K_STREAM_TYPE;
#define AVE2K_VIDEO_FORMAT_NONE 0
#define AVE2K_VIDEO_FORMAT_PAL 1
#define AVE2K_VIDEO_FORMAT_NTSC 2
#define IOCTL_VIDEO_FORMAT CTL_CODE(\
FILE_DEVICE_UNKNOWN, \
0X80c, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define AVE2K_VIDEO_SRC_CVBS 0
#define AVE2K_VIDEO_SRC_SVIDEO 1
#define IOCTL_VIDEO_SOURCE CTL_CODE(\
FILE_DEVICE_UNKNOWN, \
0X80d, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
typedef struct{
ULONG Channel;
ULONG Source;
}AVE2K_VIDEO_SOURCE, *PAVE2K_VIDEO_SOURCE;
#define IOCTL_BOARD_INFO CTL_CODE(\
FILE_DEVICE_UNKNOWN, \
0X80e, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
typedef struct{
ULONG Double;
ULONG Reserved;
ULONG VolumeAbility;
ULONG VideoSourceSelect;
ULONG SerialsNo;
}AVE2K_BOARD_INFO, *PAVE2K_BOARD_INFO;
#define IOCTL_VOLUME CTL_CODE(\
FILE_DEVICE_UNKNOWN, \
0X80f, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
typedef struct{
ULONG Channel;
ULONG Volume;
}AVE2K_VOLUME, *PAVE2K_VOLUME;
typedef struct{
ULONG Channel;
ULONG Volume;
ULONG Target;//Mic or Line
}AVE2K_VOLUME_V, *PAVE2K_VOLUME_V;
typedef struct{
ULONG PacketLost;
ULONG OutOfSync;
ULONG VideoPacket;
ULONG AudioPacket;
ULONG StuffPacket;
ULONG UnknownPacket;
}AVE2K_STATISTICS, *PAVE2K_STATISTICS;
#define IOCTL_STATISTICS CTL_CODE(\
FILE_DEVICE_UNKNOWN, \
0X810, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define FRMRATE_FULL 0
#define FRMRATE_9_10 1
#define FRMRATE_4_5 2
#define FRMRATE_3_4 3
#define FRMRATE_2_3 4
#define FRMRATE_1_2 5
#define IOCTL_OVERLAY_FRMRATE CTL_CODE(\
FILE_DEVICE_UNKNOWN, \
0X811, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define EXSTAT_LOADFAIL 0x01
#define EXSTAT_STATFAIL 0x02
#define EXSTAT_RUNFAIL 0x04
#define EXSTAT_DATAERROR 0x08
#define EXSTAT_COMPSTOP 0x10
#define EXSTAT_ENDFAIL 0x20
#define EXSTAT_DMA 0x40
#define EXSTAT_SHIFT 0x80
#define IOCTL_GET_ERROR CTL_CODE(\
FILE_DEVICE_UNKNOWN, \
0X812, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_RESET CTL_CODE(\
FILE_DEVICE_UNKNOWN, \
0X813, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
typedef struct{
int nChannel;
int nWidth;
int nHeight;
int nFormat;
}AVE2K_BITMAP_PARA, *PAVE2K_BITMAP_PARA;
#define IOCTL_CAPTURE_BITMAP CTL_CODE(\
FILE_DEVICE_UNKNOWN, \
0X814, \
METHOD_IN_DIRECT, \
FILE_ANY_ACCESS)
typedef struct {
int bWrite;
int nOffset;
int nLength;
UCHAR Buf[224];
}AVE2K_USERINFO, *PAVE2K_USERINFO;
#define IOCTL_USER_INFO CTL_CODE(\
FILE_DEVICE_UNKNOWN, \
0X815, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define AVE2K_AUDIO_SRC_LINE 0
#define AVE2K_AUDIO_SRC_MIC 1
typedef struct{
ULONG Channel;
ULONG Source;
}AVE2K_AUDIO_SOURCE, *PAVE2K_AUDIO_SOURCE;
#define IOCTL_AUDIO_SOURCE CTL_CODE(\
FILE_DEVICE_UNKNOWN, \
0X816, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
typedef struct{
ULONG Channel;
ULONG Enable;
}AVE2K_AUDIO_MONITOR, *PAVE2K_AUDIO_MONITOR;
#define IOCTL_AUDIO_MONITOR CTL_CODE(\
FILE_DEVICE_UNKNOWN, \
0X817, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
typedef struct{
ULONG Channel;
ULONG Config;
}AVE2K_ALARM_CONFIG, *PAVE2K_ALARM_CONFIG;
#define AVE2K_ALARMCFG_NO 0
#define AVE2K_ALARMCFG_NC 1
#define AVE2K_ALM_STATUS_NORMAL 0
#define AVE2K_ALM_STATUS_DETECTED 1
#define AVE2K_ALM_STATUS_BAD 2
#define IOCTL_ALARM_INTERFACE CTL_CODE(\
FILE_DEVICE_UNKNOWN, \
0X818, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
typedef struct{
ULONG Channel;
ULONG OnFrame;
ULONG OffFrame;
}AVE2K_COMPRESS_FRMRATE, *PAVE2K_COMPRESS_FRMRATE;
#define IOCTL_COMPRESS_FRMRATE CTL_CODE(\
FILE_DEVICE_UNKNOWN, \
0X819, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
//**********NOT USED
typedef struct{
ULONG Channel;
ULONG Gain;
}AVE2K_VIDEO_GAIN, *PAVE2K_VIDEO_GAIN;
#define IOCTL_VIDEO_GAIN CTL_CODE(\
FILE_DEVICE_UNKNOWN, \
0X81A, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
typedef struct{
ULONG Channel;
ULONG Enable;
PULONG Logo;
int XPos;
int YPos;
}AVE2K_LOGO, *PAVE2K_LOGO;
#define IOCTL_LOGO CTL_CODE(\
FILE_DEVICE_UNKNOWN, \
0X81B, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
//!!! code 0x81C MUST be reserved
typedef struct{
int bWrite;
ULONG Port;
ULONG Byte;
}AVE2K_PORT, *PAVE2K_PORT;
#define IOCTL_PORT_ACCESS CTL_CODE(\
FILE_DEVICE_UNKNOWN, \
0X81D, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_ALARM_OUTPUT CTL_CODE(\
FILE_DEVICE_UNKNOWN, \
0X81E, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_FRMADJ_MODE2 CTL_CODE(\
FILE_DEVICE_UNKNOWN, \
0X81F, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
typedef struct{
int nMode;
UCHAR Name[8];
PUCHAR pHanLib;
}AVE2K_OSD, *PAVE2K_OSD;
#define AVE2K_OSD_BMP 0x80000000
#define AVE2K_OSD_OWN 0x40000000
#define AVE2K_OSD_LEFT 0x20000000
#define AVE2K_OSD_TOP 0x10000000
#define AVE2K_OSD_BORDER 0x08000000
#define IOCTL_DATE_OSD CTL_CODE(\
FILE_DEVICE_UNKNOWN, \
0X820, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
typedef struct{
BOOLEAN bEnable;
int nLeft;
int nTop;
int nRight;
int nBottom;
}AVE2K_MASK_WINDOW, *PAVE2K_MASK_WINDOW;
#define IOCTL_MASK_WINDOW CTL_CODE(\
FILE_DEVICE_UNKNOWN, \
0X821, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_DETECT_AUDIO CTL_CODE(\
FILE_DEVICE_UNKNOWN, \
0X822, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
//Added on 02-12-23 to append VBR policy by wjq
//Related variables in pDE:bVBR, nVBRQuality
#define IOCTL_VIDEO_VBR CTL_CODE(\
FILE_DEVICE_UNKNOWN, \
0X823, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_VIDEO_ENABLEVBR CTL_CODE(\
FILE_DEVICE_UNKNOWN, \
0X824, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#pragma pack(pop)
#endif // _AVE2K_INTERFACE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -