📄 disioctl.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 + -