⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ave2kif.h

📁 driver wdk
💻 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 + -