📄 winddi.h
字号:
/* * winddi.h * * GDI device driver interface * * This file is part of the w32api package. * * Contributors: * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> * * THIS SOFTWARE IS NOT COPYRIGHTED * * This source code is offered for use in the public domain. You may * use, modify or distribute it freely. * * This code is distributed in the hope that it will be useful but * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY * DISCLAIMED. This includes but is not limited to warranties of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * */#ifndef __WINDDI_H#define __WINDDI_H#if __GNUC__ >=3#pragma GCC system_header#endif#ifdef __VIDEO_H#error video.h cannot be included with winddi.h#else#ifdef __cplusplusextern "C" {#endif#include "ntddk.h"#include <wingdi.h>#ifndef __DD_INCLUDED__/* FIXME: Some DirectDraw structures not added yet */typedef ULONG_PTR FLATPTR;typedef struct _DD_SURFACECALLBACKS {} DD_SURFACECALLBACKS, *PDD_SURFACECALLBACKS;typedef struct _DD_PALETTECALLBACKS {} DD_PALETTECALLBACKS, *PDD_PALETTECALLBACKS;typedef struct _DD_CALLBACKS {} DD_CALLBACKS, *PDD_CALLBACKS;typedef struct _DD_HALINFO {} DD_HALINFO, *PDD_HALINFO;typedef struct _VIDEOMEMORY {} VIDEOMEMORY, *LPVIDEOMEMORY;typedef struct _DD_DIRECTDRAW_GLOBAL {} DD_DIRECTDRAW_GLOBAL, *LPDD_DIRECTDRAW_GLOBAL;typedef struct _DD_SURFACE_LOCAL {} DD_SURFACE_LOCAL, *PDD_SURFACE_LOCAL, *LPDD_SURFACE_LOCAL;#endif#ifndef __DDRAWI_INCLUDED__typedef PVOID LPVIDMEM;#endif#if !defined(__DD_INCLUDED__) && !defined(__DDRAWI_INCLUDED__)typedef struct _DDSCAPS {} DDSCAPS, *PDDSCAPS;typedef struct _DDSCAPSEX {} DDSCAPSEX, *PDDSCAPSEX;typedef PVOID LPVMEMHEAP;#endif#if defined(_WIN32K_)#define WIN32KAPI DECL_EXPORT#else#define WIN32KAPI DECL_IMPORT#endif#define DDI_DRIVER_VERSION_NT4 0x00020000#define DDI_DRIVER_VERSION_SP3 0x00020003#define DDI_DRIVER_VERSION_NT5 0x00030000#define DDI_DRIVER_VERSION_NT5_01 0x00030100#define GDI_DRIVER_VERSION 0x4000#ifdef _X86_typedef DWORD FLOATL;#else /* !_X86_ */typedef FLOAT FLOATL;#endiftypedef SHORT FWORD;typedef LONG LDECI4;typedef ULONG IDENT;typedef ULONG_PTR HFF;typedef ULONG_PTR HFC;typedef LONG PTRDIFF;typedef PTRDIFF *PPTRDIFF;typedef LONG FIX;typedef FIX *PFIX;typedef ULONG ROP4;typedef ULONG MIX;typedef ULONG HGLYPH;typedef HGLYPH *PHGLYPH;typedef LONG_PTR (DDKAPI *PFN)();DECLARE_HANDLE(HBM);DECLARE_HANDLE(HDEV);DECLARE_HANDLE(HSURF);DECLARE_HANDLE(DHSURF);DECLARE_HANDLE(DHPDEV);DECLARE_HANDLE(HDRVOBJ);#define GDI_DRIVER_VERSION 0x4000typedef struct _ENG_EVENT *PEVENT;#define OPENGL_CMD 4352#define OPENGL_GETINFO 4353#define WNDOBJ_SETUP 4354#define FD_ERROR 0xFFFFFFFF#define DDI_ERROR 0xFFFFFFFF#define HFF_INVALID ((HFF) 0)#define HFC_INVALID ((HFC) 0)#define HGLYPH_INVALID ((HGLYPH) -1)#define FP_ALTERNATEMODE 1#define FP_WINDINGMODE 2#define DN_ACCELERATION_LEVEL 1#define DN_DEVICE_ORIGIN 2#define DN_SLEEP_MODE 3#define DN_DRAWING_BEGIN 4#define DCR_SOLID 0#define DCR_DRIVER 1#define DCR_HALFTONE 2#define GX_IDENTITY 0#define GX_OFFSET 1#define GX_SCALE 2#define GX_GENERAL 3typedef struct _POINTE { FLOATL x; FLOATL y;} POINTE, *PPOINTE;typedef union _FLOAT_LONG { FLOATL e; LONG l;} FLOAT_LONG, *PFLOAT_LONG;typedef struct _POINTFIX { FIX x; FIX y;} POINTFIX, *PPOINTFIX;typedef struct _RECTFX { FIX xLeft; FIX yTop; FIX xRight; FIX yBottom;} RECTFX, *PRECTFX;typedef struct _POINTQF { LARGE_INTEGER x; LARGE_INTEGER y;} POINTQF, *PPOINTQF;typedef struct _BLENDOBJ { BLENDFUNCTION BlendFunction;} BLENDOBJ,*PBLENDOBJ;/* BRUSHOBJ.flColorType */#define BR_DEVICE_ICM 0x01#define BR_HOST_ICM 0x02#define BR_CMYKCOLOR 0x04#define BR_ORIGCOLOR 0x08typedef struct _BRUSHOBJ { ULONG iSolidColor; PVOID pvRbrush; FLONG flColorType;} BRUSHOBJ;typedef struct _CIECHROMA { LDECI4 x; LDECI4 y; LDECI4 Y;} CIECHROMA;typedef struct _RUN { LONG iStart; LONG iStop;} RUN, *PRUN;typedef struct _CLIPLINE { POINTFIX ptfxA; POINTFIX ptfxB; LONG lStyleState; ULONG c; RUN arun[1];} CLIPLINE, *PCLIPLINE;/* CLIPOBJ.iDComplexity constants */#define DC_TRIVIAL 0#define DC_RECT 1#define DC_COMPLEX 3/* CLIPOBJ.iFComplexity constants */#define FC_RECT 1#define FC_RECT4 2#define FC_COMPLEX 3/* CLIPOBJ.iMode constants */#define TC_RECTANGLES 0#define TC_PATHOBJ 2/* CLIPOBJ.fjOptions constants */#define OC_BANK_CLIP 1typedef struct _CLIPOBJ { ULONG iUniq; RECTL rclBounds; BYTE iDComplexity; BYTE iFComplexity; BYTE iMode; BYTE fjOptions;} CLIPOBJ;typedef struct _COLORINFO { CIECHROMA Red; CIECHROMA Green; CIECHROMA Blue; CIECHROMA Cyan; CIECHROMA Magenta; CIECHROMA Yellow; CIECHROMA AlignmentWhite; LDECI4 RedGamma; LDECI4 GreenGamma; LDECI4 BlueGamma; LDECI4 MagentaInCyanDye; LDECI4 YellowInCyanDye; LDECI4 CyanInMagentaDye; LDECI4 YellowInMagentaDye; LDECI4 CyanInYellowDye; LDECI4 MagentaInYellowDye;} COLORINFO, *PCOLORINFO;/* DEVHTADJDATA.DeviceFlags constants */#define DEVHTADJF_COLOR_DEVICE 0x00000001#define DEVHTADJF_ADDITIVE_DEVICE 0x00000002typedef struct _DEVHTINFO { DWORD HTFlags; DWORD HTPatternSize; DWORD DevPelsDPI; COLORINFO ColorInfo;} DEVHTINFO, *PDEVHTINFO;typedef struct _DEVHTADJDATA { DWORD DeviceFlags; DWORD DeviceXDPI; DWORD DeviceYDPI; PDEVHTINFO pDefHTInfo; PDEVHTINFO pAdjHTInfo;} DEVHTADJDATA, *PDEVHTADJDATA;/* DEVINFO.flGraphicsCaps flags */#define GCAPS_BEZIERS 0x00000001#define GCAPS_GEOMETRICWIDE 0x00000002#define GCAPS_ALTERNATEFILL 0x00000004#define GCAPS_WINDINGFILL 0x00000008#define GCAPS_HALFTONE 0x00000010#define GCAPS_COLOR_DITHER 0x00000020#define GCAPS_HORIZSTRIKE 0x00000040#define GCAPS_VERTSTRIKE 0x00000080#define GCAPS_OPAQUERECT 0x00000100#define GCAPS_VECTORFONT 0x00000200#define GCAPS_MONO_DITHER 0x00000400#define GCAPS_ASYNCCHANGE 0x00000800#define GCAPS_ASYNCMOVE 0x00001000#define GCAPS_DONTJOURNAL 0x00002000#define GCAPS_DIRECTDRAW 0x00004000#define GCAPS_ARBRUSHOPAQUE 0x00008000#define GCAPS_PANNING 0x00010000#define GCAPS_HIGHRESTEXT 0x00040000#define GCAPS_PALMANAGED 0x00080000#define GCAPS_DITHERONREALIZE 0x00200000#define GCAPS_NO64BITMEMACCESS 0x00400000#define GCAPS_FORCEDITHER 0x00800000#define GCAPS_GRAY16 0x01000000#define GCAPS_ICM 0x02000000#define GCAPS_CMYKCOLOR 0x04000000#define GCAPS_LAYERED 0x08000000#define GCAPS_ARBRUSHTEXT 0x10000000#define GCAPS_SCREENPRECISION 0x20000000#define GCAPS_FONT_RASTERIZER 0x40000000#define GCAPS_NUP 0x80000000/* DEVINFO.iDitherFormat constants */#define BMF_1BPP 1L#define BMF_4BPP 2L#define BMF_8BPP 3L#define BMF_16BPP 4L#define BMF_24BPP 5L#define BMF_32BPP 6L#define BMF_4RLE 7L#define BMF_8RLE 8L#define BMF_JPEG 9L#define BMF_PNG 10L/* DEVINFO.flGraphicsCaps2 flags */#define GCAPS2_JPEGSRC 0x00000001#define GCAPS2_xxxx 0x00000002#define GCAPS2_PNGSRC 0x00000008#define GCAPS2_CHANGEGAMMARAMP 0x00000010#define GCAPS2_ALPHACURSOR 0x00000020#define GCAPS2_SYNCFLUSH 0x00000040#define GCAPS2_SYNCTIMER 0x00000080#define GCAPS2_ICD_MULTIMON 0x00000100#define GCAPS2_MOUSETRAILS 0x00000200#define GCAPS2_RESERVED1 0x00000400typedef struct _DEVINFO { FLONG flGraphicsCaps; LOGFONTW lfDefaultFont; LOGFONTW lfAnsiVarFont; LOGFONTW lfAnsiFixFont; ULONG cFonts; ULONG iDitherFormat; USHORT cxDither; USHORT cyDither; HPALETTE hpalDefault; FLONG flGraphicsCaps2;} DEVINFO, *PDEVINFO;typedef struct _DRIVEROBJ *PDRIVEROBJ;typedef BOOL DDKAPI CALLBACK(*FREEOBJPROC)( /*IN*/ PDRIVEROBJ pDriverObj);typedef struct _DRIVEROBJ { PVOID pvObj; FREEOBJPROC pFreeProc; HDEV hdev; DHPDEV dhpdev;} DRIVEROBJ;/* DRVFN.iFunc constants */#define INDEX_DrvEnablePDEV 0L#define INDEX_DrvCompletePDEV 1L#define INDEX_DrvDisablePDEV 2L#define INDEX_DrvEnableSurface 3L#define INDEX_DrvDisableSurface 4L#define INDEX_DrvAssertMode 5L#define INDEX_DrvOffset 6L#define INDEX_DrvResetPDEV 7L#define INDEX_DrvDisableDriver 8L#define INDEX_DrvCreateDeviceBitmap 10L#define INDEX_DrvDeleteDeviceBitmap 11L#define INDEX_DrvRealizeBrush 12L#define INDEX_DrvDitherColor 13L#define INDEX_DrvStrokePath 14L#define INDEX_DrvFillPath 15L#define INDEX_DrvStrokeAndFillPath 16L#define INDEX_DrvPaint 17L#define INDEX_DrvBitBlt 18L#define INDEX_DrvCopyBits 19L#define INDEX_DrvStretchBlt 20L#define INDEX_DrvSetPalette 22L#define INDEX_DrvTextOut 23L#define INDEX_DrvEscape 24L#define INDEX_DrvDrawEscape 25L#define INDEX_DrvQueryFont 26L#define INDEX_DrvQueryFontTree 27L#define INDEX_DrvQueryFontData 28L#define INDEX_DrvSetPointerShape 29L#define INDEX_DrvMovePointer 30L#define INDEX_DrvLineTo 31L#define INDEX_DrvSendPage 32L#define INDEX_DrvStartPage 33L#define INDEX_DrvEndDoc 34L#define INDEX_DrvStartDoc 35L#define INDEX_DrvGetGlyphMode 37L#define INDEX_DrvSynchronize 38L#define INDEX_DrvSaveScreenBits 40L#define INDEX_DrvGetModes 41L#define INDEX_DrvFree 42L#define INDEX_DrvDestroyFont 43L#define INDEX_DrvQueryFontCaps 44L#define INDEX_DrvLoadFontFile 45L#define INDEX_DrvUnloadFontFile 46L#define INDEX_DrvFontManagement 47L#define INDEX_DrvQueryTrueTypeTable 48L#define INDEX_DrvQueryTrueTypeOutline 49L#define INDEX_DrvGetTrueTypeFile 50L#define INDEX_DrvQueryFontFile 51L#define INDEX_DrvMovePanning 52L#define INDEX_DrvQueryAdvanceWidths 53L#define INDEX_DrvSetPixelFormat 54L#define INDEX_DrvDescribePixelFormat 55L#define INDEX_DrvSwapBuffers 56L#define INDEX_DrvStartBanding 57L#define INDEX_DrvNextBand 58L#define INDEX_DrvGetDirectDrawInfo 59L#define INDEX_DrvEnableDirectDraw 60L#define INDEX_DrvDisableDirectDraw 61L#define INDEX_DrvQuerySpoolType 62L#define INDEX_DrvIcmCreateColorTransform 64L#define INDEX_DrvIcmDeleteColorTransform 65L#define INDEX_DrvIcmCheckBitmapBits 66L#define INDEX_DrvIcmSetDeviceGammaRamp 67L#define INDEX_DrvGradientFill 68L#define INDEX_DrvStretchBltROP 69L#define INDEX_DrvPlgBlt 70L#define INDEX_DrvAlphaBlend 71L#define INDEX_DrvSynthesizeFont 72L#define INDEX_DrvGetSynthesizedFontFiles 73L#define INDEX_DrvTransparentBlt 74L#define INDEX_DrvQueryPerBandInfo 75L#define INDEX_DrvQueryDeviceSupport 76L#define INDEX_DrvReserved1 77L#define INDEX_DrvReserved2 78L#define INDEX_DrvReserved3 79L#define INDEX_DrvReserved4 80L#define INDEX_DrvReserved5 81L#define INDEX_DrvReserved6 82L#define INDEX_DrvReserved7 83L#define INDEX_DrvReserved8 84L#define INDEX_DrvDeriveSurface 85L#define INDEX_DrvQueryGlyphAttrs 86L#define INDEX_DrvNotify 87L#define INDEX_DrvSynchronizeSurface 88L#define INDEX_DrvResetDevice 89L#define INDEX_DrvReserved9 90L#define INDEX_DrvReserved10 91L#define INDEX_DrvReserved11 92L#define INDEX_LAST 93Ltypedef struct _DRVFN { ULONG iFunc; PFN pfn;} DRVFN, *PDRVFN;/* DRVENABLEDATA.iDriverVersion constants */#define DDI_DRIVER_VERSION_NT4 0x00020000#define DDI_DRIVER_VERSION_SP3 0x00020003#define DDI_DRIVER_VERSION_NT5 0x00030000#define DDI_DRIVER_VERSION_NT5_01 0x00030100typedef struct _DRVENABLEDATA { ULONG iDriverVersion; ULONG c; DRVFN *pdrvfn;} DRVENABLEDATA, *PDRVENABLEDATA;DECLARE_HANDLE(HSEMAPHORE);typedef struct { DWORD nSize; HDC hdc; PBYTE pvEMF; PBYTE pvCurrentRecord;} EMFINFO, *PEMFINFO;typedef struct _ENGSAFESEMAPHORE { HSEMAPHORE hsem; LONG lCount;} ENGSAFESEMAPHORE;typedef struct _ENG_TIME_FIELDS { USHORT usYear; USHORT usMonth; USHORT usDay; USHORT usHour; USHORT usMinute; USHORT usSecond; USHORT usMilliseconds; USHORT usWeekday;} ENG_TIME_FIELDS, *PENG_TIME_FIELDS;typedef struct _ENUMRECTS { ULONG c; RECTL arcl[1];} ENUMRECTS;typedef struct _FD_XFORM { FLOATL eXX; FLOATL eXY; FLOATL eYX; FLOATL eYY;} FD_XFORM, *PFD_XFORM;/* FD_DEVICEMETRICS.flRealizedType constants */#define FDM_TYPE_BM_SIDE_CONST 0x00000001#define FDM_TYPE_MAXEXT_EQUAL_BM_SIDE 0x00000002#define FDM_TYPE_CHAR_INC_EQUAL_BM_BASE 0x00000004#define FDM_TYPE_ZERO_BEARINGS 0x00000008#define FDM_TYPE_CONST_BEARINGS 0x00000010typedef struct _FD_DEVICEMETRICS { FLONG flRealizedType; POINTE pteBase; POINTE pteSide; LONG lD; FIX fxMaxAscender; FIX fxMaxDescender; POINTL ptlUnderline1; POINTL ptlStrikeout; POINTL ptlULThickness; POINTL ptlSOThickness; ULONG cxMax; ULONG cyMax; ULONG cjGlyphMax; FD_XFORM fdxQuantized; LONG lNonLinearExtLeading; LONG lNonLinearIntLeading; LONG lNonLinearMaxCharWidth; LONG lNonLinearAvgCharWidth; LONG lMinA; LONG lMinC; LONG lMinD; LONG alReserved[1];} FD_DEVICEMETRICS, *PFD_DEVICEMETRICS;/* FD_GLYPHATTR.iMode constants */#define FO_ATTR_MODE_ROTATE 1typedef struct _FD_GLYPHATTR { ULONG cjThis; ULONG cGlyphs; ULONG iMode; BYTE aGlyphAttr[1];} FD_GLYPHATTR, *PFD_GLYPHATTR;/* FD_GLYPHSET.flAccel */#define GS_UNICODE_HANDLES 0x00000001#define GS_8BIT_HANDLES 0x00000002#define GS_16BIT_HANDLES 0x00000004typedef struct _WCRUN { WCHAR wcLow; USHORT cGlyphs; HGLYPH *phg;} WCRUN, *PWCRUN;typedef struct _FD_GLYPHSET { ULONG cjThis; FLONG flAccel; ULONG cGlyphsSupported; ULONG cRuns; WCRUN awcrun[1];} FD_GLYPHSET, *PFD_GLYPHSET;typedef struct _FD_KERNINGPAIR { WCHAR wcFirst; WCHAR wcSecond; FWORD fwdKern;} FD_KERNINGPAIR;typedef struct _FLOATOBJ{ ULONG ul1; ULONG ul2;} FLOATOBJ, *PFLOATOBJ;typedef struct _FLOATOBJ_XFORM { FLOATOBJ eM11; FLOATOBJ eM12; FLOATOBJ eM21; FLOATOBJ eM22; FLOATOBJ eDx; FLOATOBJ eDy;} FLOATOBJ_XFORM, *PFLOATOBJ_XFORM, FAR *LPFLOATOBJ_XFORM;/* FONTDIFF.fsSelection */#define FM_SEL_ITALIC 0x0001#define FM_SEL_UNDERSCORE 0x0002#define FM_SEL_NEGATIVE 0x0004#define FM_SEL_OUTLINED 0x0008#define FM_SEL_STRIKEOUT 0x0010#define FM_SEL_BOLD 0x0020#define FM_SEL_REGULAR 0x0040typedef struct _FONTDIFF { BYTE jReserved1; BYTE jReserved2; BYTE jReserved3; BYTE bWeight; USHORT usWinWeight; FSHORT fsSelection; FWORD fwdAveCharWidth; FWORD fwdMaxCharInc; POINTL ptlCaret;} FONTDIFF;typedef struct _FONTSIM { PTRDIFF dpBold; PTRDIFF dpItalic; PTRDIFF dpBoldItalic;} FONTSIM;/* FONTINFO.flCaps constants */#define FO_DEVICE_FONT 1L#define FO_OUTLINE_CAPABLE 2Ltypedef struct _FONTINFO { ULONG cjThis; FLONG flCaps; ULONG cGlyphsSupported; ULONG cjMaxGlyph1; ULONG cjMaxGlyph4; ULONG cjMaxGlyph8; ULONG cjMaxGlyph32;} FONTINFO, *PFONTINFO;/* FONTOBJ.flFontType constants */#define FO_TYPE_RASTER RASTER_FONTTYPE#define FO_TYPE_DEVICE DEVICE_FONTTYPE#define FO_TYPE_TRUETYPE TRUETYPE_FONTTYPE#define FO_TYPE_OPENTYPE OPENTYPE_FONTTYPE#define FO_SIM_BOLD 0x00002000
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -