Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenwinddi.h
Go to the documentation of this file.
00001 /* 00002 * winddi.h 00003 * 00004 * GDI device driver interface 00005 * 00006 * This file is part of the w32api package. 00007 * 00008 * Contributors: 00009 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> 00010 * Annotations by Timo Kreuzer <timo.kreuzer@reactos.org> 00011 * 00012 * THIS SOFTWARE IS NOT COPYRIGHTED 00013 * 00014 * This source code is offered for use in the public domain. You may 00015 * use, modify or distribute it freely. 00016 * 00017 * This code is distributed in the hope that it will be useful but 00018 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 00019 * DISCLAIMED. This includes but is not limited to warranties of 00020 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00021 * 00022 */ 00023 00024 #ifndef _WINDDI_ 00025 #define _WINDDI_ 00026 #pragma once 00027 00028 #ifdef __VIDEO_H__ 00029 #error video.h cannot be included with winddi.h 00030 #else 00031 00032 #include <ddrawint.h> 00033 #include <d3dnthal.h> 00034 #include <specstrings.h> 00035 00036 #ifdef __cplusplus 00037 extern "C" { 00038 #endif 00039 00040 #ifndef DECLSPEC_IMPORT 00041 #define DECLSPEC_IMPORT __attribute__((dllimport)) 00042 #endif 00043 00044 #ifndef WIN32KAPI 00045 #define WIN32KAPI DECLSPEC_ADDRSAFE 00046 #endif 00047 00048 #define DDI_DRIVER_VERSION_NT4 0x00020000 00049 #define DDI_DRIVER_VERSION_SP3 0x00020003 00050 #define DDI_DRIVER_VERSION_NT5 0x00030000 00051 #define DDI_DRIVER_VERSION_NT5_01 0x00030100 00052 #define DDI_DRIVER_VERSION_NT5_01_SP1 0x00030101 00053 00054 #define GDI_DRIVER_VERSION 0x4000 00055 00056 #if defined(_X86_) && !defined(USERMODE_DRIVER) && !defined(BUILD_WOW6432) 00057 typedef DWORD FLOATL; 00058 #else 00059 typedef FLOAT FLOATL; 00060 #endif 00061 00062 typedef SHORT FWORD; 00063 typedef LONG LDECI4; 00064 typedef ULONG IDENT; 00065 00066 typedef ULONG_PTR HFF; 00067 typedef ULONG_PTR HFC; 00068 00069 typedef LONG PTRDIFF; 00070 typedef PTRDIFF *PPTRDIFF; 00071 typedef LONG FIX; 00072 typedef FIX *PFIX; 00073 typedef ULONG ROP4; 00074 typedef ULONG MIX; 00075 typedef ULONG HGLYPH; 00076 typedef HGLYPH *PHGLYPH; 00077 00078 typedef LONG_PTR (APIENTRY *PFN)(); 00079 00080 DECLARE_HANDLE(HBM); 00081 DECLARE_HANDLE(HDEV); 00082 DECLARE_HANDLE(HSURF); 00083 DECLARE_HANDLE(DHSURF); 00084 DECLARE_HANDLE(DHPDEV); 00085 DECLARE_HANDLE(HDRVOBJ); 00086 00087 #ifndef _NTDDVDEO_ 00088 typedef struct _ENG_EVENT *PEVENT; 00089 #endif 00090 00091 #define OPENGL_CMD 4352 00092 #define OPENGL_GETINFO 4353 00093 #define WNDOBJ_SETUP 4354 00094 00095 #define FD_ERROR 0xFFFFFFFF 00096 #define DDI_ERROR 0xFFFFFFFF 00097 00098 #define HFF_INVALID ((HFF) 0) 00099 #define HFC_INVALID ((HFC) 0) 00100 #define HGLYPH_INVALID ((HGLYPH) -1) 00101 00102 #define FP_ALTERNATEMODE 1 00103 #define FP_WINDINGMODE 2 00104 00105 #define DN_ACCELERATION_LEVEL 1 00106 #define DN_DEVICE_ORIGIN 2 00107 #define DN_SLEEP_MODE 3 00108 #define DN_DRAWING_BEGIN 4 00109 00110 #define DCR_SOLID 0 00111 #define DCR_DRIVER 1 00112 #define DCR_HALFTONE 2 00113 00114 #define GX_IDENTITY 0 00115 #define GX_OFFSET 1 00116 #define GX_SCALE 2 00117 #define GX_GENERAL 3 00118 00119 #define LTOFX(x) ((x) << 4) 00120 #define FXTOL(x) ((x) >> 4) 00121 #define FXTOLFLOOR(x) ((x) >> 4) 00122 #define FXTOLCEILING(x) ((x + 0x0F) >> 4) 00123 #define FXTOLROUND(x) ((((x) >> 3) + 1) >> 1) 00124 00125 typedef struct _POINTE { 00126 FLOATL x; 00127 FLOATL y; 00128 } POINTE, *PPOINTE; 00129 00130 typedef union _FLOAT_LONG { 00131 FLOATL e; 00132 LONG l; 00133 } FLOAT_LONG, *PFLOAT_LONG; 00134 00135 typedef struct _POINTFIX { 00136 FIX x; 00137 FIX y; 00138 } POINTFIX, *PPOINTFIX; 00139 00140 typedef struct _RECTFX { 00141 FIX xLeft; 00142 FIX yTop; 00143 FIX xRight; 00144 FIX yBottom; 00145 } RECTFX, *PRECTFX; 00146 00147 typedef struct _POINTQF { 00148 LARGE_INTEGER x; 00149 LARGE_INTEGER y; 00150 } POINTQF, *PPOINTQF; 00151 00152 00153 typedef struct _BLENDOBJ { 00154 BLENDFUNCTION BlendFunction; 00155 } BLENDOBJ,*PBLENDOBJ; 00156 00157 /* BRUSHOBJ.flColorType */ 00158 #define BR_DEVICE_ICM 0x01 00159 #define BR_HOST_ICM 0x02 00160 #define BR_CMYKCOLOR 0x04 00161 #define BR_ORIGCOLOR 0x08 00162 00163 typedef struct _BRUSHOBJ { 00164 ULONG iSolidColor; 00165 PVOID pvRbrush; 00166 FLONG flColorType; 00167 } BRUSHOBJ; 00168 00169 typedef struct _CIECHROMA { 00170 LDECI4 x; 00171 LDECI4 y; 00172 LDECI4 Y; 00173 } CIECHROMA; 00174 00175 typedef struct _RUN { 00176 LONG iStart; 00177 LONG iStop; 00178 } RUN, *PRUN; 00179 00180 typedef struct _CLIPLINE { 00181 POINTFIX ptfxA; 00182 POINTFIX ptfxB; 00183 LONG lStyleState; 00184 ULONG c; 00185 _Field_size_(c) RUN arun[1]; 00186 } CLIPLINE, *PCLIPLINE; 00187 00188 /* CLIPOBJ.iDComplexity constants */ 00189 #define DC_TRIVIAL 0 00190 #define DC_RECT 1 00191 #define DC_COMPLEX 3 00192 00193 /* CLIPOBJ.iFComplexity constants */ 00194 #define FC_RECT 1 00195 #define FC_RECT4 2 00196 #define FC_COMPLEX 3 00197 00198 /* CLIPOBJ.iMode constants */ 00199 #define TC_RECTANGLES 0 00200 #define TC_PATHOBJ 2 00201 00202 /* CLIPOBJ.fjOptions constants */ 00203 #define OC_BANK_CLIP 1 00204 00205 typedef struct _CLIPOBJ { 00206 ULONG iUniq; 00207 RECTL rclBounds; 00208 BYTE iDComplexity; 00209 BYTE iFComplexity; 00210 BYTE iMode; 00211 BYTE fjOptions; 00212 } CLIPOBJ; 00213 00214 typedef struct _COLORINFO { 00215 CIECHROMA Red; 00216 CIECHROMA Green; 00217 CIECHROMA Blue; 00218 CIECHROMA Cyan; 00219 CIECHROMA Magenta; 00220 CIECHROMA Yellow; 00221 CIECHROMA AlignmentWhite; 00222 LDECI4 RedGamma; 00223 LDECI4 GreenGamma; 00224 LDECI4 BlueGamma; 00225 LDECI4 MagentaInCyanDye; 00226 LDECI4 YellowInCyanDye; 00227 LDECI4 CyanInMagentaDye; 00228 LDECI4 YellowInMagentaDye; 00229 LDECI4 CyanInYellowDye; 00230 LDECI4 MagentaInYellowDye; 00231 } COLORINFO, *PCOLORINFO; 00232 00233 /* DEVHTADJDATA.DeviceFlags constants */ 00234 #define DEVHTADJF_COLOR_DEVICE 0x00000001 00235 #define DEVHTADJF_ADDITIVE_DEVICE 0x00000002 00236 00237 typedef struct _DEVHTINFO { 00238 DWORD HTFlags; 00239 DWORD HTPatternSize; 00240 DWORD DevPelsDPI; 00241 COLORINFO ColorInfo; 00242 } DEVHTINFO, *PDEVHTINFO; 00243 00244 typedef struct _DEVHTADJDATA { 00245 DWORD DeviceFlags; 00246 DWORD DeviceXDPI; 00247 DWORD DeviceYDPI; 00248 PDEVHTINFO pDefHTInfo; 00249 PDEVHTINFO pAdjHTInfo; 00250 } DEVHTADJDATA, *PDEVHTADJDATA; 00251 00252 /* DEVINFO.flGraphicsCaps flags */ 00253 #define GCAPS_BEZIERS 0x00000001 00254 #define GCAPS_GEOMETRICWIDE 0x00000002 00255 #define GCAPS_ALTERNATEFILL 0x00000004 00256 #define GCAPS_WINDINGFILL 0x00000008 00257 #define GCAPS_HALFTONE 0x00000010 00258 #define GCAPS_COLOR_DITHER 0x00000020 00259 #define GCAPS_HORIZSTRIKE 0x00000040 00260 #define GCAPS_VERTSTRIKE 0x00000080 00261 #define GCAPS_OPAQUERECT 0x00000100 00262 #define GCAPS_VECTORFONT 0x00000200 00263 #define GCAPS_MONO_DITHER 0x00000400 00264 #define GCAPS_ASYNCCHANGE 0x00000800 00265 #define GCAPS_ASYNCMOVE 0x00001000 00266 #define GCAPS_DONTJOURNAL 0x00002000 00267 #define GCAPS_DIRECTDRAW 0x00004000 00268 #define GCAPS_ARBRUSHOPAQUE 0x00008000 00269 #define GCAPS_PANNING 0x00010000 00270 #define GCAPS_HIGHRESTEXT 0x00040000 00271 #define GCAPS_PALMANAGED 0x00080000 00272 #define GCAPS_DITHERONREALIZE 0x00200000 00273 #define GCAPS_NO64BITMEMACCESS 0x00400000 00274 #define GCAPS_FORCEDITHER 0x00800000 00275 #define GCAPS_GRAY16 0x01000000 00276 #define GCAPS_ICM 0x02000000 00277 #define GCAPS_CMYKCOLOR 0x04000000 00278 #define GCAPS_LAYERED 0x08000000 00279 #define GCAPS_ARBRUSHTEXT 0x10000000 00280 #define GCAPS_SCREENPRECISION 0x20000000 00281 #define GCAPS_FONT_RASTERIZER 0x40000000 00282 #define GCAPS_NUP 0x80000000 00283 00284 /* DEVINFO.iDitherFormat constants */ 00285 #define BMF_1BPP 1L 00286 #define BMF_4BPP 2L 00287 #define BMF_8BPP 3L 00288 #define BMF_16BPP 4L 00289 #define BMF_24BPP 5L 00290 #define BMF_32BPP 6L 00291 #define BMF_4RLE 7L 00292 #define BMF_8RLE 8L 00293 #define BMF_JPEG 9L 00294 #define BMF_PNG 10L 00295 00296 /* DEVINFO.flGraphicsCaps2 flags */ 00297 #define GCAPS2_JPEGSRC 0x00000001 00298 #define GCAPS2_xxxx 0x00000002 00299 #define GCAPS2_PNGSRC 0x00000008 00300 #define GCAPS2_CHANGEGAMMARAMP 0x00000010 00301 #define GCAPS2_ALPHACURSOR 0x00000020 00302 #define GCAPS2_SYNCFLUSH 0x00000040 00303 #define GCAPS2_SYNCTIMER 0x00000080 00304 #define GCAPS2_ICD_MULTIMON 0x00000100 00305 #define GCAPS2_MOUSETRAILS 0x00000200 00306 #define GCAPS2_RESERVED1 0x00000400 00307 00308 typedef struct _DEVINFO { 00309 FLONG flGraphicsCaps; 00310 LOGFONTW lfDefaultFont; 00311 LOGFONTW lfAnsiVarFont; 00312 LOGFONTW lfAnsiFixFont; 00313 ULONG cFonts; 00314 ULONG iDitherFormat; 00315 USHORT cxDither; 00316 USHORT cyDither; 00317 HPALETTE hpalDefault; 00318 FLONG flGraphicsCaps2; 00319 } DEVINFO, *PDEVINFO; 00320 00321 struct _DRIVEROBJ; 00322 00323 typedef BOOL 00324 (APIENTRY CALLBACK *FREEOBJPROC)( 00325 _In_ struct _DRIVEROBJ *pDriverObj); 00326 00327 typedef struct _DRIVEROBJ { 00328 PVOID pvObj; 00329 FREEOBJPROC pFreeProc; 00330 HDEV hdev; 00331 DHPDEV dhpdev; 00332 } DRIVEROBJ; 00333 00334 /* DRVFN.iFunc constants */ 00335 #define INDEX_DrvEnablePDEV 0L 00336 #define INDEX_DrvCompletePDEV 1L 00337 #define INDEX_DrvDisablePDEV 2L 00338 #define INDEX_DrvEnableSurface 3L 00339 #define INDEX_DrvDisableSurface 4L 00340 #define INDEX_DrvAssertMode 5L 00341 #define INDEX_DrvOffset 6L 00342 #define INDEX_DrvResetPDEV 7L 00343 #define INDEX_DrvDisableDriver 8L 00344 #define INDEX_DrvUnknown1 9L 00345 #define INDEX_DrvCreateDeviceBitmap 10L 00346 #define INDEX_DrvDeleteDeviceBitmap 11L 00347 #define INDEX_DrvRealizeBrush 12L 00348 #define INDEX_DrvDitherColor 13L 00349 #define INDEX_DrvStrokePath 14L 00350 #define INDEX_DrvFillPath 15L 00351 #define INDEX_DrvStrokeAndFillPath 16L 00352 #define INDEX_DrvPaint 17L 00353 #define INDEX_DrvBitBlt 18L 00354 #define INDEX_DrvCopyBits 19L 00355 #define INDEX_DrvStretchBlt 20L 00356 #define INDEX_DrvUnknown2 21L 00357 #define INDEX_DrvSetPalette 22L 00358 #define INDEX_DrvTextOut 23L 00359 #define INDEX_DrvEscape 24L 00360 #define INDEX_DrvDrawEscape 25L 00361 #define INDEX_DrvQueryFont 26L 00362 #define INDEX_DrvQueryFontTree 27L 00363 #define INDEX_DrvQueryFontData 28L 00364 #define INDEX_DrvSetPointerShape 29L 00365 #define INDEX_DrvMovePointer 30L 00366 #define INDEX_DrvLineTo 31L 00367 #define INDEX_DrvSendPage 32L 00368 #define INDEX_DrvStartPage 33L 00369 #define INDEX_DrvEndDoc 34L 00370 #define INDEX_DrvStartDoc 35L 00371 #define INDEX_DrvUnknown3 36L 00372 #define INDEX_DrvGetGlyphMode 37L 00373 #define INDEX_DrvSynchronize 38L 00374 #define INDEX_DrvUnknown4 39L 00375 #define INDEX_DrvSaveScreenBits 40L 00376 #define INDEX_DrvGetModes 41L 00377 #define INDEX_DrvFree 42L 00378 #define INDEX_DrvDestroyFont 43L 00379 #define INDEX_DrvQueryFontCaps 44L 00380 #define INDEX_DrvLoadFontFile 45L 00381 #define INDEX_DrvUnloadFontFile 46L 00382 #define INDEX_DrvFontManagement 47L 00383 #define INDEX_DrvQueryTrueTypeTable 48L 00384 #define INDEX_DrvQueryTrueTypeOutline 49L 00385 #define INDEX_DrvGetTrueTypeFile 50L 00386 #define INDEX_DrvQueryFontFile 51L 00387 #define INDEX_DrvMovePanning 52L 00388 #define INDEX_DrvQueryAdvanceWidths 53L 00389 #define INDEX_DrvSetPixelFormat 54L 00390 #define INDEX_DrvDescribePixelFormat 55L 00391 #define INDEX_DrvSwapBuffers 56L 00392 #define INDEX_DrvStartBanding 57L 00393 #define INDEX_DrvNextBand 58L 00394 #define INDEX_DrvGetDirectDrawInfo 59L 00395 #define INDEX_DrvEnableDirectDraw 60L 00396 #define INDEX_DrvDisableDirectDraw 61L 00397 #define INDEX_DrvQuerySpoolType 62L 00398 #define INDEX_DrvUnknown5 63L 00399 #define INDEX_DrvIcmCreateColorTransform 64L 00400 #define INDEX_DrvIcmDeleteColorTransform 65L 00401 #define INDEX_DrvIcmCheckBitmapBits 66L 00402 #define INDEX_DrvIcmSetDeviceGammaRamp 67L 00403 #define INDEX_DrvGradientFill 68L 00404 #define INDEX_DrvStretchBltROP 69L 00405 #define INDEX_DrvPlgBlt 70L 00406 #define INDEX_DrvAlphaBlend 71L 00407 #define INDEX_DrvSynthesizeFont 72L 00408 #define INDEX_DrvGetSynthesizedFontFiles 73L 00409 #define INDEX_DrvTransparentBlt 74L 00410 #define INDEX_DrvQueryPerBandInfo 75L 00411 #define INDEX_DrvQueryDeviceSupport 76L 00412 #define INDEX_DrvReserved1 77L 00413 #define INDEX_DrvReserved2 78L 00414 #define INDEX_DrvReserved3 79L 00415 #define INDEX_DrvReserved4 80L 00416 #define INDEX_DrvReserved5 81L 00417 #define INDEX_DrvReserved6 82L 00418 #define INDEX_DrvReserved7 83L 00419 #define INDEX_DrvReserved8 84L 00420 #define INDEX_DrvDeriveSurface 85L 00421 #define INDEX_DrvQueryGlyphAttrs 86L 00422 #define INDEX_DrvNotify 87L 00423 #define INDEX_DrvSynchronizeSurface 88L 00424 #define INDEX_DrvResetDevice 89L 00425 #define INDEX_DrvReserved9 90L 00426 #define INDEX_DrvReserved10 91L 00427 #define INDEX_DrvReserved11 92L 00428 #if (NTDDI_VERSION >= NTDDI_VISTA) 00429 #define INDEX_DrvRenderHint 93L 00430 #if (NTDDI_VERSION >= NTDDI_WIN7) 00431 #define INDEX_DrvCreateDeviceBitmapEx 94L 00432 #define INDEX_DrvDeleteDeviceBitmapEx 95L 00433 #define INDEX_DrvAssociateSharedSurface 96L 00434 #define INDEX_DrvSynchronizeRedirectionBitmaps 97L 00435 #define INDEX_DrvAccumulateD3DDirtyRect 98L 00436 #define INDEX_DrvStartDxInterop 99L 00437 #define INDEX_DrvEndDxInterop 100L 00438 #define INDEX_DrvLockDisplayArea 101L 00439 #define INDEX_DrvUnlockDisplayArea 102L 00440 #define INDEX_LAST 103L 00441 #else /* (NTDDI_VERSION >= NTDDI_WIN7) */ 00442 #define INDEX_LAST 94L 00443 #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */ 00444 #else /* (NTDDI_VERSION >= NTDDI_VISTA) */ 00445 #define INDEX_LAST 93L 00446 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ 00447 00448 typedef struct _DRVFN { 00449 ULONG iFunc; 00450 PFN pfn; 00451 } DRVFN, *PDRVFN; 00452 00453 /* DRVENABLEDATA.iDriverVersion constants */ 00454 #define DDI_DRIVER_VERSION_NT4 0x00020000 00455 #define DDI_DRIVER_VERSION_SP3 0x00020003 00456 #define DDI_DRIVER_VERSION_NT5 0x00030000 00457 #define DDI_DRIVER_VERSION_NT5_01 0x00030100 00458 #define DDI_DRIVER_VERSION_NT5_01_SP1 0x00030101 00459 00460 typedef struct _DRVENABLEDATA { 00461 ULONG iDriverVersion; 00462 ULONG c; 00463 DRVFN *pdrvfn; 00464 } DRVENABLEDATA, *PDRVENABLEDATA; 00465 00466 DECLARE_HANDLE(HSEMAPHORE); 00467 00468 typedef struct { 00469 DWORD nSize; 00470 HDC hdc; 00471 PBYTE pvEMF; 00472 PBYTE pvCurrentRecord; 00473 } EMFINFO, *PEMFINFO; 00474 00475 typedef struct _ENGSAFESEMAPHORE { 00476 HSEMAPHORE hsem; 00477 LONG lCount; 00478 } ENGSAFESEMAPHORE; 00479 00480 typedef struct _ENG_TIME_FIELDS { 00481 _Field_range_(1601,MAXUSHORT) USHORT usYear; 00482 _Field_range_(1,12) USHORT usMonth; 00483 _Field_range_(1,31) USHORT usDay; 00484 _Field_range_(0,23) USHORT usHour; 00485 _Field_range_(0,59) USHORT usMinute; 00486 _Field_range_(0,59) USHORT usSecond; 00487 _Field_range_(0,999) USHORT usMilliseconds; 00488 _Field_range_(0,6) USHORT usWeekday; // 0 == Sunday 00489 } ENG_TIME_FIELDS, *PENG_TIME_FIELDS; 00490 00491 typedef struct _ENUMRECTS { 00492 ULONG c; 00493 RECTL arcl[1]; 00494 } ENUMRECTS; 00495 00496 typedef struct _FD_XFORM { 00497 FLOATL eXX; 00498 FLOATL eXY; 00499 FLOATL eYX; 00500 FLOATL eYY; 00501 } FD_XFORM, *PFD_XFORM; 00502 00503 /* FD_DEVICEMETRICS.flRealizedType constants */ 00504 #define FDM_TYPE_BM_SIDE_CONST 0x00000001 00505 #define FDM_TYPE_MAXEXT_EQUAL_BM_SIDE 0x00000002 00506 #define FDM_TYPE_CHAR_INC_EQUAL_BM_BASE 0x00000004 00507 #define FDM_TYPE_ZERO_BEARINGS 0x00000008 00508 #define FDM_TYPE_CONST_BEARINGS 0x00000010 00509 00510 typedef struct _FD_DEVICEMETRICS { 00511 FLONG flRealizedType; 00512 POINTE pteBase; 00513 POINTE pteSide; 00514 LONG lD; 00515 FIX fxMaxAscender; 00516 FIX fxMaxDescender; 00517 POINTL ptlUnderline1; 00518 POINTL ptlStrikeout; 00519 POINTL ptlULThickness; 00520 POINTL ptlSOThickness; 00521 ULONG cxMax; 00522 ULONG cyMax; 00523 ULONG cjGlyphMax; 00524 FD_XFORM fdxQuantized; 00525 LONG lNonLinearExtLeading; 00526 LONG lNonLinearIntLeading; 00527 LONG lNonLinearMaxCharWidth; 00528 LONG lNonLinearAvgCharWidth; 00529 LONG lMinA; 00530 LONG lMinC; 00531 LONG lMinD; 00532 LONG alReserved[1]; 00533 } FD_DEVICEMETRICS, *PFD_DEVICEMETRICS; 00534 00535 /* FD_GLYPHATTR.iMode constants */ 00536 #define FO_ATTR_MODE_ROTATE 1 00537 00538 typedef struct _FD_GLYPHATTR { 00539 ULONG cjThis; 00540 ULONG cGlyphs; 00541 ULONG iMode; 00542 _Field_size_((cGlyphs+7)/8) BYTE aGlyphAttr[1]; 00543 } FD_GLYPHATTR, *PFD_GLYPHATTR; 00544 00545 /* FD_GLYPHSET.flAccel */ 00546 #define GS_UNICODE_HANDLES 0x00000001 00547 #define GS_8BIT_HANDLES 0x00000002 00548 #define GS_16BIT_HANDLES 0x00000004 00549 00550 typedef struct _WCRUN { 00551 WCHAR wcLow; 00552 USHORT cGlyphs; 00553 HGLYPH *phg; 00554 } WCRUN, *PWCRUN; 00555 00556 typedef struct _FD_GLYPHSET { 00557 ULONG cjThis; 00558 FLONG flAccel; 00559 ULONG cGlyphsSupported; 00560 ULONG cRuns; 00561 _Field_size_(cRuns) WCRUN awcrun[1]; 00562 } FD_GLYPHSET, *PFD_GLYPHSET; 00563 00564 typedef struct _FD_KERNINGPAIR { 00565 WCHAR wcFirst; 00566 WCHAR wcSecond; 00567 FWORD fwdKern; 00568 } FD_KERNINGPAIR; 00569 00570 #if defined(_X86_) && !defined(USERMODE_DRIVER) 00571 typedef struct _FLOATOBJ 00572 { 00573 ULONG ul1; 00574 ULONG ul2; 00575 } FLOATOBJ, *PFLOATOBJ; 00576 #else 00577 typedef FLOAT FLOATOBJ, *PFLOATOBJ; 00578 #endif 00579 00580 #ifndef USERMODE_DRIVER 00581 typedef struct tagFLOATOBJ_XFORM { 00582 FLOATOBJ eM11; 00583 FLOATOBJ eM12; 00584 FLOATOBJ eM21; 00585 FLOATOBJ eM22; 00586 FLOATOBJ eDx; 00587 FLOATOBJ eDy; 00588 } FLOATOBJ_XFORM, *PFLOATOBJ_XFORM, FAR *LPFLOATOBJ_XFORM; 00589 #else 00590 typedef XFORML FLOATOBJ_XFORM, *PFLOATOBJ_XFORM, FAR *LPFLOATOBJ_XFORM; 00591 #endif 00592 00593 /* FONTDIFF.fsSelection */ 00594 #define FM_SEL_ITALIC 0x0001 00595 #define FM_SEL_UNDERSCORE 0x0002 00596 #define FM_SEL_NEGATIVE 0x0004 00597 #define FM_SEL_OUTLINED 0x0008 00598 #define FM_SEL_STRIKEOUT 0x0010 00599 #define FM_SEL_BOLD 0x0020 00600 #define FM_SEL_REGULAR 0x0040 00601 00602 typedef struct _FONTDIFF { 00603 BYTE jReserved1; 00604 BYTE jReserved2; 00605 BYTE jReserved3; 00606 BYTE bWeight; 00607 USHORT usWinWeight; 00608 FSHORT fsSelection; 00609 FWORD fwdAveCharWidth; 00610 FWORD fwdMaxCharInc; 00611 POINTL ptlCaret; 00612 } FONTDIFF; 00613 00614 typedef struct _FONTSIM { 00615 PTRDIFF dpBold; 00616 PTRDIFF dpItalic; 00617 PTRDIFF dpBoldItalic; 00618 } FONTSIM; 00619 00620 /* FONTINFO.flCaps constants */ 00621 #define FO_DEVICE_FONT 1L 00622 #define FO_OUTLINE_CAPABLE 2L 00623 00624 typedef struct _FONTINFO { 00625 ULONG cjThis; 00626 FLONG flCaps; 00627 ULONG cGlyphsSupported; 00628 ULONG cjMaxGlyph1; 00629 ULONG cjMaxGlyph4; 00630 ULONG cjMaxGlyph8; 00631 ULONG cjMaxGlyph32; 00632 } FONTINFO, *PFONTINFO; 00633 00634 /* FONTOBJ.flFontType constants */ 00635 #define FO_TYPE_RASTER RASTER_FONTTYPE 00636 #define FO_TYPE_DEVICE DEVICE_FONTTYPE 00637 #define FO_TYPE_TRUETYPE TRUETYPE_FONTTYPE 00638 #define FO_TYPE_OPENTYPE OPENTYPE_FONTTYPE 00639 00640 #define FO_SIM_BOLD 0x00002000 00641 #define FO_SIM_ITALIC 0x00004000 00642 #define FO_EM_HEIGHT 0x00008000 00643 #define FO_GRAY16 0x00010000 00644 #define FO_NOGRAY16 0x00020000 00645 #define FO_NOHINTS 0x00040000 00646 #define FO_NO_CHOICE 0x00080000 00647 #define FO_CFF 0x00100000 00648 #define FO_POSTSCRIPT 0x00200000 00649 #define FO_MULTIPLEMASTER 0x00400000 00650 #define FO_VERT_FACE 0x00800000 00651 #define FO_DBCS_FONT 0X01000000 00652 #define FO_NOCLEARTYPE 0x02000000 00653 #define FO_CLEARTYPE_X 0x10000000 00654 #define FO_CLEARTYPE_Y 0x20000000 00655 00656 typedef struct _FONTOBJ { 00657 ULONG iUniq; 00658 ULONG iFace; 00659 ULONG cxMax; 00660 FLONG flFontType; 00661 ULONG_PTR iTTUniq; 00662 ULONG_PTR iFile; 00663 SIZE sizLogResPpi; 00664 ULONG ulStyleSize; 00665 PVOID pvConsumer; 00666 PVOID pvProducer; 00667 } FONTOBJ; 00668 00669 typedef struct _GAMMARAMP { 00670 WORD Red[256]; 00671 WORD Green[256]; 00672 WORD Blue[256]; 00673 } GAMMARAMP, *PGAMMARAMP; 00674 00675 /* GDIINFO.ulPrimaryOrder constants */ 00676 #define PRIMARY_ORDER_ABC 0 00677 #define PRIMARY_ORDER_ACB 1 00678 #define PRIMARY_ORDER_BAC 2 00679 #define PRIMARY_ORDER_BCA 3 00680 #define PRIMARY_ORDER_CBA 4 00681 #define PRIMARY_ORDER_CAB 5 00682 00683 /* GDIINFO.ulHTPatternSize constants */ 00684 #define HT_PATSIZE_2x2 0 00685 #define HT_PATSIZE_2x2_M 1 00686 #define HT_PATSIZE_4x4 2 00687 #define HT_PATSIZE_4x4_M 3 00688 #define HT_PATSIZE_6x6 4 00689 #define HT_PATSIZE_6x6_M 5 00690 #define HT_PATSIZE_8x8 6 00691 #define HT_PATSIZE_8x8_M 7 00692 #define HT_PATSIZE_10x10 8 00693 #define HT_PATSIZE_10x10_M 9 00694 #define HT_PATSIZE_12x12 10 00695 #define HT_PATSIZE_12x12_M 11 00696 #define HT_PATSIZE_14x14 12 00697 #define HT_PATSIZE_14x14_M 13 00698 #define HT_PATSIZE_16x16 14 00699 #define HT_PATSIZE_16x16_M 15 00700 #define HT_PATSIZE_SUPERCELL 16 00701 #define HT_PATSIZE_SUPERCELL_M 17 00702 #define HT_PATSIZE_USER 18 00703 #define HT_PATSIZE_MAX_INDEX HT_PATSIZE_USER 00704 #define HT_PATSIZE_DEFAULT HT_PATSIZE_SUPERCELL_M 00705 #define HT_USERPAT_CX_MIN 4 00706 #define HT_USERPAT_CX_MAX 256 00707 #define HT_USERPAT_CY_MIN 4 00708 #define HT_USERPAT_CY_MAX 256 00709 00710 /* GDIINFO.ulHTOutputFormat constants */ 00711 #define HT_FORMAT_1BPP 0 00712 #define HT_FORMAT_4BPP 2 00713 #define HT_FORMAT_4BPP_IRGB 3 00714 #define HT_FORMAT_8BPP 4 00715 #define HT_FORMAT_16BPP 5 00716 #define HT_FORMAT_24BPP 6 00717 #define HT_FORMAT_32BPP 7 00718 00719 /* GDIINFO.flHTFlags */ 00720 #define HT_FLAG_SQUARE_DEVICE_PEL 0x00000001 00721 #define HT_FLAG_HAS_BLACK_DYE 0x00000002 00722 #define HT_FLAG_ADDITIVE_PRIMS 0x00000004 00723 #define HT_FLAG_USE_8BPP_BITMASK 0x00000008 00724 #define HT_FLAG_INK_HIGH_ABSORPTION 0x00000010 00725 #define HT_FLAG_INK_ABSORPTION_INDICES 0x00000060 00726 #define HT_FLAG_DO_DEVCLR_XFORM 0x00000080 00727 #define HT_FLAG_OUTPUT_CMY 0x00000100 00728 #define HT_FLAG_PRINT_DRAFT_MODE 0x00000200 00729 #define HT_FLAG_INVERT_8BPP_BITMASK_IDX 0x00000400 00730 #define HT_FLAG_8BPP_CMY332_MASK 0xFF000000 00731 00732 #define MAKE_CMYMASK_BYTE(c,m,y) ((BYTE)(((BYTE)(c) & 0x07) << 5) \ 00733 |(BYTE)(((BYTE)(m) & 0x07) << 2) \ 00734 |(BYTE)((BYTE)(y) & 0x03)) 00735 00736 #define MAKE_CMY332_MASK(c,m,y) ((DWORD)(((DWORD)(c) & 0x07) << 29)\ 00737 |(DWORD)(((DWORD)(m) & 0x07) << 26)\ 00738 |(DWORD)(((DWORD)(y) & 0x03) << 24)) 00739 00740 /* GDIINFO.flHTFlags constants */ 00741 #define HT_FLAG_INK_ABSORPTION_IDX0 0x00000000 00742 #define HT_FLAG_INK_ABSORPTION_IDX1 0x00000020 00743 #define HT_FLAG_INK_ABSORPTION_IDX2 0x00000040 00744 #define HT_FLAG_INK_ABSORPTION_IDX3 0x00000060 00745 00746 #define HT_FLAG_HIGHEST_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \ 00747 |HT_FLAG_INK_ABSORPTION_IDX3) 00748 #define HT_FLAG_HIGHER_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \ 00749 |HT_FLAG_INK_ABSORPTION_IDX2) 00750 #define HT_FLAG_HIGH_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \ 00751 |HT_FLAG_INK_ABSORPTION_IDX1) 00752 #define HT_FLAG_NORMAL_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX0 00753 #define HT_FLAG_LOW_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX1 00754 #define HT_FLAG_LOWER_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX2 00755 #define HT_FLAG_LOWEST_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX3 00756 00757 #define HT_BITMASKPALRGB (DWORD)'0BGR' 00758 #define HT_SET_BITMASKPAL2RGB(pPal) (*((LPDWORD)(pPal)) = HT_BITMASKPALRGB) 00759 #define HT_IS_BITMASKPALRGB(pPal) (*((LPDWORD)(pPal)) == (DWORD)0) 00760 00761 /* GDIINFO.ulPhysicalPixelCharacteristics constants */ 00762 #define PPC_DEFAULT 0x0 00763 #define PPC_UNDEFINED 0x1 00764 #define PPC_RGB_ORDER_VERTICAL_STRIPES 0x2 00765 #define PPC_BGR_ORDER_VERTICAL_STRIPES 0x3 00766 #define PPC_RGB_ORDER_HORIZONTAL_STRIPES 0x4 00767 #define PPC_BGR_ORDER_HORIZONTAL_STRIPES 0x5 00768 00769 #define PPG_DEFAULT 0 00770 #define PPG_SRGB 1 00771 00772 typedef struct _GDIINFO { 00773 ULONG ulVersion; 00774 ULONG ulTechnology; 00775 ULONG ulHorzSize; 00776 ULONG ulVertSize; 00777 ULONG ulHorzRes; 00778 ULONG ulVertRes; 00779 ULONG cBitsPixel; 00780 ULONG cPlanes; 00781 ULONG ulNumColors; 00782 ULONG flRaster; 00783 ULONG ulLogPixelsX; 00784 ULONG ulLogPixelsY; 00785 ULONG flTextCaps; 00786 ULONG ulDACRed; 00787 ULONG ulDACGreen; 00788 ULONG ulDACBlue; 00789 ULONG ulAspectX; 00790 ULONG ulAspectY; 00791 ULONG ulAspectXY; 00792 LONG xStyleStep; 00793 LONG yStyleStep; 00794 LONG denStyleStep; 00795 POINTL ptlPhysOffset; 00796 SIZEL szlPhysSize; 00797 ULONG ulNumPalReg; 00798 COLORINFO ciDevice; 00799 ULONG ulDevicePelsDPI; 00800 ULONG ulPrimaryOrder; 00801 ULONG ulHTPatternSize; 00802 ULONG ulHTOutputFormat; 00803 ULONG flHTFlags; 00804 ULONG ulVRefresh; 00805 ULONG ulBltAlignment; 00806 ULONG ulPanningHorzRes; 00807 ULONG ulPanningVertRes; 00808 ULONG xPanningAlignment; 00809 ULONG yPanningAlignment; 00810 ULONG cxHTPat; 00811 ULONG cyHTPat; 00812 LPBYTE pHTPatA; 00813 LPBYTE pHTPatB; 00814 LPBYTE pHTPatC; 00815 ULONG flShadeBlend; 00816 ULONG ulPhysicalPixelCharacteristics; 00817 ULONG ulPhysicalPixelGamma; 00818 } GDIINFO, *PGDIINFO; 00819 00820 /* PATHDATA.flags constants */ 00821 #define PD_BEGINSUBPATH 0x00000001 00822 #define PD_ENDSUBPATH 0x00000002 00823 #define PD_RESETSTYLE 0x00000004 00824 #define PD_CLOSEFIGURE 0x00000008 00825 #define PD_BEZIERS 0x00000010 00826 #define PD_ALL (PD_BEGINSUBPATH \ 00827 |PD_ENDSUBPATH \ 00828 |PD_RESETSTYLE \ 00829 |PD_CLOSEFIGURE \ 00830 PD_BEZIERS) 00831 00832 typedef struct _PATHDATA { 00833 FLONG flags; 00834 ULONG count; 00835 POINTFIX *pptfx; 00836 } PATHDATA, *PPATHDATA; 00837 00838 /* PATHOBJ.fl constants */ 00839 #define PO_BEZIERS 0x00000001 00840 #define PO_ELLIPSE 0x00000002 00841 #define PO_ALL_INTEGERS 0x00000004 00842 #define PO_ENUM_AS_INTEGERS 0x00000008 00843 00844 typedef struct _PATHOBJ { 00845 FLONG fl; 00846 ULONG cCurves; 00847 } PATHOBJ; 00848 00849 typedef BYTE GAMMA_TABLES[2][256]; 00850 00851 typedef struct _GLYPHBITS { 00852 POINTL ptlOrigin; 00853 SIZEL sizlBitmap; 00854 BYTE aj[1]; 00855 } GLYPHBITS; 00856 00857 typedef union _GLYPHDEF { 00858 GLYPHBITS *pgb; 00859 PATHOBJ *ppo; 00860 } GLYPHDEF; 00861 00862 typedef struct _GLYPHPOS { 00863 HGLYPH hg; 00864 GLYPHDEF *pgdf; 00865 POINTL ptl; 00866 } GLYPHPOS, *PGLYPHPOS; 00867 00868 typedef struct _GLYPHDATA { 00869 GLYPHDEF gdf; 00870 HGLYPH hg; 00871 FIX fxD; 00872 FIX fxA; 00873 FIX fxAB; 00874 FIX fxInkTop; 00875 FIX fxInkBottom; 00876 RECTL rclInk; 00877 POINTQF ptqD; 00878 } GLYPHDATA; 00879 00880 typedef struct _IFIEXTRA { 00881 ULONG ulIdentifier; 00882 PTRDIFF dpFontSig; 00883 ULONG cig; 00884 PTRDIFF dpDesignVector; 00885 PTRDIFF dpAxesInfoW; 00886 ULONG aulReserved[1]; 00887 } IFIEXTRA, *PIFIEXTRA; 00888 00889 /* IFIMETRICS constants */ 00890 00891 #define FM_VERSION_NUMBER 0x0 00892 00893 /* IFIMETRICS.fsType constants */ 00894 #define FM_TYPE_LICENSED 0x2 00895 #define FM_READONLY_EMBED 0x4 00896 #define FM_EDITABLE_EMBED 0x8 00897 #define FM_NO_EMBEDDING FM_TYPE_LICENSED 00898 00899 /* IFIMETRICS.flInfo constants */ 00900 #define FM_INFO_TECH_TRUETYPE 0x00000001 00901 #define FM_INFO_TECH_BITMAP 0x00000002 00902 #define FM_INFO_TECH_STROKE 0x00000004 00903 #define FM_INFO_TECH_OUTLINE_NOT_TRUETYPE 0x00000008 00904 #define FM_INFO_ARB_XFORMS 0x00000010 00905 #define FM_INFO_1BPP 0x00000020 00906 #define FM_INFO_4BPP 0x00000040 00907 #define FM_INFO_8BPP 0x00000080 00908 #define FM_INFO_16BPP 0x00000100 00909 #define FM_INFO_24BPP 0x00000200 00910 #define FM_INFO_32BPP 0x00000400 00911 #define FM_INFO_INTEGER_WIDTH 0x00000800 00912 #define FM_INFO_CONSTANT_WIDTH 0x00001000 00913 #define FM_INFO_NOT_CONTIGUOUS 0x00002000 00914 #define FM_INFO_TECH_MM 0x00004000 00915 #define FM_INFO_RETURNS_OUTLINES 0x00008000 00916 #define FM_INFO_RETURNS_STROKES 0x00010000 00917 #define FM_INFO_RETURNS_BITMAPS 0x00020000 00918 #define FM_INFO_DSIG 0x00040000 00919 #define FM_INFO_RIGHT_HANDED 0x00080000 00920 #define FM_INFO_INTEGRAL_SCALING 0x00100000 00921 #define FM_INFO_90DEGREE_ROTATIONS 0x00200000 00922 #define FM_INFO_OPTICALLY_FIXED_PITCH 0x00400000 00923 #define FM_INFO_DO_NOT_ENUMERATE 0x00800000 00924 #define FM_INFO_ISOTROPIC_SCALING_ONLY 0x01000000 00925 #define FM_INFO_ANISOTROPIC_SCALING_ONLY 0x02000000 00926 #define FM_INFO_TECH_CFF 0x04000000 00927 #define FM_INFO_FAMILY_EQUIV 0x08000000 00928 #define FM_INFO_DBCS_FIXED_PITCH 0x10000000 00929 #define FM_INFO_NONNEGATIVE_AC 0x20000000 00930 #define FM_INFO_IGNORE_TC_RA_ABLE 0x40000000 00931 #define FM_INFO_TECH_TYPE1 0x80000000 00932 00933 #define MAXCHARSETS 16 00934 00935 /* IFIMETRICS.ulPanoseCulture constants */ 00936 #define FM_PANOSE_CULTURE_LATIN 0x0 00937 00938 typedef struct _IFIMETRICS { 00939 ULONG cjThis; 00940 ULONG cjIfiExtra; 00941 PTRDIFF dpwszFamilyName; 00942 PTRDIFF dpwszStyleName; 00943 PTRDIFF dpwszFaceName; 00944 PTRDIFF dpwszUniqueName; 00945 PTRDIFF dpFontSim; 00946 LONG lEmbedId; 00947 LONG lItalicAngle; 00948 LONG lCharBias; 00949 PTRDIFF dpCharSets; 00950 BYTE jWinCharSet; 00951 BYTE jWinPitchAndFamily; 00952 USHORT usWinWeight; 00953 ULONG flInfo; 00954 USHORT fsSelection; 00955 USHORT fsType; 00956 FWORD fwdUnitsPerEm; 00957 FWORD fwdLowestPPEm; 00958 FWORD fwdWinAscender; 00959 FWORD fwdWinDescender; 00960 FWORD fwdMacAscender; 00961 FWORD fwdMacDescender; 00962 FWORD fwdMacLineGap; 00963 FWORD fwdTypoAscender; 00964 FWORD fwdTypoDescender; 00965 FWORD fwdTypoLineGap; 00966 FWORD fwdAveCharWidth; 00967 FWORD fwdMaxCharInc; 00968 FWORD fwdCapHeight; 00969 FWORD fwdXHeight; 00970 FWORD fwdSubscriptXSize; 00971 FWORD fwdSubscriptYSize; 00972 FWORD fwdSubscriptXOffset; 00973 FWORD fwdSubscriptYOffset; 00974 FWORD fwdSuperscriptXSize; 00975 FWORD fwdSuperscriptYSize; 00976 FWORD fwdSuperscriptXOffset; 00977 FWORD fwdSuperscriptYOffset; 00978 FWORD fwdUnderscoreSize; 00979 FWORD fwdUnderscorePosition; 00980 FWORD fwdStrikeoutSize; 00981 FWORD fwdStrikeoutPosition; 00982 BYTE chFirstChar; 00983 BYTE chLastChar; 00984 BYTE chDefaultChar; 00985 BYTE chBreakChar; 00986 WCHAR wcFirstChar; 00987 WCHAR wcLastChar; 00988 WCHAR wcDefaultChar; 00989 WCHAR wcBreakChar; 00990 POINTL ptlBaseline; 00991 POINTL ptlAspect; 00992 POINTL ptlCaret; 00993 RECTL rclFontBox; 00994 BYTE achVendId[4]; 00995 ULONG cKerningPairs; 00996 ULONG ulPanoseCulture; 00997 PANOSE panose; 00998 #if defined(_WIN64) 00999 PVOID Align; 01000 #endif 01001 } IFIMETRICS, *PIFIMETRICS; 01002 01003 /* LINEATTRS.fl */ 01004 #define LA_GEOMETRIC 0x00000001 01005 #define LA_ALTERNATE 0x00000002 01006 #define LA_STARTGAP 0x00000004 01007 #define LA_STYLED 0x00000008 01008 01009 /* LINEATTRS.iJoin */ 01010 #define JOIN_ROUND 0L 01011 #define JOIN_BEVEL 1L 01012 #define JOIN_MITER 2L 01013 01014 /* LINEATTRS.iEndCap */ 01015 #define ENDCAP_ROUND 0L 01016 #define ENDCAP_SQUARE 1L 01017 #define ENDCAP_BUTT 2L 01018 01019 typedef struct _LINEATTRS { 01020 FLONG fl; 01021 ULONG iJoin; 01022 ULONG iEndCap; 01023 FLOAT_LONG elWidth; 01024 FLOATL eMiterLimit; 01025 ULONG cstyle; 01026 PFLOAT_LONG pstyle; 01027 FLOAT_LONG elStyleState; 01028 } LINEATTRS, *PLINEATTRS; 01029 01030 typedef struct _PALOBJ { 01031 ULONG ulReserved; 01032 } PALOBJ; 01033 01034 typedef struct _PERBANDINFO { 01035 BOOL bRepeatThisBand; 01036 SIZEL szlBand; 01037 ULONG ulHorzRes; 01038 ULONG ulVertRes; 01039 } PERBANDINFO, *PPERBANDINFO; 01040 01041 /* STROBJ.flAccel constants */ 01042 #define SO_FLAG_DEFAULT_PLACEMENT 0x00000001 01043 #define SO_HORIZONTAL 0x00000002 01044 #define SO_VERTICAL 0x00000004 01045 #define SO_REVERSED 0x00000008 01046 #define SO_ZERO_BEARINGS 0x00000010 01047 #define SO_CHAR_INC_EQUAL_BM_BASE 0x00000020 01048 #define SO_MAXEXT_EQUAL_BM_SIDE 0x00000040 01049 #define SO_DO_NOT_SUBSTITUTE_DEVICE_FONT 0x00000080 01050 #define SO_GLYPHINDEX_TEXTOUT 0x00000100 01051 #define SO_ESC_NOT_ORIENT 0x00000200 01052 #define SO_DXDY 0x00000400 01053 #define SO_CHARACTER_EXTRA 0x00000800 01054 #define SO_BREAK_EXTRA 0x00001000 01055 01056 typedef struct _STROBJ { 01057 ULONG cGlyphs; 01058 FLONG flAccel; 01059 ULONG ulCharInc; 01060 RECTL rclBkGround; 01061 GLYPHPOS *pgp; 01062 LPWSTR pwszOrg; 01063 } STROBJ; 01064 01065 01066 /* SURFOBJ.iType constants */ 01067 #define STYPE_BITMAP 0L 01068 #define STYPE_DEVICE 1L 01069 #define STYPE_DEVBITMAP 3L 01070 01071 /* SURFOBJ.fjBitmap constants */ 01072 #define BMF_TOPDOWN 0x0001 01073 #define BMF_NOZEROINIT 0x0002 01074 #define BMF_DONTCACHE 0x0004 01075 #define BMF_USERMEM 0x0008 01076 #define BMF_KMSECTION 0x0010 01077 #define BMF_NOTSYSMEM 0x0020 01078 #define BMF_WINDOW_BLT 0x0040 01079 #define BMF_UMPDMEM 0x0080 01080 #define BMF_RESERVED 0xFF00 01081 01082 typedef struct _SURFOBJ { 01083 DHSURF dhsurf; 01084 HSURF hsurf; 01085 DHPDEV dhpdev; 01086 HDEV hdev; 01087 SIZEL sizlBitmap; 01088 ULONG cjBits; 01089 PVOID pvBits; 01090 PVOID pvScan0; 01091 LONG lDelta; 01092 ULONG iUniq; 01093 ULONG iBitmapFormat; 01094 USHORT iType; 01095 USHORT fjBitmap; 01096 } SURFOBJ; 01097 01098 typedef struct _TYPE1_FONT { 01099 HANDLE hPFM; 01100 HANDLE hPFB; 01101 ULONG ulIdentifier; 01102 } TYPE1_FONT; 01103 01104 typedef struct _WNDOBJ { 01105 CLIPOBJ coClient; 01106 PVOID pvConsumer; 01107 RECTL rclClient; 01108 SURFOBJ *psoOwner; 01109 } WNDOBJ, *PWNDOBJ; 01110 01111 typedef struct _XFORML { 01112 FLOATL eM11; 01113 FLOATL eM12; 01114 FLOATL eM21; 01115 FLOATL eM22; 01116 FLOATL eDx; 01117 FLOATL eDy; 01118 } XFORML, *PXFORML; 01119 01120 typedef struct _XFORMOBJ { 01121 ULONG ulReserved; 01122 } XFORMOBJ; 01123 01124 /* XLATEOBJ.flXlate constants */ 01125 #define XO_TRIVIAL 0x00000001 01126 #define XO_TABLE 0x00000002 01127 #define XO_TO_MONO 0x00000004 01128 #define XO_FROM_CMYK 0x00000008 01129 #define XO_DEVICE_ICM 0x00000010 01130 #define XO_HOST_ICM 0x00000020 01131 01132 typedef struct _XLATEOBJ { 01133 ULONG iUniq; 01134 FLONG flXlate; 01135 USHORT iSrcType; 01136 USHORT iDstType; 01137 ULONG cEntries; 01138 ULONG *pulXlate; 01139 } XLATEOBJ; 01140 01141 /* WNDOBJCHANGEPROC.fl constants */ 01142 #define WOC_RGN_CLIENT_DELTA 0x00000001 01143 #define WOC_RGN_CLIENT 0x00000002 01144 #define WOC_RGN_SURFACE_DELTA 0x00000004 01145 #define WOC_RGN_SURFACE 0x00000008 01146 #define WOC_CHANGED 0x00000010 01147 #define WOC_DELETE 0x00000020 01148 #define WOC_DRAWN 0x00000040 01149 #define WOC_SPRITE_OVERLAP 0x00000080 01150 #define WOC_SPRITE_NO_OVERLAP 0x00000100 01151 #if (NTDDI_VERSION >= NTDDI_VISTA) 01152 #define WOC_RGN_SPRITE 0x00000200 01153 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ 01154 01155 typedef VOID (APIENTRY CALLBACK *WNDOBJCHANGEPROC)( 01156 _In_ WNDOBJ *pwo, 01157 _In_ FLONG fl); 01158 01159 01160 WIN32KAPI 01161 HANDLE 01162 APIENTRY 01163 BRUSHOBJ_hGetColorTransform( 01164 _In_ BRUSHOBJ *pbo); 01165 01166 _Ret_opt_bytecount_(cj) 01167 WIN32KAPI 01168 PVOID 01169 APIENTRY 01170 BRUSHOBJ_pvAllocRbrush( 01171 _In_ BRUSHOBJ *pbo, 01172 _In_ ULONG cj); 01173 01174 WIN32KAPI 01175 PVOID 01176 APIENTRY 01177 BRUSHOBJ_pvGetRbrush( 01178 _In_ BRUSHOBJ *pbo); 01179 01180 WIN32KAPI 01181 ULONG 01182 APIENTRY 01183 BRUSHOBJ_ulGetBrushColor( 01184 _In_ BRUSHOBJ *pbo); 01185 01186 WIN32KAPI 01187 BOOL 01188 APIENTRY 01189 CLIPOBJ_bEnum( 01190 _In_ CLIPOBJ *pco, 01191 _In_ ULONG cj, 01192 _Out_bytecap_(cj) ULONG *pul); 01193 01194 /* CLIPOBJ_cEnumStart.iType constants */ 01195 #define CT_RECTANGLES 0L 01196 01197 /* CLIPOBJ_cEnumStart.iDirection constants */ 01198 #define CD_RIGHTDOWN 0x00000000 01199 #define CD_LEFTDOWN 0x00000001 01200 #define CD_LEFTWARDS 0x00000001 01201 #define CD_RIGHTUP 0x00000002 01202 #define CD_UPWARDS 0x00000002 01203 #define CD_LEFTUP 0x00000003 01204 #define CD_ANY 0x00000004 01205 01206 WIN32KAPI 01207 ULONG 01208 APIENTRY 01209 CLIPOBJ_cEnumStart( 01210 _Inout_ CLIPOBJ *pco, 01211 _In_ BOOL bAll, 01212 _In_ ULONG iType, 01213 _In_ ULONG iDirection, 01214 _In_ ULONG cLimit); 01215 01216 WIN32KAPI 01217 PATHOBJ* 01218 APIENTRY 01219 CLIPOBJ_ppoGetPath( 01220 _In_ CLIPOBJ *pco); 01221 01222 #if (NTDDI_VERSION >= NTDDI_VISTA) 01223 WIN32KAPI 01224 HANDLE 01225 APIENTRY 01226 CLIPOBJ_GetRgn( 01227 _In_ CLIPOBJ* pco); 01228 #endif 01229 01230 WIN32KAPI 01231 VOID 01232 APIENTRY 01233 EngAcquireSemaphore( 01234 _Inout_ HSEMAPHORE hsem); 01235 01236 #define FL_ZERO_MEMORY 0x00000001 01237 #define FL_NONPAGED_MEMORY 0x00000002 01238 01239 #ifdef USERMODE_DRIVER 01240 01241 #define EngAllocMem(fl, cj, tag) ((PVOID)GlobalAlloc(((fl) & FL_ZERO_MEMORY) ? GPTR : GMEM_FIXED, cj)) 01242 #define EngAllocPrivateUserMem(psl, cj, tag) ((PVOID)GlobalAlloc(GMEM_FIXED, cj)) 01243 #define EngAllocUserMem(cj, tag) ((PVOID)GlobalAlloc(GMEM_FIXED, cj)) 01244 01245 #else 01246 01247 _Must_inspect_result_ 01248 _When_(fl & FL_ZERO_MEMORY, _Ret_opt_bytecount_(cjMemSize)) 01249 _When_(!(fl & FL_ZERO_MEMORY), _Ret_opt_bytecap_(cjMemSize)) 01250 WIN32KAPI 01251 PVOID 01252 APIENTRY 01253 EngAllocMem( 01254 _In_ ULONG fl, 01255 _In_ ULONG cjMemSize, 01256 _In_ ULONG ulTag); 01257 01258 _Must_inspect_result_ 01259 _Ret_opt_bytecount_(cj) 01260 WIN32KAPI 01261 PVOID 01262 APIENTRY 01263 EngAllocPrivateUserMem( 01264 _In_ PDD_SURFACE_LOCAL psl, 01265 _In_ SIZE_T cjMemSize, 01266 _In_ ULONG ulTag); 01267 01268 _Must_inspect_result_ 01269 _Ret_opt_bytecount_(cjMemSize) 01270 WIN32KAPI 01271 PVOID 01272 APIENTRY 01273 EngAllocUserMem( 01274 _In_ SIZE_T cjMemSize, 01275 _In_ ULONG ulTag); 01276 01277 #endif /* USERMODE_DRIVER */ 01278 01279 WIN32KAPI 01280 BOOL 01281 APIENTRY 01282 EngAlphaBlend( 01283 _Inout_ SURFOBJ *psoDest, 01284 _In_ SURFOBJ *psoSrc, 01285 _In_opt_ CLIPOBJ *pco, 01286 _In_opt_ XLATEOBJ *pxlo, 01287 _In_ RECTL *prclDest, 01288 _In_ RECTL *prclSrc, 01289 _In_ BLENDOBJ *pBlendObj); 01290 01291 /* EngAssociateSurface.flHooks constants */ 01292 #define HOOK_BITBLT 0x00000001 01293 #define HOOK_STRETCHBLT 0x00000002 01294 #define HOOK_PLGBLT 0x00000004 01295 #define HOOK_TEXTOUT 0x00000008 01296 #define HOOK_PAINT 0x00000010 01297 #define HOOK_STROKEPATH 0x00000020 01298 #define HOOK_FILLPATH 0x00000040 01299 #define HOOK_STROKEANDFILLPATH 0x00000080 01300 #define HOOK_LINETO 0x00000100 01301 #define HOOK_COPYBITS 0x00000400 01302 #define HOOK_MOVEPANNING 0x00000800 01303 #define HOOK_SYNCHRONIZE 0x00001000 01304 #define HOOK_STRETCHBLTROP 0x00002000 01305 #define HOOK_SYNCHRONIZEACCESS 0x00004000 01306 #define HOOK_TRANSPARENTBLT 0x00008000 01307 #define HOOK_ALPHABLEND 0x00010000 01308 #define HOOK_GRADIENTFILL 0x00020000 01309 #if (NTDDI_VERSION >= NTDDI_VISTA) 01310 #define HOOK_FLAGS 0x0003b5ef 01311 #else 01312 #define HOOK_FLAGS 0x0003b5ff 01313 #endif 01314 01315 WIN32KAPI 01316 BOOL 01317 APIENTRY 01318 EngAssociateSurface( 01319 _In_ HSURF hsurf, 01320 _In_ HDEV hdev, 01321 _In_ FLONG flHooks); 01322 01323 WIN32KAPI 01324 BOOL 01325 APIENTRY 01326 EngBitBlt( 01327 _Inout_ SURFOBJ *psoTrg, 01328 _In_opt_ SURFOBJ *psoSrc, 01329 _In_opt_ SURFOBJ *psoMask, 01330 _In_opt_ CLIPOBJ *pco, 01331 _In_opt_ XLATEOBJ *pxlo, 01332 _In_ RECTL *prclTrg, 01333 _When_(psoSrc, _In_) POINTL *pptlSrc, 01334 _When_(psoMask, _In_) POINTL *pptlMask, 01335 _In_opt_ BRUSHOBJ *pbo, 01336 _When_(pbo, _In_) POINTL *pptlBrush, 01337 _In_ ROP4 rop4); 01338 01339 WIN32KAPI 01340 BOOL 01341 APIENTRY 01342 EngCheckAbort( 01343 _In_ SURFOBJ *pso); 01344 01345 WIN32KAPI 01346 VOID 01347 APIENTRY 01348 EngClearEvent( 01349 _In_ PEVENT pEvent); 01350 01351 WIN32KAPI 01352 FD_GLYPHSET* 01353 APIENTRY 01354 EngComputeGlyphSet( 01355 _In_ INT nCodePage, 01356 _In_ INT nFirstChar, 01357 _In_ INT cChars); 01358 01359 /* EngControlSprites.fl constants */ 01360 #define ECS_TEARDOWN 0x00000001 01361 #define ECS_REDRAW 0x00000002 01362 01363 WIN32KAPI 01364 BOOL 01365 APIENTRY 01366 EngControlSprites( 01367 _Inout_ WNDOBJ *pwo, 01368 _In_ FLONG fl); 01369 01370 WIN32KAPI 01371 BOOL 01372 APIENTRY 01373 EngCopyBits( 01374 _In_ SURFOBJ *psoDest, 01375 _In_ SURFOBJ *psoSrc, 01376 _In_opt_ CLIPOBJ *pco, 01377 _In_opt_ XLATEOBJ *pxlo, 01378 _In_ RECTL *prclDest, 01379 _In_ POINTL *pptlSrc); 01380 01381 WIN32KAPI 01382 HBITMAP 01383 APIENTRY 01384 EngCreateBitmap( 01385 _In_ SIZEL sizl, 01386 _In_ LONG lWidth, 01387 _In_ ULONG iFormat, 01388 _In_ FLONG fl, 01389 _In_opt_ PVOID pvBits); 01390 01391 WIN32KAPI 01392 CLIPOBJ* 01393 APIENTRY 01394 EngCreateClip(VOID); 01395 01396 _Must_inspect_result_ 01397 WIN32KAPI 01398 HBITMAP 01399 APIENTRY 01400 EngCreateDeviceBitmap( 01401 _In_ DHSURF dhsurf, 01402 _In_ SIZEL sizl, 01403 _In_ ULONG iFormatCompat); 01404 01405 _Must_inspect_result_ 01406 WIN32KAPI 01407 HSURF 01408 APIENTRY 01409 EngCreateDeviceSurface( 01410 _In_ DHSURF dhsurf, 01411 _In_ SIZEL sizl, 01412 _In_ ULONG iFormatCompat); 01413 01414 _Must_inspect_result_ 01415 WIN32KAPI 01416 HDRVOBJ 01417 APIENTRY 01418 EngCreateDriverObj( 01419 _In_ PVOID pvObj, 01420 _In_opt_ FREEOBJPROC pFreeObjProc, 01421 _In_ HDEV hdev); 01422 01423 WIN32KAPI 01424 BOOL 01425 APIENTRY 01426 EngCreateEvent( 01427 _Deref_out_opt_ PEVENT *ppEvent); 01428 01429 /* EngCreatePalette.iMode constants */ 01430 #define PAL_INDEXED 0x00000001 01431 #define PAL_BITFIELDS 0x00000002 01432 #define PAL_RGB 0x00000004 01433 #define PAL_BGR 0x00000008 01434 #define PAL_CMYK 0x00000010 01435 01436 _Must_inspect_result_ 01437 WIN32KAPI 01438 HPALETTE 01439 APIENTRY 01440 EngCreatePalette( 01441 _In_ ULONG iMode, 01442 _In_ ULONG cColors, 01443 _In_ ULONG *pulColors, 01444 _In_ FLONG flRed, 01445 _In_ FLONG flGreen, 01446 _In_ FLONG flBlue); 01447 01448 WIN32KAPI 01449 PATHOBJ* 01450 APIENTRY 01451 EngCreatePath(VOID); 01452 01453 WIN32KAPI 01454 HSEMAPHORE 01455 APIENTRY 01456 EngCreateSemaphore(VOID); 01457 01458 /* EngCreateWnd.fl constants */ 01459 #define WO_RGN_CLIENT_DELTA 0x00000001 01460 #define WO_RGN_CLIENT 0x00000002 01461 #define WO_RGN_SURFACE_DELTA 0x00000004 01462 #define WO_RGN_SURFACE 0x00000008 01463 #define WO_RGN_UPDATE_ALL 0x00000010 01464 #define WO_RGN_WINDOW 0x00000020 01465 #define WO_DRAW_NOTIFY 0x00000040 01466 #define WO_SPRITE_NOTIFY 0x00000080 01467 #define WO_RGN_DESKTOP_COORD 0x00000100 01468 #if (NTDDI_VERSION >= NTDDI_VISTA) 01469 #define WO_RGN_SPRITE 0x00000200 01470 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ 01471 01472 _Must_inspect_result_ 01473 WIN32KAPI 01474 WNDOBJ* 01475 APIENTRY 01476 EngCreateWnd( 01477 _In_ SURFOBJ *pso, 01478 _In_ HWND hwnd, 01479 _In_ WNDOBJCHANGEPROC pfn, 01480 _In_ FLONG fl, 01481 _In_ INT iPixelFormat); 01482 01483 _Analysis_noreturn_ 01484 WIN32KAPI 01485 VOID 01486 APIENTRY 01487 EngDebugBreak(VOID); 01488 01489 WIN32KAPI 01490 VOID 01491 APIENTRY 01492 EngDebugPrint( 01493 _In_z_ PCHAR StandardPrefix, 01494 _In_z_ PCHAR DebugMessage, 01495 _In_ va_list ap); 01496 01497 WIN32KAPI 01498 VOID 01499 APIENTRY 01500 EngDeleteClip( 01501 _In_ _Post_ptr_invalid_ CLIPOBJ *pco); 01502 01503 WIN32KAPI 01504 BOOL 01505 APIENTRY 01506 EngDeleteDriverObj( 01507 _In_ _Post_ptr_invalid_ HDRVOBJ hdo, 01508 _In_ BOOL bCallBack, 01509 _In_ BOOL bLocked); 01510 01511 WIN32KAPI 01512 BOOL 01513 APIENTRY 01514 EngDeleteEvent( 01515 _In_ _Post_ptr_invalid_ PEVENT pEvent); 01516 01517 WIN32KAPI 01518 BOOL 01519 APIENTRY 01520 EngDeleteFile( 01521 _In_ LPWSTR pwszFileName); 01522 01523 WIN32KAPI 01524 BOOL 01525 APIENTRY 01526 EngDeletePalette( 01527 _In_ _Post_ptr_invalid_ HPALETTE hpal); 01528 01529 WIN32KAPI 01530 VOID 01531 APIENTRY 01532 EngDeletePath( 01533 _In_ _Post_ptr_invalid_ PATHOBJ *ppo); 01534 01535 WIN32KAPI 01536 VOID 01537 APIENTRY 01538 EngDeleteSafeSemaphore( 01539 _Inout_ ENGSAFESEMAPHORE *pssem); 01540 01541 WIN32KAPI 01542 VOID 01543 APIENTRY 01544 EngDeleteSemaphore( 01545 _In_ _Post_ptr_invalid_ HSEMAPHORE hsem); 01546 01547 WIN32KAPI 01548 BOOL 01549 APIENTRY 01550 EngDeleteSurface( 01551 _In_ _Post_ptr_invalid_ HSURF hsurf); 01552 01553 WIN32KAPI 01554 VOID 01555 APIENTRY 01556 EngDeleteWnd( 01557 _In_ _Post_ptr_invalid_ WNDOBJ *pwo); 01558 01559 WIN32KAPI 01560 DWORD 01561 APIENTRY 01562 EngDeviceIoControl( 01563 _In_ HANDLE hDevice, 01564 _In_ DWORD dwIoControlCode, 01565 _In_opt_bytecount_(cjInBufferSize) LPVOID lpInBuffer, 01566 _In_ DWORD cjInBufferSize, 01567 _Out_opt_bytecap_(cjOutBufferSize) LPVOID lpOutBuffer, 01568 _In_ DWORD cjOutBufferSize, 01569 _Out_ LPDWORD lpBytesReturned); 01570 01571 #define DM_DEFAULT 0x00000001 01572 #define DM_MONOCHROME 0x00000002 01573 01574 WIN32KAPI 01575 ULONG 01576 APIENTRY 01577 EngDitherColor( 01578 _In_ HDEV hdev, 01579 _In_ ULONG iMode, 01580 _In_ ULONG rgb, 01581 _When_(iMode == DM_DEFAULT, _Out_writes_bytes_(16*8)) 01582 _When_(iMode == DM_MONOCHROME, _Out_writes_bytes_(8)) 01583 ULONG *pul); 01584 01585 WIN32KAPI 01586 BOOL 01587 APIENTRY 01588 EngEnumForms( 01589 _In_ HANDLE hPrinter, 01590 _In_ DWORD Level, 01591 _Out_writes_bytes_opt_(cbBuf) LPBYTE pForm, 01592 _In_ DWORD cbBuf, 01593 _Out_ LPDWORD pcbNeeded, 01594 _Out_ LPDWORD pcReturned); 01595 01596 WIN32KAPI 01597 BOOL 01598 APIENTRY 01599 EngEraseSurface( 01600 _In_ SURFOBJ *pso, 01601 _In_ RECTL *prcl, 01602 _In_ ULONG iColor); 01603 01604 WIN32KAPI 01605 BOOL 01606 APIENTRY 01607 EngFillPath( 01608 _Inout_ SURFOBJ *pso, 01609 _In_ PATHOBJ *ppo, 01610 _In_ CLIPOBJ *pco, 01611 _In_ BRUSHOBJ *pbo, 01612 _In_ POINTL *pptlBrushOrg, 01613 _In_ MIX mix, 01614 _In_ FLONG flOptions); 01615 01616 WIN32KAPI 01617 PVOID 01618 APIENTRY 01619 EngFindImageProcAddress( 01620 _In_ HANDLE hModule, 01621 _In_ LPSTR lpProcName); 01622 01623 WIN32KAPI 01624 PVOID 01625 APIENTRY 01626 EngFindResource( 01627 _In_ HANDLE h, 01628 _In_ INT iName, 01629 _In_ INT iType, 01630 _Out_ PULONG pulSize); 01631 01632 _Must_inspect_result_ 01633 _Ret_opt_bytecap_(cjSize) 01634 WIN32KAPI 01635 PVOID 01636 APIENTRY 01637 EngFntCacheAlloc( 01638 _In_ ULONG ulFastCheckSum, 01639 _In_ ULONG cjSize); 01640 01641 /* EngFntCacheFault.iFaultMode constants */ 01642 #define ENG_FNT_CACHE_READ_FAULT 0x00000001 01643 #define ENG_FNT_CACHE_WRITE_FAULT 0x00000002 01644 01645 WIN32KAPI 01646 VOID 01647 APIENTRY 01648 EngFntCacheFault( 01649 _In_ ULONG ulFastCheckSum, 01650 _In_ ULONG iFaultMode); 01651 01652 WIN32KAPI 01653 PVOID 01654 APIENTRY 01655 EngFntCacheLookUp( 01656 _In_ ULONG FastCheckSum, 01657 _Out_ ULONG *pulSize); 01658 01659 #ifdef USERMODE_DRIVER 01660 01661 #define EngFreeMem(p) GlobalFree((HGLOBAL) (p)) 01662 #define EngFreePrivateUserMem( psl, p) GlobalFree((HGLOBAL) (p)) 01663 #define EngFreeUserMem(p) GlobalFree((HGLOBAL) (p)) 01664 01665 #else /* !USERMODE_DRIVER */ 01666 01667 WIN32KAPI 01668 VOID 01669 APIENTRY 01670 EngFreeMem( 01671 _In_ _Post_ptr_invalid_ PVOID pv); 01672 01673 WIN32KAPI 01674 VOID 01675 APIENTRY 01676 EngFreePrivateUserMem( 01677 _In_ PDD_SURFACE_LOCAL psl, 01678 _In_ _Post_ptr_invalid_ PVOID pv); 01679 01680 WIN32KAPI 01681 VOID 01682 APIENTRY 01683 EngFreeUserMem( 01684 _In_ _Post_ptr_invalid_ PVOID pv); 01685 01686 #endif /* !USERMODE_DRIVER */ 01687 01688 WIN32KAPI 01689 VOID 01690 APIENTRY 01691 EngFreeModule( 01692 _In_ HANDLE h); 01693 01694 01695 WIN32KAPI 01696 VOID 01697 APIENTRY 01698 EngGetCurrentCodePage( 01699 _Out_ PUSHORT OemCodePage, 01700 _Out_ PUSHORT AnsiCodePage); 01701 01702 WIN32KAPI 01703 HANDLE 01704 APIENTRY 01705 EngGetCurrentProcessId(VOID); 01706 01707 WIN32KAPI 01708 HANDLE 01709 APIENTRY 01710 EngGetCurrentThreadId(VOID); 01711 01712 _Must_inspect_result_ _Ret_z_ 01713 WIN32KAPI 01714 LPWSTR 01715 APIENTRY 01716 EngGetDriverName( 01717 _In_ HDEV hdev); 01718 01719 WIN32KAPI 01720 BOOL 01721 APIENTRY 01722 EngGetFileChangeTime( 01723 _In_ HANDLE h, 01724 _Out_ LARGE_INTEGER *pChangeTime); 01725 01726 WIN32KAPI 01727 BOOL 01728 APIENTRY 01729 EngGetFilePath( 01730 _In_ HANDLE h, 01731 _Out_ WCHAR (*pDest)[MAX_PATH+1]); 01732 01733 WIN32KAPI 01734 BOOL 01735 APIENTRY 01736 EngGetForm( 01737 _In_ HANDLE hPrinter, 01738 _In_ LPWSTR pFormName, 01739 _In_ DWORD Level, 01740 _In_reads_bytes_opt_(cbBuf) LPBYTE pForm, 01741 _In_ DWORD cbBuf, 01742 _Out_ LPDWORD pcbNeeded); 01743 01744 #ifdef USERMODE_DRIVER 01745 #define EngGetLastError GetLastError 01746 #else 01747 WIN32KAPI 01748 ULONG 01749 APIENTRY 01750 EngGetLastError(VOID); 01751 #endif 01752 01753 WIN32KAPI 01754 BOOL 01755 APIENTRY 01756 EngGetPrinter( 01757 _In_ HANDLE hPrinter, 01758 _In_ DWORD dwLevel, 01759 _Out_writes_bytes_opt_(cbBuf) LPBYTE pPrinter, 01760 _In_ DWORD cbBuf, 01761 _Out_ LPDWORD pcbNeeded); 01762 01763 WIN32KAPI 01764 DWORD 01765 APIENTRY 01766 EngGetPrinterData( 01767 _In_ HANDLE hPrinter, 01768 _In_ LPWSTR pValueName, 01769 _Out_opt_ LPDWORD pType, 01770 _Out_writes_bytes_opt_(cjSize) LPBYTE pData, 01771 _In_ DWORD cjSize, 01772 _Out_ LPDWORD pcjNeeded); 01773 01774 WIN32KAPI 01775 LPWSTR 01776 APIENTRY 01777 EngGetPrinterDataFileName( 01778 _In_ HDEV hdev); 01779 01780 WIN32KAPI 01781 BOOL 01782 APIENTRY 01783 EngGetPrinterDriver( 01784 _In_ HANDLE hPrinter, 01785 _In_opt_ LPWSTR pEnvironment, 01786 _In_ DWORD dwLevel, 01787 _Out_writes_bytes_opt_(cjBufSize) BYTE *lpbDrvInfo, 01788 _In_ DWORD cjBufSize, 01789 _Out_ DWORD *pcjNeeded); 01790 01791 WIN32KAPI 01792 HANDLE 01793 APIENTRY 01794 EngGetProcessHandle(VOID); 01795 01796 WIN32KAPI 01797 BOOL 01798 APIENTRY 01799 EngGetType1FontList( 01800 _In_ HDEV hdev, 01801 _Out_writes_bytes_opt_(cjType1Buffer) TYPE1_FONT *pType1Buffer, 01802 _In_ ULONG cjType1Buffer, 01803 _Out_ PULONG pulLocalFonts, 01804 _Out_ PULONG pulRemoteFonts, 01805 _Out_ LARGE_INTEGER *pLastModified); 01806 01807 WIN32KAPI 01808 BOOL 01809 APIENTRY 01810 EngGradientFill( 01811 _Inout_ SURFOBJ *psoDest, 01812 _In_ CLIPOBJ *pco, 01813 _In_opt_ XLATEOBJ *pxlo, 01814 _In_ TRIVERTEX *pVertex, 01815 _In_ ULONG nVertex, 01816 _In_ PVOID pMesh, 01817 _In_ ULONG nMesh, 01818 _In_ RECTL *prclExtents, 01819 _In_ POINTL *pptlDitherOrg, 01820 _In_ ULONG ulMode); 01821 01822 /* EngHangNotification return values */ 01823 #define EHN_RESTORED 0x00000000 01824 #define EHN_ERROR 0x00000001 01825 01826 WIN32KAPI 01827 ULONG 01828 APIENTRY 01829 EngHangNotification( 01830 _In_ HDEV hDev, 01831 _Reserved_ PVOID Reserved); 01832 01833 WIN32KAPI 01834 BOOL 01835 APIENTRY 01836 EngInitializeSafeSemaphore( 01837 _Out_ ENGSAFESEMAPHORE *pssem); 01838 01839 WIN32KAPI 01840 BOOL 01841 APIENTRY 01842 EngIsSemaphoreOwned( 01843 _In_ HSEMAPHORE hsem); 01844 01845 WIN32KAPI 01846 BOOL 01847 APIENTRY 01848 EngIsSemaphoreOwnedByCurrentThread( 01849 _In_ HSEMAPHORE hsem); 01850 01851 WIN32KAPI 01852 BOOL 01853 APIENTRY 01854 EngLineTo( 01855 _Inout_ SURFOBJ *pso, 01856 _In_ CLIPOBJ *pco, 01857 _In_ BRUSHOBJ *pbo, 01858 _In_ LONG x1, 01859 _In_ LONG y1, 01860 _In_ LONG x2, 01861 _In_ LONG y2, 01862 _In_opt_ RECTL *prclBounds, 01863 _In_ MIX mix); 01864 01865 WIN32KAPI 01866 HANDLE 01867 APIENTRY 01868 EngLoadImage( 01869 _In_ LPWSTR pwszDriver); 01870 01871 WIN32KAPI 01872 HANDLE 01873 APIENTRY 01874 EngLoadModule( 01875 _In_ LPWSTR pwsz); 01876 01877 WIN32KAPI 01878 HANDLE 01879 APIENTRY 01880 EngLoadModuleForWrite( 01881 _In_ LPWSTR pwsz, 01882 _In_ ULONG cjSizeOfModule); 01883 01884 WIN32KAPI 01885 PDD_SURFACE_LOCAL 01886 APIENTRY 01887 EngLockDirectDrawSurface( 01888 _In_ HANDLE hSurface); 01889 01890 WIN32KAPI 01891 DRIVEROBJ* 01892 APIENTRY 01893 EngLockDriverObj( 01894 _In_ HDRVOBJ hdo); 01895 01896 WIN32KAPI 01897 SURFOBJ* 01898 APIENTRY 01899 EngLockSurface( 01900 _In_ HSURF hsurf); 01901 01902 WIN32KAPI 01903 BOOL 01904 APIENTRY 01905 EngLpkInstalled(VOID); 01906 01907 WIN32KAPI 01908 PEVENT 01909 APIENTRY 01910 EngMapEvent( 01911 _In_ HDEV hDev, 01912 _In_ HANDLE hUserObject, 01913 _Reserved_ PVOID Reserved1, 01914 _Reserved_ PVOID Reserved2, 01915 _Reserved_ PVOID Reserved3); 01916 01917 _Success_(return != 0) 01918 _When_(cjSize != 0, _At_(return, _Out_writes_bytes_(cjSize))) 01919 WIN32KAPI 01920 PVOID 01921 APIENTRY 01922 EngMapFile( 01923 _In_ LPWSTR pwsz, 01924 _In_ ULONG cjSize, 01925 _Out_ ULONG_PTR *piFile); 01926 01927 WIN32KAPI 01928 BOOL 01929 APIENTRY 01930 EngMapFontFile( 01931 _In_ ULONG_PTR iFile, 01932 _Outptr_result_bytebuffer_(*pcjBuf) PULONG *ppjBuf, 01933 _Out_ ULONG *pcjBuf); 01934 01935 WIN32KAPI 01936 BOOL 01937 APIENTRY 01938 EngMapFontFileFD( 01939 _In_ ULONG_PTR iFile, 01940 _Outptr_result_bytebuffer_(*pcjBuf) PULONG *ppjBuf, 01941 _Out_ ULONG *pcjBuf); 01942 01943 WIN32KAPI 01944 PVOID 01945 APIENTRY 01946 EngMapModule( 01947 _In_ HANDLE h, 01948 _Out_ PULONG pSize); 01949 01950 WIN32KAPI 01951 BOOL 01952 APIENTRY 01953 EngMarkBandingSurface( 01954 _In_ HSURF hsurf); 01955 01956 /* EngModifySurface.flSurface constants */ 01957 #define MS_NOTSYSTEMMEMORY 0x00000001 01958 #define MS_SHAREDACCESS 0x00000002 01959 01960 WIN32KAPI 01961 BOOL 01962 APIENTRY 01963 EngModifySurface( 01964 _In_ HSURF hsurf, 01965 _In_ HDEV hdev, 01966 _In_ FLONG flHooks, 01967 _In_ FLONG flSurface, 01968 _In_ DHSURF dhsurf, 01969 _In_ PVOID pvScan0, 01970 _In_ LONG lDelta, 01971 _Reserved_ PVOID pvReserved); 01972 01973 WIN32KAPI 01974 VOID 01975 APIENTRY 01976 EngMovePointer( 01977 _In_ SURFOBJ *pso, 01978 _In_ LONG x, 01979 _In_ LONG y, 01980 _In_ RECTL *prcl); 01981 01982 #ifdef USERMODE_DRIVER 01983 #define EngMulDiv MulDiv 01984 #else /* !USERMODE_DRIVER */ 01985 WIN32KAPI 01986 INT 01987 APIENTRY 01988 EngMulDiv( 01989 _In_ INT a, 01990 _In_ INT b, 01991 _In_ INT c); 01992 #endif /* !USERMODE_DRIVER */ 01993 01994 WIN32KAPI 01995 VOID 01996 APIENTRY 01997 EngMultiByteToUnicodeN( 01998 _Out_writes_bytes_to_(MaxBytesInUnicodeString, *BytesInUnicodeString) LPWSTR UnicodeString, 01999 _In_ ULONG MaxBytesInUnicodeString, 02000 _Out_opt_ PULONG BytesInUnicodeString, 02001 _In_reads_bytes_(BytesInMultiByteString) PCHAR MultiByteString, 02002 _In_ ULONG BytesInMultiByteString); 02003 02004 WIN32KAPI 02005 INT 02006 APIENTRY 02007 EngMultiByteToWideChar( 02008 _In_ UINT CodePage, 02009 _Out_writes_bytes_opt_(cjWideCharString) LPWSTR WideCharString, 02010 _In_ INT cjWideCharString, 02011 _In_reads_bytes_opt_(cjMultiByteString) LPSTR MultiByteString, 02012 _In_ INT cjMultiByteString); 02013 02014 WIN32KAPI 02015 BOOL 02016 APIENTRY 02017 EngPaint( 02018 _In_ SURFOBJ *pso, 02019 _In_ CLIPOBJ *pco, 02020 _In_ BRUSHOBJ *pbo, 02021 _In_ POINTL *pptlBrushOrg, 02022 _In_ MIX mix); 02023 02024 WIN32KAPI 02025 BOOL 02026 APIENTRY 02027 EngPlgBlt( 02028 _In_ SURFOBJ *psoTrg, 02029 _In_ SURFOBJ *psoSrc, 02030 _In_opt_ SURFOBJ *psoMsk, 02031 _In_ CLIPOBJ *pco, 02032 _In_opt_ XLATEOBJ *pxlo, 02033 _In_ COLORADJUSTMENT *pca, 02034 _In_ POINTL *pptlBrushOrg, 02035 _In_ POINTFIX *pptfx, 02036 _In_ RECTL *prcl, 02037 _When_(psoMsk, _In_) POINTL *pptl, 02038 _In_ ULONG iMode); 02039 02040 WIN32KAPI 02041 VOID 02042 APIENTRY 02043 EngProbeForRead( 02044 _In_reads_bytes_(Length) PVOID Address, 02045 #if (NTDDI_VERSION <= NTDDI_WINXP) 02046 _In_ ULONG Length, 02047 #else 02048 _In_ SIZE_T Length, 02049 #endif 02050 _In_ ULONG Alignment); 02051 02052 WIN32KAPI 02053 VOID 02054 APIENTRY 02055 EngProbeForReadAndWrite( 02056 _Inout_updates_bytes_(Length) PVOID Address, 02057 #if (NTDDI_VERSION <= NTDDI_WINXP) 02058 _In_ ULONG Length, 02059 #else 02060 _In_ SIZE_T Length, 02061 #endif 02062 _In_ ULONG Alignment); 02063 02064 typedef enum _ENG_DEVICE_ATTRIBUTE { 02065 QDA_RESERVED = 0, 02066 QDA_ACCELERATION_LEVEL 02067 } ENG_DEVICE_ATTRIBUTE; 02068 02069 WIN32KAPI 02070 BOOL 02071 APIENTRY 02072 EngQueryDeviceAttribute( 02073 _In_ HDEV hdev, 02074 _In_ ENG_DEVICE_ATTRIBUTE devAttr, 02075 _In_reads_bytes_(cjInSize) PVOID pvIn, 02076 _In_ ULONG cjInSize, 02077 _Out_writes_bytes_(cjOutSize) PVOID pvOut, 02078 _In_ ULONG cjOutSize); 02079 02080 WIN32KAPI 02081 LARGE_INTEGER 02082 APIENTRY 02083 EngQueryFileTimeStamp( 02084 _In_ LPWSTR pwsz); 02085 02086 WIN32KAPI 02087 VOID 02088 APIENTRY 02089 EngQueryLocalTime( 02090 _Out_ PENG_TIME_FIELDS ptf); 02091 02092 WIN32KAPI 02093 ULONG 02094 APIENTRY 02095 EngQueryPalette( 02096 _In_ HPALETTE hPal, 02097 _Out_ ULONG *piMode, 02098 _In_ ULONG cColors, 02099 _Out_writes_opt_(cColors) ULONG *pulColors); 02100 02101 WIN32KAPI 02102 VOID 02103 APIENTRY 02104 EngQueryPerformanceCounter( 02105 _Out_ LONGLONG *pPerformanceCount); 02106 02107 WIN32KAPI 02108 VOID 02109 APIENTRY 02110 EngQueryPerformanceFrequency( 02111 _Out_ LONGLONG *pFrequency); 02112 02113 typedef enum _ENG_SYSTEM_ATTRIBUTE { 02114 EngProcessorFeature = 1, 02115 EngNumberOfProcessors, 02116 EngOptimumAvailableUserMemory, 02117 EngOptimumAvailableSystemMemory, 02118 } ENG_SYSTEM_ATTRIBUTE; 02119 02120 #define QSA_MMX 0x00000100 02121 #define QSA_SSE 0x00002000 02122 #define QSA_3DNOW 0x00004000 02123 02124 WIN32KAPI 02125 BOOL 02126 APIENTRY 02127 EngQuerySystemAttribute( 02128 _In_ ENG_SYSTEM_ATTRIBUTE CapNum, 02129 _Out_ PDWORD pCapability); 02130 02131 WIN32KAPI 02132 LONG 02133 APIENTRY 02134 EngReadStateEvent( 02135 _In_ PEVENT pEvent); 02136 02137 WIN32KAPI 02138 VOID 02139 APIENTRY 02140 EngReleaseSemaphore( 02141 _In_ HSEMAPHORE hsem); 02142 02143 WIN32KAPI 02144 BOOL 02145 APIENTRY 02146 EngRestoreFloatingPointState( 02147 _In_ VOID *pBuffer); 02148 02149 WIN32KAPI 02150 ULONG 02151 APIENTRY 02152 EngSaveFloatingPointState( 02153 _Out_ VOID *pBuffer, 02154 _In_ ULONG cjBufferSize); 02155 02156 WIN32KAPI 02157 HANDLE 02158 APIENTRY 02159 EngSecureMem( 02160 _In_reads_bytes_(cjLength) PVOID Address, 02161 _In_ ULONG cjLength); 02162 02163 WIN32KAPI 02164 LONG 02165 APIENTRY 02166 EngSetEvent( 02167 _In_ PEVENT pEvent); 02168 02169 #ifdef USERMODE_DRIVER 02170 #define EngSetLastError SetLastError 02171 #else 02172 WIN32KAPI 02173 VOID 02174 APIENTRY 02175 EngSetLastError( 02176 _In_ ULONG iError); 02177 #endif 02178 02179 WIN32KAPI 02180 ULONG 02181 APIENTRY 02182 EngSetPointerShape( 02183 _In_ SURFOBJ *pso, 02184 _In_opt_ SURFOBJ *psoMask, 02185 _In_opt_ SURFOBJ *psoColor, 02186 _In_opt_ XLATEOBJ *pxlo, 02187 _In_ LONG xHot, 02188 _In_ LONG yHot, 02189 _In_ LONG x, 02190 _In_ LONG y, 02191 _In_ RECTL *prcl, 02192 _In_ FLONG fl); 02193 02194 WIN32KAPI 02195 BOOL 02196 APIENTRY 02197 EngSetPointerTag( 02198 _In_ HDEV hdev, 02199 _In_opt_ SURFOBJ *psoMask, 02200 _In_opt_ SURFOBJ *psoColor, 02201 _Reserved_ XLATEOBJ *pxlo, 02202 _In_ FLONG fl); 02203 02204 WIN32KAPI 02205 DWORD 02206 APIENTRY 02207 EngSetPrinterData( 02208 _In_ HANDLE hPrinter, 02209 _In_ LPWSTR pType, 02210 _In_ DWORD dwType, 02211 _In_reads_bytes_(cjPrinterData) LPBYTE lpbPrinterData, 02212 _In_ DWORD cjPrinterData); 02213 02214 typedef int (CDECL *SORTCOMP)(const void *pv1, const void *pv2); 02215 02216 WIN32KAPI 02217 VOID 02218 APIENTRY 02219 EngSort( 02220 _Inout_updates_bytes_(c * cjElem) PBYTE pjBuf, 02221 _In_ ULONG c, 02222 _In_ ULONG cjElem, 02223 _In_ SORTCOMP pfnComp); 02224 02225 WIN32KAPI 02226 BOOL 02227 APIENTRY 02228 EngStretchBlt( 02229 _In_ SURFOBJ *psoDest, 02230 _In_ SURFOBJ *psoSrc, 02231 _In_opt_ SURFOBJ *psoMask, 02232 _In_opt_ CLIPOBJ *pco, 02233 _In_opt_ XLATEOBJ *pxlo, 02234 _In_opt_ COLORADJUSTMENT *pca, 02235 _In_ POINTL *pptlHTOrg, 02236 _In_ RECTL *prclDest, 02237 _In_ RECTL *prclSrc, 02238 _When_(psoMask, _In_) POINTL *pptlMask, 02239 _In_ ULONG iMode); 02240 02241 WIN32KAPI 02242 BOOL 02243 APIENTRY 02244 EngStretchBltROP( 02245 _In_ SURFOBJ *psoDest, 02246 _In_ SURFOBJ *psoSrc, 02247 _In_opt_ SURFOBJ *psoMask, 02248 _In_opt_ CLIPOBJ *pco, 02249 _In_opt_ XLATEOBJ *pxlo, 02250 _In_opt_ COLORADJUSTMENT *pca, 02251 _In_ POINTL *pptlHTOrg, 02252 _In_ RECTL *prclDest, 02253 _In_ RECTL *prclSrc, 02254 _When_(psoMask, _In_) POINTL *pptlMask, 02255 _In_ ULONG iMode, 02256 _In_ BRUSHOBJ *pbo, 02257 _In_ DWORD rop4); 02258 02259 WIN32KAPI 02260 BOOL 02261 APIENTRY 02262 EngStrokeAndFillPath( 02263 _Inout_ SURFOBJ *pso, 02264 _In_ PATHOBJ *ppo, 02265 _In_ CLIPOBJ *pco, 02266 _In_ XFORMOBJ *pxo, 02267 _In_ BRUSHOBJ *pboStroke, 02268 _In_ LINEATTRS *plineattrs, 02269 _In_ BRUSHOBJ *pboFill, 02270 _In_ POINTL *pptlBrushOrg, 02271 _In_ MIX mixFill, 02272 _In_ FLONG flOptions); 02273 02274 WIN32KAPI 02275 BOOL 02276 APIENTRY 02277 EngStrokePath( 02278 _In_ SURFOBJ *pso, 02279 _In_ PATHOBJ *ppo, 02280 _In_ CLIPOBJ *pco, 02281 _In_ XFORMOBJ *pxo, 02282 _In_ BRUSHOBJ *pbo, 02283 _In_ POINTL *pptlBrushOrg, 02284 _In_ LINEATTRS *plineattrs, 02285 _In_ MIX mix); 02286 02287 WIN32KAPI 02288 BOOL 02289 APIENTRY 02290 EngTextOut( 02291 _In_ SURFOBJ *pso, 02292 _In_ STROBJ *pstro, 02293 _In_ FONTOBJ *pfo, 02294 _In_ CLIPOBJ *pco, 02295 _Null_ RECTL *prclExtra, 02296 _In_opt_ RECTL *prclOpaque, 02297 _In_ BRUSHOBJ *pboFore, 02298 _In_ BRUSHOBJ *pboOpaque, 02299 _In_ POINTL *pptlOrg, 02300 _In_ MIX mix); 02301 02302 WIN32KAPI 02303 BOOL 02304 APIENTRY 02305 EngTransparentBlt( 02306 _In_ SURFOBJ *psoDst, 02307 _In_ SURFOBJ *psoSrc, 02308 _In_opt_ CLIPOBJ *pco, 02309 _In_opt_ XLATEOBJ *pxlo, 02310 _In_ RECTL *prclDst, 02311 _In_ RECTL *prclSrc, 02312 _In_ ULONG iTransColor, 02313 _In_ ULONG ulReserved); 02314 02315 WIN32KAPI 02316 VOID 02317 APIENTRY 02318 EngUnicodeToMultiByteN( 02319 _Out_writes_bytes_to_(cjMultiByteBuf, *pcjMultiByteString) PCHAR pchMultiByteString, 02320 _In_ ULONG cjMultiByteBuf, 02321 _Out_opt_ PULONG pcjMultiByteString, 02322 _In_reads_bytes_(cjUnicodeString) PWSTR pwszUnicodeString, 02323 _In_ ULONG cjUnicodeString); 02324 02325 WIN32KAPI 02326 VOID 02327 APIENTRY 02328 EngUnloadImage( 02329 _In_ HANDLE hModule); 02330 02331 WIN32KAPI 02332 BOOL 02333 APIENTRY 02334 EngUnlockDirectDrawSurface( 02335 _In_ PDD_SURFACE_LOCAL pSurface); 02336 02337 WIN32KAPI 02338 BOOL 02339 APIENTRY 02340 EngUnlockDriverObj( 02341 _In_ _Post_ptr_invalid_ HDRVOBJ hdo); 02342 02343 WIN32KAPI 02344 VOID 02345 APIENTRY 02346 EngUnlockSurface( 02347 _In_ _Post_ptr_invalid_ SURFOBJ *pso); 02348 02349 WIN32KAPI 02350 BOOL 02351 APIENTRY 02352 EngUnmapEvent( 02353 _In_ PEVENT pEvent); 02354 02355 WIN32KAPI 02356 BOOL 02357 APIENTRY 02358 EngUnmapFile( 02359 _In_ ULONG_PTR iFile); 02360 02361 WIN32KAPI 02362 VOID 02363 APIENTRY 02364 EngUnmapFontFile( 02365 _In_ ULONG_PTR iFile); 02366 02367 WIN32KAPI 02368 VOID 02369 APIENTRY 02370 EngUnmapFontFileFD( 02371 _In_ ULONG_PTR iFile); 02372 02373 WIN32KAPI 02374 VOID 02375 APIENTRY 02376 EngUnsecureMem( 02377 _In_ HANDLE hSecure); 02378 02379 WIN32KAPI 02380 BOOL 02381 APIENTRY 02382 EngWaitForSingleObject( 02383 _In_ PEVENT pEvent, 02384 _In_opt_ PLARGE_INTEGER pTimeOut); 02385 02386 WIN32KAPI 02387 INT 02388 APIENTRY 02389 EngWideCharToMultiByte( 02390 _In_ UINT CodePage, 02391 _In_reads_bytes_opt_(cjWideCharString) LPWSTR pwszWideCharString, 02392 _In_ INT cjWideCharString, 02393 _Out_z_bytecap_(cjMultiByteString) LPSTR pszMultiByteString, 02394 _In_ INT cjMultiByteString); 02395 02396 WIN32KAPI 02397 BOOL 02398 APIENTRY 02399 EngWritePrinter( 02400 _In_ HANDLE hPrinter, 02401 _In_reads_bytes_(cjBuf) LPVOID pvBuf, 02402 _In_ DWORD cjBuf, 02403 _Out_ LPDWORD pcWritten); 02404 02405 #if defined(_X86_) && !defined(USERMODE_DRIVER) 02406 WIN32KAPI 02407 VOID 02408 APIENTRY 02409 FLOATOBJ_Add( 02410 _Inout_ PFLOATOBJ pf, 02411 _In_ PFLOATOBJ pf1); 02412 02413 WIN32KAPI 02414 VOID 02415 APIENTRY 02416 FLOATOBJ_AddFloat( 02417 _Inout_ PFLOATOBJ pf, 02418 _In_ FLOATL f); 02419 02420 WIN32KAPI 02421 VOID 02422 APIENTRY 02423 FLOATOBJ_AddLong( 02424 _Inout_ PFLOATOBJ pf, 02425 _In_ LONG l); 02426 02427 WIN32KAPI 02428 VOID 02429 APIENTRY 02430 FLOATOBJ_Div( 02431 _Inout_ PFLOATOBJ pf, 02432 _In_ PFLOATOBJ pf1); 02433 02434 WIN32KAPI 02435 VOID 02436 APIENTRY 02437 FLOATOBJ_DivFloat( 02438 _Inout_ PFLOATOBJ pf, 02439 _In_ FLOATL f); 02440 02441 WIN32KAPI 02442 VOID 02443 APIENTRY 02444 FLOATOBJ_DivLong( 02445 _Inout_ PFLOATOBJ pf, 02446 _In_ LONG l); 02447 02448 WIN32KAPI 02449 BOOL 02450 APIENTRY 02451 FLOATOBJ_Equal( 02452 _In_ PFLOATOBJ pf, 02453 _In_ PFLOATOBJ pf1); 02454 02455 WIN32KAPI 02456 BOOL 02457 APIENTRY 02458 FLOATOBJ_EqualLong( 02459 _In_ PFLOATOBJ pf, 02460 _In_ LONG l); 02461 02462 WIN32KAPI 02463 LONG 02464 APIENTRY 02465 FLOATOBJ_GetFloat( 02466 _In_ PFLOATOBJ pf); 02467 02468 WIN32KAPI 02469 LONG 02470 APIENTRY 02471 FLOATOBJ_GetLong( 02472 _In_ PFLOATOBJ pf); 02473 02474 WIN32KAPI 02475 BOOL 02476 APIENTRY 02477 FLOATOBJ_GreaterThan( 02478 _In_ PFLOATOBJ pf, 02479 _In_ PFLOATOBJ pf1); 02480 02481 WIN32KAPI 02482 BOOL 02483 APIENTRY 02484 FLOATOBJ_GreaterThanLong( 02485 _In_ PFLOATOBJ pf, 02486 _In_ LONG l); 02487 02488 WIN32KAPI 02489 BOOL 02490 APIENTRY 02491 FLOATOBJ_LessThan( 02492 _In_ PFLOATOBJ pf, 02493 _In_ PFLOATOBJ pf1); 02494 02495 WIN32KAPI 02496 BOOL 02497 APIENTRY 02498 FLOATOBJ_LessThanLong( 02499 _In_ PFLOATOBJ pf, 02500 _In_ LONG l); 02501 02502 WIN32KAPI 02503 VOID 02504 APIENTRY 02505 FLOATOBJ_Mul( 02506 _Inout_ PFLOATOBJ pf, 02507 _In_ PFLOATOBJ pf1); 02508 02509 WIN32KAPI 02510 VOID 02511 APIENTRY 02512 FLOATOBJ_MulFloat( 02513 _Inout_ PFLOATOBJ pf, 02514 _In_ FLOATL f); 02515 02516 WIN32KAPI 02517 VOID 02518 APIENTRY 02519 FLOATOBJ_MulLong( 02520 _Inout_ PFLOATOBJ pf, 02521 _In_ LONG l); 02522 02523 WIN32KAPI 02524 VOID 02525 APIENTRY 02526 FLOATOBJ_Neg( 02527 _Inout_ PFLOATOBJ pf); 02528 02529 WIN32KAPI 02530 VOID 02531 APIENTRY 02532 FLOATOBJ_SetFloat( 02533 _Out_ PFLOATOBJ pf, 02534 _In_ FLOATL f); 02535 02536 WIN32KAPI 02537 VOID 02538 APIENTRY 02539 FLOATOBJ_SetLong( 02540 _Out_ PFLOATOBJ pf, 02541 _In_ LONG l); 02542 02543 WIN32KAPI 02544 VOID 02545 APIENTRY 02546 FLOATOBJ_Sub( 02547 _Inout_ PFLOATOBJ pf, 02548 _In_ PFLOATOBJ pf1); 02549 02550 WIN32KAPI 02551 VOID 02552 APIENTRY 02553 FLOATOBJ_SubFloat( 02554 _Inout_ PFLOATOBJ pf, 02555 _In_ FLOATL f); 02556 02557 WIN32KAPI 02558 VOID 02559 APIENTRY 02560 FLOATOBJ_SubLong( 02561 _Inout_ PFLOATOBJ pf, 02562 _In_ LONG l); 02563 02564 #else 02565 02566 #define FLOATOBJ_SetFloat(pf, f) {*(pf) = (f);} 02567 #define FLOATOBJ_SetLong(pf, l) {*(pf) = (FLOAT)(l);} 02568 #define FLOATOBJ_GetFloat(pf) (*(PULONG)(pf)) 02569 #define FLOATOBJ_GetLong(pf) ((LONG)*(pf)) 02570 #define FLOATOBJ_Add(pf, pf1) {*(pf) += *(pf1);} 02571 #define FLOATOBJ_AddFloat(pf, f) {*(pf) += (f);} 02572 #define FLOATOBJ_AddLong(pf, l) {*(pf) += (l);} 02573 #define FLOATOBJ_Sub(pf, pf1) {*(pf) -= *(pf1);} 02574 #define FLOATOBJ_SubFloat(pf, f) {*(pf) -= (f);} 02575 #define FLOATOBJ_SubLong(pf, l) {*(pf) -= (l);} 02576 #define FLOATOBJ_Mul(pf, pf1) {*(pf) *= *(pf1);} 02577 #define FLOATOBJ_MulFloat(pf, f) {*(pf) *= (f);} 02578 #define FLOATOBJ_MulLong(pf, l) {*(pf) *= (l);} 02579 #define FLOATOBJ_Div(pf, pf1) {*(pf) /= *(pf1);} 02580 #define FLOATOBJ_DivFloat(pf, f) {*(pf) /= (f);} 02581 #define FLOATOBJ_DivLong(pf, l) {*(pf) /= (l);} 02582 #define FLOATOBJ_Neg(pf) {*(pf) = -(*(pf));} 02583 #define FLOATOBJ_Equal(pf, pf1) (*(pf) == *(pf1)) 02584 #define FLOATOBJ_GreaterThan(pf, pf1) (*(pf) > *(pf1)) 02585 #define FLOATOBJ_LessThan(pf, pf1) (*(pf) < *(pf1)) 02586 #define FLOATOBJ_EqualLong(pf, l) (*(pf) == (FLOAT)(l)) 02587 #define FLOATOBJ_GreaterThanLong(pf, l) (*(pf) > (FLOAT)(l)) 02588 #define FLOATOBJ_LessThanLong(pf, l) (*(pf) < (FLOAT)(l)) 02589 02590 #endif 02591 02592 WIN32KAPI 02593 ULONG 02594 APIENTRY 02595 FONTOBJ_cGetAllGlyphHandles( 02596 _In_ FONTOBJ *pfo, 02597 _Out_opt_bytecap_(return) HGLYPH *phg); 02598 02599 WIN32KAPI 02600 ULONG 02601 APIENTRY 02602 FONTOBJ_cGetGlyphs( 02603 _In_ FONTOBJ *pfo, 02604 _In_ ULONG iMode, 02605 _In_ ULONG cGlyph, 02606 _In_count_(cGlyph) HGLYPH *phg, 02607 _Out_ PVOID *ppvGlyph); 02608 02609 WIN32KAPI 02610 FD_GLYPHSET* 02611 APIENTRY 02612 FONTOBJ_pfdg( 02613 _In_ FONTOBJ *pfo); 02614 02615 WIN32KAPI 02616 IFIMETRICS* 02617 APIENTRY 02618 FONTOBJ_pifi( 02619 _In_ FONTOBJ *pfo); 02620 02621 _Ret_opt_bytecount_(*pcjTable) 02622 WIN32KAPI 02623 PBYTE 02624 APIENTRY 02625 FONTOBJ_pjOpenTypeTablePointer( 02626 _In_ FONTOBJ *pfo, 02627 _In_ ULONG ulTag, 02628 _Out_ ULONG *pcjTable); 02629 02630 WIN32KAPI 02631 PFD_GLYPHATTR 02632 APIENTRY 02633 FONTOBJ_pQueryGlyphAttrs( 02634 _In_ FONTOBJ *pfo, 02635 _In_ ULONG iMode); 02636 02637 _Ret_opt_bytecount_(*pcjFile) 02638 WIN32KAPI 02639 PVOID 02640 APIENTRY 02641 FONTOBJ_pvTrueTypeFontFile( 02642 _In_ FONTOBJ *pfo, 02643 _Out_ ULONG *pcjFile); 02644 02645 WIN32KAPI 02646 LPWSTR 02647 APIENTRY 02648 FONTOBJ_pwszFontFilePaths( 02649 _In_ FONTOBJ *pfo, 02650 _Out_ ULONG *pcwc); 02651 02652 WIN32KAPI 02653 XFORMOBJ* 02654 APIENTRY 02655 FONTOBJ_pxoGetXform( 02656 _In_ FONTOBJ *pfo); 02657 02658 WIN32KAPI 02659 VOID 02660 APIENTRY 02661 FONTOBJ_vGetInfo( 02662 _In_ FONTOBJ *pfo, 02663 _In_ ULONG cjSize, 02664 _Out_bytecap_(cjSize) FONTINFO *pfi); 02665 02666 #if (NTDDI_VERSION <= NTDDI_WINXP) 02667 GAMMA_TABLES* 02668 APIENTRY 02669 FONTOBJ_pGetGammaTables( 02670 _In_ FONTOBJ *pfo); 02671 #endif 02672 02673 WIN32KAPI 02674 LONG 02675 APIENTRY 02676 HT_ComputeRGBGammaTable( 02677 _In_ USHORT GammaTableEntries, 02678 _In_ USHORT GammaTableType, 02679 _In_ USHORT RedGamma, 02680 _In_ USHORT GreenGamma, 02681 _In_ USHORT BlueGamma, 02682 _Out_writes_bytes_(GammaTableEntries * 3) LPBYTE pGammaTable); 02683 02684 WIN32KAPI 02685 LONG 02686 APIENTRY 02687 HT_Get8BPPFormatPalette( 02688 _Out_opt_ LPPALETTEENTRY pPaletteEntry, 02689 _In_ USHORT RedGamma, 02690 _In_ USHORT GreenGamma, 02691 _In_ USHORT BlueGamma); 02692 02693 WIN32KAPI 02694 LONG 02695 APIENTRY 02696 HT_Get8BPPMaskPalette( 02697 _Out_opt_ LPPALETTEENTRY pPaletteEntry, 02698 _In_ BOOL Use8BPPMaskPal, 02699 _In_ BYTE CMYMask, 02700 _In_ USHORT RedGamma, 02701 _In_ USHORT GreenGamma, 02702 _In_ USHORT BlueGamma); 02703 02704 WIN32KAPI 02705 LONG 02706 APIENTRY 02707 HTUI_DeviceColorAdjustment( 02708 _In_ LPSTR pDeviceName, 02709 _Out_ PDEVHTADJDATA pDevHTAdjData); 02710 02711 WIN32KAPI 02712 ULONG 02713 APIENTRY 02714 PALOBJ_cGetColors( 02715 _In_ PALOBJ *ppalo, 02716 _In_ ULONG iStart, 02717 _In_ ULONG cColors, 02718 _Out_writes_(cColors) ULONG *pulColors); 02719 02720 WIN32KAPI 02721 BOOL 02722 APIENTRY 02723 PATHOBJ_bCloseFigure( 02724 _In_ PATHOBJ *ppo); 02725 02726 WIN32KAPI 02727 BOOL 02728 APIENTRY 02729 PATHOBJ_bEnum( 02730 _In_ PATHOBJ *ppo, 02731 _Out_ PATHDATA *ppd); 02732 02733 WIN32KAPI 02734 BOOL 02735 APIENTRY 02736 PATHOBJ_bEnumClipLines( 02737 _In_ PATHOBJ *ppo, 02738 _In_ ULONG cj, 02739 _Out_bytecap_(cj) CLIPLINE *pcl); 02740 02741 WIN32KAPI 02742 BOOL 02743 APIENTRY 02744 PATHOBJ_bMoveTo( 02745 _In_ PATHOBJ *ppo, 02746 _In_ POINTFIX ptfx); 02747 02748 WIN32KAPI 02749 BOOL 02750 APIENTRY 02751 PATHOBJ_bPolyBezierTo( 02752 _In_ PATHOBJ *ppo, 02753 _In_count_(cptfx) POINTFIX *pptfx, 02754 _In_ ULONG cptfx); 02755 02756 WIN32KAPI 02757 BOOL 02758 APIENTRY 02759 PATHOBJ_bPolyLineTo( 02760 _In_ PATHOBJ *ppo, 02761 _In_count_(cptfx) POINTFIX *pptfx, 02762 _In_ ULONG cptfx); 02763 02764 WIN32KAPI 02765 VOID 02766 APIENTRY 02767 PATHOBJ_vEnumStart( 02768 _Inout_ PATHOBJ *ppo); 02769 02770 WIN32KAPI 02771 VOID 02772 APIENTRY 02773 PATHOBJ_vEnumStartClipLines( 02774 _Inout_ PATHOBJ *ppo, 02775 _In_ CLIPOBJ *pco, 02776 _In_ SURFOBJ *pso, 02777 _In_ LINEATTRS *pla); 02778 02779 WIN32KAPI 02780 VOID 02781 APIENTRY 02782 PATHOBJ_vGetBounds( 02783 _In_ PATHOBJ *ppo, 02784 _Out_ PRECTFX prectfx); 02785 02786 WIN32KAPI 02787 BOOL 02788 APIENTRY 02789 STROBJ_bEnum( 02790 _Inout_ STROBJ *pstro, 02791 _Out_ ULONG *pc, 02792 _Out_ PGLYPHPOS *ppgpos); // FIXME_ size? 02793 02794 WIN32KAPI 02795 BOOL 02796 APIENTRY 02797 STROBJ_bEnumPositionsOnly( 02798 _In_ STROBJ *pstro, 02799 _Out_ ULONG *pc, 02800 _Out_ PGLYPHPOS *ppgpos); // FIXME_ size? 02801 02802 WIN32KAPI 02803 BOOL 02804 APIENTRY 02805 STROBJ_bGetAdvanceWidths( 02806 _In_ STROBJ *pso, 02807 _In_ ULONG iFirst, 02808 _In_ ULONG c, 02809 _Out_cap_(c) POINTQF *pptqD); 02810 02811 WIN32KAPI 02812 DWORD 02813 APIENTRY 02814 STROBJ_dwGetCodePage( 02815 _In_ STROBJ *pstro); 02816 02817 WIN32KAPI 02818 FIX 02819 APIENTRY 02820 STROBJ_fxBreakExtra( 02821 _In_ STROBJ *pstro); 02822 02823 WIN32KAPI 02824 FIX 02825 APIENTRY 02826 STROBJ_fxCharacterExtra( 02827 _In_ STROBJ *pstro); 02828 02829 WIN32KAPI 02830 VOID 02831 APIENTRY 02832 STROBJ_vEnumStart( 02833 _In_ STROBJ *pstro); 02834 02835 WIN32KAPI 02836 BOOL 02837 APIENTRY 02838 WNDOBJ_bEnum( 02839 _Inout_ WNDOBJ *pwo, 02840 _In_ ULONG cj, 02841 _Out_bytecap_(cj) ULONG *pul); 02842 02843 WIN32KAPI 02844 ULONG 02845 APIENTRY 02846 WNDOBJ_cEnumStart( 02847 _Inout_ WNDOBJ *pwo, 02848 _In_ ULONG iType, 02849 _In_ ULONG iDirection, 02850 _In_ ULONG cLimit); 02851 02852 WIN32KAPI 02853 VOID 02854 APIENTRY 02855 WNDOBJ_vSetConsumer( 02856 _Inout_ WNDOBJ *pwo, 02857 _In_ PVOID pvConsumer); 02858 02859 /* XFORMOBJ_bApplyXform.iMode constants */ 02860 #define XF_LTOL 0L 02861 #define XF_INV_LTOL 1L 02862 #define XF_LTOFX 2L 02863 #define XF_INV_FXTOL 3L 02864 02865 WIN32KAPI 02866 BOOL 02867 APIENTRY 02868 XFORMOBJ_bApplyXform( 02869 _In_ XFORMOBJ *pxo, 02870 _In_ ULONG iMode, 02871 _In_ ULONG cPoints, 02872 _In_reads_bytes_(cPoints * sizeof(POINTL)) PVOID pvIn, 02873 _Out_writes_bytes_(cPoints * sizeof(POINTL)) PVOID pvOut); 02874 02875 #if !defined(USERMODE_DRIVER) 02876 WIN32KAPI 02877 ULONG 02878 APIENTRY 02879 XFORMOBJ_iGetFloatObjXform( 02880 _In_ XFORMOBJ *pxo, 02881 _Out_ FLOATOBJ_XFORM *pxfo); 02882 #else 02883 #define XFORMOBJ_iGetFloatObjXform XFORMOBJ_iGetXform 02884 #endif 02885 02886 WIN32KAPI 02887 ULONG 02888 APIENTRY 02889 XFORMOBJ_iGetXform( 02890 _In_ XFORMOBJ *pxo, 02891 _Out_ XFORML *pxform); 02892 02893 /* XLATEOBJ_cGetPalette.iPal constants */ 02894 #define XO_SRCPALETTE 1 02895 #define XO_DESTPALETTE 2 02896 #define XO_DESTDCPALETTE 3 02897 #define XO_SRCBITFIELDS 4 02898 #define XO_DESTBITFIELDS 5 02899 02900 WIN32KAPI 02901 ULONG 02902 APIENTRY 02903 XLATEOBJ_cGetPalette( 02904 _In_ XLATEOBJ *pxlo, 02905 _In_ ULONG iPal, 02906 _In_ ULONG cPal, 02907 _Out_cap_(cPal) ULONG *pPal); 02908 02909 WIN32KAPI 02910 HANDLE 02911 APIENTRY 02912 XLATEOBJ_hGetColorTransform( 02913 _In_ XLATEOBJ *pxlo); 02914 02915 WIN32KAPI 02916 ULONG 02917 APIENTRY 02918 XLATEOBJ_iXlate( 02919 _In_ XLATEOBJ *pxlo, 02920 _In_ ULONG iColor); 02921 02922 WIN32KAPI 02923 ULONG* 02924 APIENTRY 02925 XLATEOBJ_piVector( 02926 _In_ XLATEOBJ *pxlo); 02927 02928 02929 /* Graphics Driver Functions */ 02930 02931 typedef BOOL 02932 (APIENTRY FN_DrvAlphaBlend)( 02933 _Inout_ SURFOBJ *psoDest, 02934 _In_ SURFOBJ *psoSrc, 02935 _In_ CLIPOBJ *pco, 02936 _In_opt_ XLATEOBJ *pxlo, 02937 _In_ RECTL *prclDest, 02938 _In_ RECTL *prclSrc, 02939 _In_ BLENDOBJ *pBlendObj); 02940 typedef FN_DrvAlphaBlend *PFN_DrvAlphaBlend; 02941 extern FN_DrvAlphaBlend DrvAlphaBlend; 02942 02943 typedef BOOL 02944 (APIENTRY FN_DrvAssertMode)( 02945 _In_ DHPDEV dhpdev, 02946 _In_ BOOL bEnable); 02947 typedef FN_DrvAssertMode *PFN_DrvAssertMode; 02948 extern FN_DrvAssertMode DrvAssertMode; 02949 02950 typedef BOOL 02951 (APIENTRY FN_DrvBitBlt)( 02952 _Inout_ SURFOBJ *psoTrg, 02953 _In_opt_ SURFOBJ *psoSrc, 02954 _In_opt_ SURFOBJ *psoMask, 02955 _In_ CLIPOBJ *pco, 02956 _In_opt_ XLATEOBJ *pxlo, 02957 _In_ RECTL *prclTrg, 02958 _When_(psoSrc, _In_) POINTL *pptlSrc, 02959 _When_(psoMask, _In_) POINTL *pptlMask, 02960 _In_opt_ BRUSHOBJ *pbo, 02961 _When_(pbo, _In_) POINTL *pptlBrush, 02962 _In_ ROP4 rop4); 02963 typedef FN_DrvBitBlt *PFN_DrvBitBlt; 02964 extern FN_DrvBitBlt DrvBitBlt; 02965 02966 typedef VOID 02967 (APIENTRY FN_DrvCompletePDEV)( 02968 _In_ DHPDEV dhpdev, 02969 _In_ HDEV hdev); 02970 typedef FN_DrvCompletePDEV *PFN_DrvCompletePDEV; 02971 extern FN_DrvCompletePDEV DrvCompletePDEV; 02972 02973 typedef BOOL 02974 (APIENTRY FN_DrvCopyBits)( 02975 _In_ SURFOBJ *psoDest, 02976 _In_ SURFOBJ *psoSrc, 02977 _In_ CLIPOBJ *pco, 02978 _In_opt_ XLATEOBJ *pxlo, 02979 _In_ RECTL *prclDest, 02980 _In_ POINTL *pptlSrc); 02981 typedef FN_DrvCopyBits *PFN_DrvCopyBits; 02982 extern FN_DrvCopyBits DrvCopyBits; 02983 02984 typedef HBITMAP 02985 (APIENTRY FN_DrvCreateDeviceBitmap)( 02986 _In_ DHPDEV dhpdev, 02987 _In_ SIZEL sizl, 02988 _In_ ULONG iFormat); 02989 typedef FN_DrvCreateDeviceBitmap *PFN_DrvCreateDeviceBitmap; 02990 extern FN_DrvCreateDeviceBitmap DrvCreateDeviceBitmap; 02991 02992 typedef VOID 02993 (APIENTRY FN_DrvDeleteDeviceBitmap)( 02994 _In_ _Post_ptr_invalid_ DHSURF dhsurf); 02995 typedef FN_DrvDeleteDeviceBitmap *PFN_DrvDeleteDeviceBitmap; 02996 extern FN_DrvDeleteDeviceBitmap DrvDeleteDeviceBitmap; 02997 02998 typedef HBITMAP 02999 (APIENTRY FN_DrvDeriveSurface)( 03000 _In_ DD_DIRECTDRAW_GLOBAL *pDirectDraw, 03001 _In_ DD_SURFACE_LOCAL *pSurface); 03002 typedef FN_DrvDeriveSurface *PFN_DrvDeriveSurface; 03003 extern FN_DrvDeriveSurface DrvDeriveSurface; 03004 03005 typedef LONG 03006 (APIENTRY FN_DrvDescribePixelFormat)( 03007 _In_ DHPDEV dhpdev, 03008 _In_ LONG iPixelFormat, 03009 _In_ ULONG cjpfd, 03010 _Out_ PIXELFORMATDESCRIPTOR *ppfd); 03011 typedef FN_DrvDescribePixelFormat *PFN_DrvDescribePixelFormat; 03012 extern FN_DrvDescribePixelFormat DrvDescribePixelFormat; 03013 03014 typedef VOID 03015 (APIENTRY FN_DrvDestroyFont)( 03016 _In_ FONTOBJ *pfo); 03017 typedef FN_DrvDestroyFont *PFN_DrvDestroyFont; 03018 extern FN_DrvDestroyFont DrvDestroyFont; 03019 03020 typedef VOID 03021 (APIENTRY FN_DrvDisableDriver)(VOID); 03022 typedef FN_DrvDisableDriver *PFN_DrvDisableDriver; 03023 extern FN_DrvDisableDriver DrvDisableDriver; 03024 03025 typedef VOID 03026 (APIENTRY FN_DrvDisablePDEV)( 03027 _In_ DHPDEV dhpdev); 03028 typedef FN_DrvDisablePDEV *PFN_DrvDisablePDEV; 03029 extern FN_DrvDisablePDEV DrvDisablePDEV; 03030 03031 typedef VOID 03032 (APIENTRY FN_DrvDisableSurface)( 03033 _In_ DHPDEV dhpdev); 03034 typedef FN_DrvDisableSurface *PFN_DrvDisableSurface; 03035 extern FN_DrvDisableSurface DrvDisableSurface; 03036 03037 typedef ULONG 03038 (APIENTRY FN_DrvDitherColor)( 03039 _In_ DHPDEV dhpdev, 03040 _In_ ULONG iMode, 03041 _In_ ULONG rgb, 03042 _Inout_updates_(8 * 8) ULONG *pul); // FIXME: compare EngDitherColor 03043 typedef FN_DrvDitherColor *PFN_DrvDitherColor; 03044 extern FN_DrvDitherColor DrvDitherColor; 03045 03046 typedef ULONG 03047 (APIENTRY FN_DrvDrawEscape)( 03048 _In_ SURFOBJ *pso, 03049 _In_ ULONG iEsc, 03050 _In_ CLIPOBJ *pco, 03051 _In_ RECTL *prcl, 03052 _In_ ULONG cjIn, 03053 _In_reads_bytes_(cjIn) PVOID pvIn); 03054 typedef FN_DrvDrawEscape *PFN_DrvDrawEscape; 03055 extern FN_DrvDrawEscape DrvDrawEscape; 03056 03057 typedef BOOL 03058 (APIENTRY FN_DrvEnableDriver)( 03059 _In_ ULONG iEngineVersion, 03060 _In_ ULONG cj, 03061 _Inout_bytecount_(cj) DRVENABLEDATA *pded); // Zero initialized 03062 typedef FN_DrvEnableDriver *PFN_DrvEnableDriver; 03063 extern FN_DrvEnableDriver DrvEnableDriver; 03064 03065 typedef DHPDEV 03066 (APIENTRY FN_DrvEnablePDEV)( 03067 _In_ DEVMODEW *pdm, 03068 _In_ LPWSTR pwszLogAddress, 03069 _In_ ULONG cPat, 03070 _Out_opt_cap_(cPat) HSURF *phsurfPatterns, 03071 _In_ ULONG cjCaps, 03072 _Out_bytecap_(cjCaps) ULONG *pdevcaps, 03073 _In_ ULONG cjDevInfo, 03074 _Out_ DEVINFO *pdi, 03075 _In_ HDEV hdev, 03076 _In_ LPWSTR pwszDeviceName, 03077 _In_ HANDLE hDriver); 03078 typedef FN_DrvEnablePDEV *PFN_DrvEnablePDEV; 03079 extern FN_DrvEnablePDEV DrvEnablePDEV; 03080 03081 typedef HSURF 03082 (APIENTRY FN_DrvEnableSurface)( 03083 _In_ DHPDEV dhpdev); 03084 typedef FN_DrvEnableSurface *PFN_DrvEnableSurface; 03085 extern FN_DrvEnableSurface DrvEnableSurface; 03086 03087 /* DrvEndDoc.fl constants */ 03088 #define ED_ABORTDOC 0x00000001 03089 03090 typedef BOOL 03091 (APIENTRY FN_DrvEndDoc)( 03092 _In_ SURFOBJ *pso, 03093 _In_ FLONG fl); 03094 typedef FN_DrvEndDoc *PFN_DrvEndDoc; 03095 extern FN_DrvEndDoc DrvEndDoc; 03096 03097 typedef ULONG 03098 (APIENTRY FN_DrvEscape)( 03099 _In_ SURFOBJ *pso, 03100 _In_ ULONG iEsc, 03101 _In_ ULONG cjIn, 03102 _In_bytecount_(cjIn) PVOID pvIn, 03103 _In_ ULONG cjOut, 03104 _Out_bytecap_(cjOut) PVOID pvOut); 03105 typedef FN_DrvEscape *PFN_DrvEscape; 03106 extern FN_DrvEscape DrvEscape; 03107 03108 typedef BOOL 03109 (APIENTRY FN_DrvFillPath)( 03110 _Inout_ SURFOBJ *pso, 03111 _In_ PATHOBJ *ppo, 03112 _In_ CLIPOBJ *pco, 03113 _In_ BRUSHOBJ *pbo, 03114 _In_ POINTL *pptlBrushOrg, 03115 _In_ MIX mix, 03116 _In_ FLONG flOptions); 03117 typedef FN_DrvFillPath *PFN_DrvFillPath; 03118 extern FN_DrvFillPath DrvFillPath; 03119 03120 typedef ULONG 03121 (APIENTRY FN_DrvFontManagement)( 03122 _In_ SURFOBJ *pso, 03123 _In_opt_ FONTOBJ *pfo, 03124 _In_ ULONG iMode, 03125 _In_ ULONG cjIn, 03126 _In_bytecount_(cjIn) PVOID pvIn, 03127 _In_ ULONG cjOut, 03128 _Out_bytecap_(cjOut) PVOID pvOut); 03129 typedef FN_DrvFontManagement *PFN_DrvFontManagement; 03130 extern FN_DrvFontManagement DrvFontManagement; 03131 03132 typedef VOID 03133 (APIENTRY FN_DrvFree)( 03134 _In_ _Post_ptr_invalid_ PVOID pv, 03135 _In_ ULONG_PTR id); 03136 typedef FN_DrvFree *PFN_DrvFree; 03137 extern FN_DrvFree DrvFree; 03138 03139 /* DrvGetGlyphMode return values */ 03140 #define FO_HGLYPHS 0L 03141 #define FO_GLYPHBITS 1L 03142 #define FO_PATHOBJ 2L 03143 03144 typedef ULONG 03145 (APIENTRY FN_DrvGetGlyphMode)( 03146 _In_ DHPDEV dhpdev, 03147 _In_ FONTOBJ *pfo); 03148 typedef FN_DrvGetGlyphMode *PFN_DrvGetGlyphMode; 03149 extern FN_DrvGetGlyphMode DrvGetGlyphMode; 03150 03151 typedef ULONG 03152 (APIENTRY FN_DrvGetModes)( 03153 _In_ HANDLE hDriver, 03154 _In_ ULONG cjSize, 03155 _Out_opt_bytecap_(cjSize) DEVMODEW *pdm); 03156 typedef FN_DrvGetModes *PFN_DrvGetModes; 03157 extern FN_DrvGetModes DrvGetModes; 03158 03159 typedef PVOID 03160 (APIENTRY FN_DrvGetTrueTypeFile)( 03161 _In_ ULONG_PTR iFile, 03162 _In_ ULONG *pcj); 03163 typedef FN_DrvGetTrueTypeFile *PFN_DrvGetTrueTypeFile; 03164 extern FN_DrvGetTrueTypeFile DrvGetTrueTypeFile; 03165 03166 typedef BOOL 03167 (APIENTRY FN_DrvGradientFill)( 03168 _Inout_ SURFOBJ *psoDest, 03169 _In_ CLIPOBJ *pco, 03170 _In_opt_ XLATEOBJ *pxlo, 03171 _In_ TRIVERTEX *pVertex, 03172 _In_ ULONG nVertex, 03173 _In_ PVOID pMesh, 03174 _In_ ULONG nMesh, 03175 _In_ RECTL *prclExtents, 03176 _In_ POINTL *pptlDitherOrg, 03177 _In_ ULONG ulMode); 03178 typedef FN_DrvGradientFill *PFN_DrvGradientFill; 03179 extern FN_DrvGradientFill DrvGradientFill; 03180 03181 typedef BOOL 03182 (APIENTRY FN_DrvIcmCheckBitmapBits)( 03183 _In_ DHPDEV dhpdev, 03184 _In_ HANDLE hColorTransform, 03185 _In_ SURFOBJ *pso, 03186 _Out_bytecap_(pso->sizlBitmap.cx * pso->sizlBitmap.cy) PBYTE paResults); 03187 typedef FN_DrvIcmCheckBitmapBits *PFN_DrvIcmCheckBitmapBits; 03188 extern FN_DrvIcmCheckBitmapBits DrvIcmCheckBitmapBits; 03189 03190 typedef HANDLE 03191 (APIENTRY FN_DrvIcmCreateColorTransform)( 03192 _In_ DHPDEV dhpdev, 03193 _In_ LPLOGCOLORSPACEW pLogColorSpace, 03194 _In_reads_bytes_opt_(cjSourceProfile) PVOID pvSourceProfile, 03195 _In_ ULONG cjSourceProfile, 03196 _In_reads_bytes_(cjDestProfile) PVOID pvDestProfile, 03197 _In_ ULONG cjDestProfile, 03198 _In_reads_bytes_opt_(cjTargetProfile) PVOID pvTargetProfile, 03199 _In_ ULONG cjTargetProfile, 03200 _In_ DWORD dwReserved); 03201 typedef FN_DrvIcmCreateColorTransform *PFN_DrvIcmCreateColorTransform; 03202 extern FN_DrvIcmCreateColorTransform DrvIcmCreateColorTransform; 03203 03204 typedef BOOL 03205 (APIENTRY FN_DrvIcmDeleteColorTransform)( 03206 _In_ DHPDEV dhpdev, 03207 _In_ HANDLE hcmXform); 03208 typedef FN_DrvIcmDeleteColorTransform *PFN_DrvIcmDeleteColorTransform; 03209 extern FN_DrvIcmDeleteColorTransform DrvIcmDeleteColorTransform; 03210 03211 /* DrvIcmSetDeviceGammaRamp.iFormat constants */ 03212 #define IGRF_RGB_256BYTES 0x00000000 03213 #define IGRF_RGB_256WORDS 0x00000001 03214 03215 typedef BOOL 03216 (APIENTRY FN_DrvIcmSetDeviceGammaRamp)( 03217 _In_ DHPDEV dhpdev, 03218 _In_ ULONG iFormat, 03219 _In_bytecount_(sizeof(GAMMARAMP)) LPVOID lpRamp); 03220 typedef FN_DrvIcmSetDeviceGammaRamp *PFN_DrvIcmSetDeviceGammaRamp; 03221 extern FN_DrvIcmSetDeviceGammaRamp DrvIcmSetDeviceGammaRamp; 03222 03223 typedef BOOL 03224 (APIENTRY FN_DrvLineTo)( 03225 _Inout_ SURFOBJ *pso, 03226 _In_ CLIPOBJ *pco, 03227 _In_ BRUSHOBJ *pbo, 03228 _In_ LONG x1, 03229 _In_ LONG y1, 03230 _In_ LONG x2, 03231 _In_ LONG y2, 03232 _In_opt_ RECTL *prclBounds, 03233 _In_ MIX mix); 03234 typedef FN_DrvLineTo *PFN_DrvLineTo; 03235 extern FN_DrvLineTo DrvLineTo; 03236 03237 typedef ULONG_PTR 03238 (APIENTRY FN_DrvLoadFontFile)( 03239 _In_ ULONG cFiles, 03240 _In_ ULONG_PTR *piFile, 03241 _In_count_(cFiles) PVOID *ppvView, 03242 _In_count_(cFiles) ULONG *pcjView, 03243 _In_opt_ DESIGNVECTOR *pdv, 03244 _In_ ULONG ulLangID, 03245 _In_ ULONG ulFastCheckSum); 03246 typedef FN_DrvLoadFontFile *PFN_DrvLoadFontFile; 03247 extern FN_DrvLoadFontFile DrvLoadFontFile; 03248 03249 typedef VOID 03250 (APIENTRY FN_DrvMovePointer)( 03251 _In_ SURFOBJ *pso, 03252 _In_ LONG x, 03253 _In_ LONG y, 03254 _In_opt_ RECTL *prcl); 03255 typedef FN_DrvMovePointer *PFN_DrvMovePointer; 03256 extern FN_DrvMovePointer DrvMovePointer; 03257 03258 typedef BOOL 03259 (APIENTRY FN_DrvNextBand)( 03260 _In_ SURFOBJ *pso, 03261 _In_ POINTL *pptl); 03262 typedef FN_DrvNextBand *PFN_DrvNextBand; 03263 extern FN_DrvNextBand DrvNextBand; 03264 03265 typedef VOID 03266 (APIENTRY FN_DrvNotify)( 03267 _In_ SURFOBJ *pso, 03268 _In_ ULONG iType, 03269 _In_opt_ PVOID pvData); 03270 typedef FN_DrvNotify *PFN_DrvNotify; 03271 extern FN_DrvNotify DrvNotify; 03272 03273 typedef BOOL 03274 (APIENTRY FN_DrvOffset)( 03275 _In_ SURFOBJ *pso, 03276 _In_ LONG x, 03277 _In_ LONG y, 03278 _In_ FLONG flReserved); 03279 typedef FN_DrvOffset *PFN_DrvOffset; 03280 extern FN_DrvOffset DrvOffset; 03281 03282 typedef BOOL 03283 (APIENTRY FN_DrvPaint)( 03284 _Inout_ SURFOBJ *pso, 03285 _In_ CLIPOBJ *pco, 03286 _In_ BRUSHOBJ *pbo, 03287 _In_ POINTL *pptlBrushOrg, 03288 _In_ MIX mix); 03289 typedef FN_DrvPaint *PFN_DrvPaint; 03290 extern FN_DrvPaint DrvPaint; 03291 03292 typedef BOOL 03293 (APIENTRY FN_DrvPlgBlt)( 03294 _Inout_ SURFOBJ *psoTrg, 03295 _Inout_ SURFOBJ *psoSrc, 03296 _In_opt_ SURFOBJ *psoMsk, 03297 _In_ CLIPOBJ *pco, 03298 _In_opt_ XLATEOBJ *pxlo, 03299 _In_opt_ COLORADJUSTMENT *pca, 03300 _In_opt_ POINTL *pptlBrushOrg, 03301 _In_ POINTFIX *pptfx, 03302 _In_ RECTL *prcl, 03303 _In_opt_ POINTL *pptl, 03304 _In_ ULONG iMode); 03305 typedef FN_DrvPlgBlt *PFN_DrvPlgBlt; 03306 extern FN_DrvPlgBlt DrvPlgBlt; 03307 03308 /* DrvQueryAdvanceWidths.iMode constants */ 03309 #define QAW_GETWIDTHS 0 03310 #define QAW_GETEASYWIDTHS 1 03311 03312 typedef BOOL 03313 (APIENTRY FN_DrvQueryAdvanceWidths)( 03314 _In_ DHPDEV dhpdev, 03315 _In_ FONTOBJ *pfo, 03316 _In_ ULONG iMode, 03317 _In_reads_(cGlyphs) HGLYPH *phg, 03318 _Out_writes_bytes_(cGlyphs * sizeof(USHORT)) PVOID pvWidths, 03319 _In_ ULONG cGlyphs); 03320 typedef FN_DrvQueryAdvanceWidths *PFN_DrvQueryAdvanceWidths; 03321 extern FN_DrvQueryAdvanceWidths DrvQueryAdvanceWidths; 03322 03323 /* DrvQueryDeviceSupport.iType constants */ 03324 #define QDS_CHECKJPEGFORMAT 0x00000000 03325 #define QDS_CHECKPNGFORMAT 0x00000001 03326 03327 typedef BOOL 03328 (APIENTRY FN_DrvQueryDeviceSupport)( 03329 _In_ SURFOBJ *pso, 03330 _In_ XLATEOBJ *pxlo, 03331 _In_ XFORMOBJ *pxo, 03332 _In_ ULONG iType, 03333 _In_ ULONG cjIn, 03334 _In_bytecount_(cjIn) PVOID pvIn, 03335 _In_ ULONG cjOut, 03336 _Out_bytecap_(cjOut) PVOID pvOut); 03337 typedef FN_DrvQueryDeviceSupport *PFN_DrvQueryDeviceSupport; 03338 extern FN_DrvQueryDeviceSupport DrvQueryDeviceSupport; 03339 03340 /* DrvQueryDriverInfo.dwMode constants */ 03341 #define DRVQUERY_USERMODE 0x00000001 03342 03343 typedef BOOL 03344 (APIENTRY FN_DrvQueryDriverInfo)( 03345 _In_ DWORD dwMode, 03346 _Out_bytecap_(cjBuf) PVOID pBuffer, 03347 _In_ DWORD cjBuf, 03348 _Out_ PDWORD pcbNeeded); 03349 typedef FN_DrvQueryDriverInfo *PFN_DrvQueryDriverInfo; 03350 extern FN_DrvQueryDriverInfo DrvQueryDriverInfo; 03351 03352 typedef PIFIMETRICS 03353 (APIENTRY FN_DrvQueryFont)( 03354 _In_ DHPDEV dhpdev, 03355 _In_ ULONG_PTR iFile, 03356 _In_ ULONG iFace, 03357 _Out_ ULONG_PTR *pid); 03358 typedef FN_DrvQueryFont *PFN_DrvQueryFont; 03359 extern FN_DrvQueryFont DrvQueryFont; 03360 03361 /* DrvQueryFontCaps.pulCaps constants */ 03362 #define QC_OUTLINES 0x00000001 03363 #define QC_1BIT 0x00000002 03364 #define QC_4BIT 0x00000004 03365 03366 #define QC_FONTDRIVERCAPS (QC_OUTLINES | QC_1BIT | QC_4BIT) 03367 03368 typedef LONG 03369 (APIENTRY FN_DrvQueryFontCaps)( 03370 _In_ ULONG culCaps, 03371 _Out_cap_(culCaps) ULONG *pulCaps); 03372 typedef FN_DrvQueryFontCaps *PFN_DrvQueryFontCaps; 03373 extern FN_DrvQueryFontCaps DrvQueryFontCaps; 03374 03375 /* DrvQueryFontData.iMode constants */ 03376 #define QFD_GLYPHANDBITMAP 1L 03377 #define QFD_GLYPHANDOUTLINE 2L 03378 #define QFD_MAXEXTENTS 3L 03379 #define QFD_TT_GLYPHANDBITMAP 4L 03380 #define QFD_TT_GRAY1_BITMAP 5L 03381 #define QFD_TT_GRAY2_BITMAP 6L 03382 #define QFD_TT_GRAY4_BITMAP 8L 03383 #define QFD_TT_GRAY8_BITMAP 9L 03384 03385 #define QFD_TT_MONO_BITMAP QFD_TT_GRAY1_BITMAP 03386 03387 typedef LONG 03388 (APIENTRY FN_DrvQueryFontData)( 03389 _In_ DHPDEV dhpdev, 03390 _In_ FONTOBJ *pfo, 03391 _In_ ULONG iMode, 03392 _In_ HGLYPH hg, 03393 _In_opt_ GLYPHDATA *pgd, 03394 _Out_bytecap_(cjSize) PVOID pv, 03395 _In_ ULONG cjSize); 03396 typedef FN_DrvQueryFontData *PFN_DrvQueryFontData; 03397 extern FN_DrvQueryFontData DrvQueryFontData; 03398 03399 /* DrvQueryFontFile.ulMode constants */ 03400 #define QFF_DESCRIPTION 0x00000001 03401 #define QFF_NUMFACES 0x00000002 03402 03403 typedef LONG 03404 (APIENTRY FN_DrvQueryFontFile)( 03405 _In_ ULONG_PTR iFile, 03406 _In_ ULONG ulMode, 03407 _In_ ULONG cjBuf, 03408 _Out_bytecap_(cjBuf) ULONG *pulBuf); 03409 typedef FN_DrvQueryFontFile *PFN_DrvQueryFontFile; 03410 extern FN_DrvQueryFontFile DrvQueryFontFile; 03411 03412 /* DrvQueryFontTree.iMode constants */ 03413 #define QFT_UNICODE 0L 03414 #define QFT_LIGATURES 1L 03415 #define QFT_KERNPAIRS 2L 03416 #define QFT_GLYPHSET 3L 03417 03418 typedef PVOID 03419 (APIENTRY FN_DrvQueryFontTree)( 03420 _In_ DHPDEV dhpdev, 03421 _In_ ULONG_PTR iFile, 03422 _In_ ULONG iFace, 03423 _In_ ULONG iMode, 03424 _Out_ ULONG_PTR *pid); 03425 typedef FN_DrvQueryFontTree *PFN_DrvQueryFontTree; 03426 extern FN_DrvQueryFontTree DrvQueryFontTree; 03427 03428 typedef PFD_GLYPHATTR 03429 (APIENTRY FN_DrvQueryGlyphAttrs)( 03430 _In_ FONTOBJ *pfo, 03431 _In_ ULONG iMode); 03432 typedef FN_DrvQueryGlyphAttrs *PFN_DrvQueryGlyphAttrs; 03433 extern FN_DrvQueryGlyphAttrs DrvQueryGlyphAttrs; 03434 03435 typedef ULONG 03436 (APIENTRY FN_DrvQueryPerBandInfo)( 03437 _In_ SURFOBJ *pso, 03438 _Inout_ PERBANDINFO *pbi); 03439 typedef FN_DrvQueryPerBandInfo *PFN_DrvQueryPerBandInfo; 03440 extern FN_DrvQueryPerBandInfo DrvQueryPerBandInfo; 03441 03442 /* DrvQueryTrueTypeOutline.bMetricsOnly constants */ 03443 #define TTO_METRICS_ONLY 0x00000001 03444 #define TTO_QUBICS 0x00000002 03445 #define TTO_UNHINTED 0x00000004 03446 03447 typedef LONG 03448 (APIENTRY FN_DrvQueryTrueTypeOutline)( 03449 _In_ DHPDEV dhpdev, 03450 _In_ FONTOBJ *pfo, 03451 _In_ HGLYPH hglyph, 03452 _In_ BOOL bMetricsOnly, 03453 _Out_opt_ GLYPHDATA *pgldt, 03454 _In_ ULONG cjBuf, 03455 _Out_bytecap_(cjBuf) TTPOLYGONHEADER *ppoly); 03456 typedef FN_DrvQueryTrueTypeOutline *PFN_DrvQueryTrueTypeOutline; 03457 extern FN_DrvQueryTrueTypeOutline DrvQueryTrueTypeOutline; 03458 03459 typedef LONG 03460 (APIENTRY FN_DrvQueryTrueTypeTable)( 03461 _In_ ULONG_PTR iFile, 03462 _In_ ULONG ulFont, 03463 _In_ ULONG ulTag, 03464 _In_ PTRDIFF dpStart, 03465 _In_ ULONG cjBuf, 03466 _Out_opt_bytecap_(cjBuf) BYTE *pjBuf, 03467 _Outptr_opt_result_bytebuffer_all_maybenull_(*pcjTable) PBYTE *ppjTable, 03468 _Out_opt_ ULONG *pcjTable); 03469 typedef FN_DrvQueryTrueTypeTable *PFN_DrvQueryTrueTypeTable; 03470 extern FN_DrvQueryTrueTypeTable DrvQueryTrueTypeTable; 03471 03472 /* DrvRealizeBrush.iHatch constants */ 03473 #define RB_DITHERCOLOR 0x80000000L 03474 03475 #define HS_DDI_MAX 6 03476 03477 typedef BOOL 03478 (APIENTRY FN_DrvRealizeBrush)( 03479 _In_ BRUSHOBJ *pbo, 03480 _Inout_ SURFOBJ *psoTarget, // CHECKME 03481 _In_opt_ SURFOBJ *psoPattern, 03482 _In_opt_ SURFOBJ *psoMask, 03483 _In_opt_ XLATEOBJ *pxlo, 03484 _In_ ULONG iHatch); 03485 typedef FN_DrvRealizeBrush *PFN_DrvRealizeBrush; 03486 extern FN_DrvRealizeBrush DrvRealizeBrush; 03487 03488 /* DrvResetDevice return values */ 03489 #define DRD_SUCCESS 0 03490 #define DRD_ERROR 1 03491 03492 typedef ULONG 03493 (APIENTRY FN_DrvResetDevice)( 03494 _In_ DHPDEV dhpdev, 03495 _Reserved_ PVOID Reserved); 03496 typedef FN_DrvResetDevice *PFN_DrvResetDevice; 03497 extern FN_DrvResetDevice DrvResetDevice; 03498 03499 typedef BOOL 03500 (APIENTRY FN_DrvResetPDEV)( 03501 _In_ DHPDEV dhpdevOld, 03502 _In_ DHPDEV dhpdevNew); 03503 typedef FN_DrvResetPDEV *PFN_DrvResetPDEV; 03504 extern FN_DrvResetPDEV DrvResetPDEV; 03505 03506 /* DrvSaveScreenBits.iMode constants */ 03507 #define SS_SAVE 0x00000000 03508 #define SS_RESTORE 0x00000001 03509 #define SS_FREE 0x00000002 03510 03511 typedef ULONG_PTR 03512 (APIENTRY FN_DrvSaveScreenBits)( 03513 _In_ SURFOBJ *pso, 03514 _In_ ULONG iMode, 03515 _In_ ULONG_PTR ident, 03516 _In_ RECTL *prcl); 03517 typedef FN_DrvSaveScreenBits *PFN_DrvSaveScreenBits; 03518 extern FN_DrvSaveScreenBits DrvSaveScreenBits; 03519 03520 typedef BOOL 03521 (APIENTRY FN_DrvSendPage)( 03522 _In_ SURFOBJ *pso); 03523 typedef FN_DrvSendPage *PFN_DrvSendPage; 03524 extern FN_DrvSendPage DrvSendPage; 03525 03526 /* DrvSetPalette range */ 03527 #define WINDDI_MAXSETPALETTECOLORS 256 03528 #define WINDDI_MAXSETPALETTECOLORINDEX 255 03529 03530 typedef BOOL 03531 (APIENTRY FN_DrvSetPalette)( 03532 _In_ DHPDEV dhpdev, 03533 _In_ PALOBJ *ppalo, 03534 _In_ FLONG fl, 03535 _In_range_(0, WINDDI_MAXSETPALETTECOLORINDEX) ULONG iStart, 03536 _In_range_(0, WINDDI_MAXSETPALETTECOLORS - iStart) ULONG cColors); 03537 typedef FN_DrvSetPalette *PFN_DrvSetPalette; 03538 extern FN_DrvSetPalette DrvSetPalette; 03539 03540 typedef BOOL 03541 (APIENTRY FN_DrvSetPixelFormat)( 03542 _In_ SURFOBJ *pso, 03543 _In_ LONG iPixelFormat, 03544 _In_ HWND hwnd); 03545 typedef FN_DrvSetPixelFormat *PFN_DrvSetPixelFormat; 03546 extern FN_DrvSetPixelFormat DrvSetPixelFormat; 03547 03548 /* DrvSetPointerShape return values */ 03549 #define SPS_ERROR 0x00000000 03550 #define SPS_DECLINE 0x00000001 03551 #define SPS_ACCEPT_NOEXCLUDE 0x00000002 03552 #define SPS_ACCEPT_EXCLUDE 0x00000003 03553 #define SPS_ACCEPT_SYNCHRONOUS 0x00000004 03554 03555 /* DrvSetPointerShape.fl constants */ 03556 #define SPS_CHANGE 0x00000001L 03557 #define SPS_ASYNCCHANGE 0x00000002L 03558 #define SPS_ANIMATESTART 0x00000004L 03559 #define SPS_ANIMATEUPDATE 0x00000008L 03560 #define SPS_ALPHA 0x00000010L 03561 #define SPS_LENGTHMASK 0x00000F00L 03562 #define SPS_FREQMASK 0x000FF000L 03563 03564 typedef ULONG 03565 (APIENTRY FN_DrvSetPointerShape)( 03566 _In_ SURFOBJ *pso, 03567 _In_opt_ SURFOBJ *psoMask, 03568 _In_opt_ SURFOBJ *psoColor, 03569 _In_ XLATEOBJ *pxlo, 03570 _In_ LONG xHot, 03571 _In_ LONG yHot, 03572 _In_ LONG x, 03573 _In_ LONG y, 03574 _In_ RECTL *prcl, 03575 _In_ FLONG fl); 03576 typedef FN_DrvSetPointerShape *PFN_DrvSetPointerShape; 03577 extern FN_DrvSetPointerShape DrvSetPointerShape; 03578 03579 typedef BOOL 03580 (APIENTRY FN_DrvStartBanding)( 03581 _In_ SURFOBJ *pso, 03582 _In_ POINTL *pptl); 03583 typedef FN_DrvStartBanding *PFN_DrvStartBanding; 03584 extern FN_DrvStartBanding DrvStartBanding; 03585 03586 typedef BOOL 03587 (APIENTRY FN_DrvStartDoc)( 03588 _In_ SURFOBJ *pso, 03589 _In_ LPWSTR pwszDocName, 03590 _In_ DWORD dwJobId); 03591 typedef FN_DrvStartDoc *PFN_DrvStartDoc; 03592 extern FN_DrvStartDoc DrvStartDoc; 03593 03594 typedef BOOL 03595 (APIENTRY FN_DrvStartPage)( 03596 _In_ SURFOBJ *pso); 03597 typedef FN_DrvStartPage *PFN_DrvStartPage; 03598 extern FN_DrvStartPage DrvStartPage; 03599 03600 typedef BOOL 03601 (APIENTRY FN_DrvStretchBlt)( 03602 _Inout_ SURFOBJ *psoDest, 03603 _Inout_ SURFOBJ *psoSrc, 03604 _In_opt_ SURFOBJ *psoMask, 03605 _In_ CLIPOBJ *pco, 03606 _In_opt_ XLATEOBJ *pxlo, 03607 _In_opt_ COLORADJUSTMENT *pca, 03608 _In_ POINTL *pptlHTOrg, 03609 _In_ RECTL *prclDest, 03610 _In_ RECTL *prclSrc, 03611 _When_(psoMask, _In_) POINTL *pptlMask, 03612 _In_ ULONG iMode); 03613 typedef FN_DrvStretchBlt *PFN_DrvStretchBlt; 03614 extern FN_DrvStretchBlt DrvStretchBlt; 03615 03616 typedef BOOL 03617 (APIENTRY FN_DrvStretchBltROP)( 03618 _Inout_ SURFOBJ *psoDest, 03619 _Inout_ SURFOBJ *psoSrc, 03620 _In_opt_ SURFOBJ *psoMask, 03621 _In_ CLIPOBJ *pco, 03622 _In_opt_ XLATEOBJ *pxlo, 03623 _In_opt_ COLORADJUSTMENT *pca, 03624 _In_ POINTL *pptlHTOrg, 03625 _In_ RECTL *prclDest, 03626 _In_ RECTL *prclSrc, 03627 _When_(psoMask, _In_) POINTL *pptlMask, 03628 _In_ ULONG iMode, 03629 _In_ BRUSHOBJ *pbo, 03630 _In_ DWORD rop4); 03631 typedef FN_DrvStretchBltROP *PFN_DrvStretchBltROP; 03632 extern FN_DrvStretchBltROP DrvStretchBltROP; 03633 03634 typedef BOOL 03635 (APIENTRY FN_DrvStrokeAndFillPath)( 03636 _Inout_ SURFOBJ *pso, 03637 _Inout_ PATHOBJ *ppo, 03638 _In_ CLIPOBJ *pco, 03639 _In_opt_ XFORMOBJ *pxo, 03640 _In_ BRUSHOBJ *pboStroke, 03641 _In_ LINEATTRS *plineattrs, 03642 _In_ BRUSHOBJ *pboFill, 03643 _In_ POINTL *pptlBrushOrg, 03644 _In_ MIX mixFill, 03645 _In_ FLONG flOptions); 03646 typedef FN_DrvStrokeAndFillPath *PFN_DrvStrokeAndFillPath; 03647 extern FN_DrvStrokeAndFillPath DrvStrokeAndFillPath; 03648 03649 typedef BOOL 03650 (APIENTRY FN_DrvStrokePath)( 03651 _Inout_ SURFOBJ *pso, 03652 _In_ PATHOBJ *ppo, 03653 _In_ CLIPOBJ *pco, 03654 _In_opt_ XFORMOBJ *pxo, 03655 _In_ BRUSHOBJ *pbo, 03656 _In_ POINTL *pptlBrushOrg, 03657 _In_ LINEATTRS *plineattrs, 03658 _In_ MIX mix); 03659 typedef FN_DrvStrokePath *PFN_DrvStrokePath; 03660 extern FN_DrvStrokePath DrvStrokePath; 03661 03662 typedef BOOL 03663 (APIENTRY FN_DrvSwapBuffers)( 03664 _In_ SURFOBJ *pso, 03665 _In_ WNDOBJ *pwo); 03666 typedef FN_DrvSwapBuffers *PFN_DrvSwapBuffers; 03667 extern FN_DrvSwapBuffers DrvSwapBuffers; 03668 03669 typedef VOID 03670 (APIENTRY FN_DrvSynchronize)( 03671 _In_ DHPDEV dhpdev, 03672 _In_count_c_(0) RECTL *prcl); // should be ignored 03673 typedef FN_DrvSynchronize *PFN_DrvSynchronize; 03674 extern FN_DrvSynchronize DrvSynchronize; 03675 03676 /* DrvSynchronizeSurface.fl constants */ 03677 #define DSS_TIMER_EVENT 0x00000001 03678 #define DSS_FLUSH_EVENT 0x00000002 03679 #define DSS_RESERVED 0x00000004 03680 #define DSS_RESERVED1 0x00000008 03681 03682 typedef VOID 03683 (APIENTRY FN_DrvSynchronizeSurface)( 03684 _In_ SURFOBJ *pso, 03685 _In_opt_ RECTL *prcl, 03686 _In_ FLONG fl); 03687 typedef FN_DrvSynchronizeSurface *PFN_DrvSynchronizeSurface; 03688 extern FN_DrvSynchronizeSurface DrvSynchronizeSurface; 03689 03690 typedef BOOL 03691 (APIENTRY FN_DrvTextOut)( 03692 _In_ SURFOBJ *pso, 03693 _In_ STROBJ *pstro, 03694 _In_ FONTOBJ *pfo, 03695 _In_ CLIPOBJ *pco, 03696 _Null_ RECTL *prclExtra, 03697 _In_opt_ RECTL *prclOpaque, 03698 _In_ BRUSHOBJ *pboFore, 03699 _In_ BRUSHOBJ *pboOpaque, 03700 _In_ POINTL *pptlOrg, 03701 _In_ MIX mix); 03702 typedef FN_DrvTextOut *PFN_DrvTextOut; 03703 extern FN_DrvTextOut DrvTextOut; 03704 03705 typedef BOOL 03706 (APIENTRY FN_DrvTransparentBlt)( 03707 _Inout_ SURFOBJ *psoDst, 03708 _In_ SURFOBJ *psoSrc, 03709 _In_ CLIPOBJ *pco, 03710 _In_opt_ XLATEOBJ *pxlo, 03711 _In_ RECTL *prclDst, 03712 _In_ RECTL *prclSrc, 03713 _In_ ULONG iTransColor, 03714 _In_ ULONG ulReserved); 03715 typedef FN_DrvTransparentBlt *PFN_DrvTransparentBlt; 03716 extern FN_DrvTransparentBlt DrvTransparentBlt; 03717 03718 typedef BOOL 03719 (APIENTRY FN_DrvUnloadFontFile)( 03720 _In_ ULONG_PTR iFile); 03721 typedef FN_DrvUnloadFontFile *PFN_DrvUnloadFontFile; 03722 extern FN_DrvUnloadFontFile DrvUnloadFontFile; 03723 03724 /* Direct draw */ 03725 03726 typedef VOID 03727 (APIENTRY FN_DrvDisableDirectDraw)( 03728 _In_ DHPDEV dhpdev); 03729 typedef FN_DrvDisableDirectDraw *PFN_DrvDisableDirectDraw; 03730 extern FN_DrvDisableDirectDraw DrvDisableDirectDraw; 03731 03732 typedef BOOL 03733 (APIENTRY FN_DrvEnableDirectDraw)( 03734 _In_ DHPDEV dhpdev, 03735 _Out_ DD_CALLBACKS *pCallBacks, 03736 _Out_ DD_SURFACECALLBACKS *pSurfaceCallBacks, 03737 _Out_ DD_PALETTECALLBACKS *pPaletteCallBacks); 03738 typedef FN_DrvEnableDirectDraw *PFN_DrvEnableDirectDraw; 03739 extern FN_DrvEnableDirectDraw DrvEnableDirectDraw; 03740 03741 typedef BOOL 03742 (APIENTRY FN_DrvGetDirectDrawInfo)( 03743 _In_ DHPDEV dhpdev, 03744 _Out_ DD_HALINFO *pHalInfo, 03745 _Out_ DWORD *pdwNumHeaps, 03746 _Out_ VIDEOMEMORY *pvmList, 03747 _Out_ DWORD *pdwNumFourCCCodes, 03748 _Out_ DWORD *pdwFourCC); 03749 typedef FN_DrvGetDirectDrawInfo *PFN_DrvGetDirectDrawInfo; 03750 extern FN_DrvGetDirectDrawInfo DrvGetDirectDrawInfo; 03751 03752 typedef BOOL //DECLSPEC_DEPRECATED_DDK 03753 (APIENTRY FN_DrvQuerySpoolType)( 03754 _In_ DHPDEV dhpdev, 03755 _In_ LPWSTR pwchType); 03756 typedef FN_DrvQuerySpoolType *PFN_DrvQuerySpoolType; 03757 extern FN_DrvQuerySpoolType DrvQuerySpoolType; 03758 03759 03760 #ifdef __cplusplus 03761 } 03762 #endif 03763 03764 #endif /* defined __VIDEO_H__ */ 03765 03766 #endif /* _WINDDI_ */ Generated on Sun May 27 2012 04:32:39 for ReactOS by
1.7.6.1
|