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

📄 disioctl.h

📁 在嵌入式 WINCE 中实现 OSD 功能
💻 H
字号:
//------------------------------------------------------------------------------
//
// MMSP2 DirectDraw Display Driver
// Copyright (C) MagicEyes Digital Co. 2003-2004
//
// Module     : MMSP2 DirectDraw Display Driver
// File       : DISIOCTL.H
// Description: IO Control Code
// Author     : Goofy
// Export     : 
// History    : 
//    	2004/04/19 Goofy	First Release
//
//------------------------------------------------------------------------------
#ifndef __DISIOCTL_H__
#define __DISIOCTL_H__

#include <windev.h>

//------------------------------------------------------------------------------
// IO Control Codes
//------------------------------------------------------------------------------
#define FILE_DEVICE_DISPLAY	0x0000E004

// CTL_CODE( DeviceType, Function, Method, Access )
#define IOCTL_DIS_GETMODE				CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+ 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DIS_SETMODE				CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+ 2, METHOD_BUFFERED, FILE_ANY_ACCESS)

#define IOCTL_DIS_SETBRIGHTNESS			CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+ 3, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DIS_GETBRIGHTNESS			CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+ 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DIS_SETCONTRAST			CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+ 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DIS_GETCONTRAST			CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+ 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DIS_SETHUE				CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+ 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DIS_GETHUE				CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+ 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DIS_SETSATURATION			CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+ 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DIS_GETSATURATION			CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+10, METHOD_BUFFERED, FILE_ANY_ACCESS)

#define IOCTL_DIS_SETAUTOFLIP			CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+11, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DIS_SETFDCADDR			CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+12, METHOD_BUFFERED, FILE_ANY_ACCESS)	
#define IOCTL_DIS_SETFDCFORMAT			CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+13, METHOD_BUFFERED, FILE_ANY_ACCESS)	

#define IOCTL_DIS_SETRGBATOVERLAY		CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+14, METHOD_BUFFERED, FILE_ANY_ACCESS)	
#define IOCTL_DIS_SETMAINRGB			CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+15, METHOD_BUFFERED, FILE_ANY_ACCESS)	
#define IOCTL_DIS_RGBCONTROL			CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+16, METHOD_BUFFERED, FILE_ANY_ACCESS)	

#define IOCTL_DIS_SET2DACCEL			CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+17, METHOD_BUFFERED, FILE_ANY_ACCESS)	

#define IOCTL_DIS_GETMEMADDR			CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+18, METHOD_BUFFERED, FILE_ANY_ACCESS)	
#define IOCTL_DIS_SETGAMMA				CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+19, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DIS_GETGAMMA				CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+20, METHOD_BUFFERED, FILE_ANY_ACCESS)

#define IOCTL_DIS_SETALPHA				CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+21, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DIS_GETALPHA				CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+22, METHOD_BUFFERED, FILE_ANY_ACCESS)		

#define IOCTL_DIS_GET2DACCEL			CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+30, METHOD_BUFFERED, FILE_ANY_ACCESS)	
#define IOCTL_DIS_QUERYVIDEOMEMAVAIL	CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+31, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DIS_GETDRIVERINFO			CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+32, METHOD_BUFFERED, FILE_ANY_ACCESS)

#define IOCTL_DIS_SETOSDENB				CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+33, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DIS_GETOSDENB				CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+34, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DIS_SETOSDADDR			CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+35, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DIS_SETOSDPALETTE			CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+36, METHOD_BUFFERED, FILE_ANY_ACCESS)

#define IOCTL_DIS_SETSPUENB				CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+37, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DIS_GETSPUENB				CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+38, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DIS_SETSPUMODE			CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+39, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DIS_SETSPUDELAY			CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+40, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DIS_SETSPUHIGHLIGHT		CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+41, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DIS_SETSPUBASEADDRESS		CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+42, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DIS_SETSPUHIGHLIGHTADDRESS CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+43, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DIS_SETSPUPALETTE			CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+44, METHOD_BUFFERED, FILE_ANY_ACCESS)

#define IOCTL_DIS_WAITFORVBLANK			CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+45, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DIS_SETOVERLAYFUNC		CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+46, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DIS_GETVSYNCCOUNTER		CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+47, METHOD_BUFFERED, FILE_ANY_ACCESS)

#define IOCTL_DIS_OVERLAYALLOC			CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+48, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DIS_OVERLAYFREE			CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+49, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DIS_OVERLAYUPDATE			CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+50, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DIS_OVERLAYFLIP			CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+51, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DIS_OVERLAYPOSITION		CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+52, METHOD_BUFFERED, FILE_ANY_ACCESS)

#define IOCTL_DIS_VMEMALLOC				CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+53, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DIS_VMEMFREE				CTL_CODE(FILE_DEVICE_DISPLAY, 2048+4*128+54, METHOD_BUFFERED, FILE_ANY_ACCESS)

//------------------------------------------------------------------------------
// IOCTL_DIS_RGBCONTROL parameters
//------------------------------------------------------------------------------
// RGBCONTROL Flags
#define RGBCONTROLFLAG_MIXMUX		1
#define RGBCONTROLFLAG_POSITION		2
#define RGBCONTROLFLAG_ONOFF		4

// RGBCONTROL MixMux
#define RGBCONTROLMIXMUX_RGBONLY	0	// RGB Only
#define RGBCONTROLMIXMUX_COLORKEY	1	// RGB with ColorKey
#define RGBCONTROLMIXMUX_ALPHA		2	// RGB with Alpha

typedef struct tag_RGBCONTROL
{
	DWORD	Flag;
	BYTE	Region;		// 1 : available, 2, 3, 4, 5 : Reserved.
	// RGBCONTROLFLAG_MIXMUX
	BYTE	MixMux;		// RGBONLY or COLORKEY or ALPHA
	BYTE	Alpha;		// 0 ~ 15 when MixMux is ALPHA, 15 when MixMux is RGBONLY or COLORKEY
	BYTE	Reserved;
	// RGBCONTROLFLAG_POSITION
	WORD	StartX, StartY, EndX, EndY;
	// RGBCONTROLFLAG_ONOFF
	BOOL	bOn;		// TRUE : Enable
	BOOL 	bAct;		// TRUE : Activate
} RGBCONTROL, FAR* LPRGBCONTROL;


//------------------------------------------------------------------------------
// IOCTL_DIS_GETDRIVERINFO parameters
//------------------------------------------------------------------------------
typedef struct tag_GPEMMSP2DRIVERINFO
{
	DWORD dwPhysicalFrameBuffer;
	DWORD dwVirtualFrameBuffer;
	DWORD dwFrameWidth;
	DWORD dwFrameHeight;
	DWORD dwFrameBpp;
	DWORD dwFrameStride;
	DWORD dwIsInterlace;
	DWORD dw2DVirtualFrameBuffer;
	DWORD dw2DPhysicalFrameBuffer;
} GPEMMSP2DRIVERINFO, FAR* LPGPEMMSP2DRIVERINFO;


//------------------------------------------------------------------------------
// IOCTL_DIS_OVERLAYALLOC parameters
//------------------------------------------------------------------------------
typedef struct tag_OVERLAYALLOC
{
	DWORD	dwFourCC;	// The desired FourCC code
	DWORD	dwWidth;    // The desired width      
	DWORD	dwHeight;   // The desired height     
} OVERLAYALLOC, FAR* LPOVERLAYALLOC;

//------------------------------------------------------------------------------
// IOCTL_DIS_OVERLAYFREE parameters
//------------------------------------------------------------------------------
typedef struct tag_OVERLAYFREE
{
	int		iIndex;		// The Overlay index that be allocated by IOCTL_DIS_OVERLAYALLOC
} OVERLAYFREE, FAR* LPOVERLAYFREE;

//------------------------------------------------------------------------------
// IOCTL_DIS_OVERLAYUPDATE parameters
//------------------------------------------------------------------------------
typedef struct tag_OVERLAYUPDATE
{
	int		iIndex;				// The Overlay index that be allocated by IOCTL_DIS_OVERLAYALLOC
	DWORD	dwFlags;			// The flags for the overlay. See IDirectDrawSurface5::UpdateOverlay for more details.
	DWORD	dwColorKey;			// The color key for the overlay.
	DWORD	dwSurfaceAddr;		// The address of the overlay image.
	DWORD	dwSurfaceStride;	// The stride(pitch) of the overlay image.
	DWORD	dwWidth;			// The width of the overlay image.
	DWORD	dwHeight;			// The height of the overlay image.
	RECTL	rDest;				// A RECT structure that defines the position of the region that the overlay should be displayed.
	RECTL	rSrc;				// A RECT structure that defines the position of the region on the source image being used as the overlay.
} OVERLAYUPDATE, FAR* LPOVERLAYUPDATE;

//------------------------------------------------------------------------------
// IOCTL_DIS_OVERLAYFLIP parameters
//------------------------------------------------------------------------------
typedef struct tag_OVERLAYFLIP
{
	int		iIndex;				// The Overlay index that be allocated by IOCTL_DIS_OVERLAYALLOC
	DWORD	dwFlags;			// The flags for the overlay. See IDirectDrawSurface5::UpdateOverlay for more details.
	DWORD	dwSurfaceAddr;		// The address of the overlay image.
	DWORD	dwSurfaceStride;	// The stride(pitch) of the overlay image.
} OVERLAYFLIP, FAR* LPOVERLAYFLIP;

//------------------------------------------------------------------------------
// IOCTL_DIS_OVERLAYPOSITION parameters
//------------------------------------------------------------------------------
typedef struct tag_OVERLAYPOSITION
{
	int		iIndex;				// The Overlay index that be allocated by IOCTL_DIS_OVERLAYALLOC
	LONG	lXPos;				// New x position of the region that the overlay should be displayed.
	LONG	lYPos;				// New y position of the region that the overlay should be displayed.
} OVERLAYPOSITION, FAR* LPOVERLAYPOSITION;

//------------------------------------------------------------------------------
// IOCTL_DIS_VMEMALLOC/VMEMFREE parameters
//------------------------------------------------------------------------------
typedef struct tag_VIDEOMEMALLOCATOR
{
	DWORD	dwSurface;	// Used by Display Driver and should not be filled in by the App.
	DWORD	dwFourCC;	// The desired FourCC code 
	int		iWidth;		// The desired width
	int		iHeight;	// The desired height
	DWORD	dwVirAddr;	// The virtual address of memory that be allocated by Display Driver.
	DWORD	dwPhyAddr;	// The physical address of memory that be allocated by Display Driver.
} VIDEOMEMALLOCATOR, FAR* LPVIDEOMEMALLOCATOR;

#endif // __DISIOCTL_H__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -