4 * GDI device driver interface
6 * This file is part of the w32api package.
9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
10 * Annotations by Timo Kreuzer <timo.kreuzer@reactos.org>
12 * THIS SOFTWARE IS NOT COPYRIGHTED
14 * This source code is offered for use in the public domain. You may
15 * use, modify or distribute it freely.
17 * This code is distributed in the hope that it will be useful but
18 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
19 * DISCLAIMED. This includes but is not limited to warranties of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
29 #error video.h cannot be included with winddi.h
32 //#include <winapifamily.h>
35 #include <specstrings.h>
41 #ifndef DECLSPEC_IMPORT
42 #define DECLSPEC_IMPORT __attribute__((dllimport))
45 #if defined(_ENGINE_EXPORT_)
48 #define ENGAPI DECLSPEC_IMPORT
51 #ifndef _NO_DDRAWINT_NO_COM
53 #if !defined(EXTERN_C)
55 #define EXTERN_C extern "C"
56 #define __EXTERN_C extern "C"
58 #define EXTERN_C extern
61 #endif /* !defined(EXTERN_C) */
63 #if !defined(DEFINE_GUID)
65 #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
66 __EXTERN_C const GUID name = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
68 #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
69 EXTERN_C const GUID FAR name
70 #endif /* !INITGUID */
71 #endif /* !defined(DEFINE_GUID) */
73 #if !defined(DEFINE_GUIDEX)
74 #define DEFINE_GUIDEX(name) EXTERN_C const CDECL GUID name
75 #endif /* !defined(DEFINE_GUIDEX) */
77 #if !defined(STATICGUIDOF)
78 #define STATICGUIDOF(guid) STATIC_##guid
79 #endif /* !defined(STATICGUIDOF) */
81 #if !defined(GUID_DEFINED)
90 #endif /* !defined(GUID_DEFINED) */
92 #if !defined(IsEqualGUID)
93 #define IsEqualGUID(guid1, guid2) \
94 (!memcmp((guid1), (guid2), sizeof(GUID)))
95 #endif /* !defined(IsEqualGUID) */
98 #define IsEqualIID IsEqualGUID
99 #endif /* !defined(IsEqualIID) */
101 #endif /* !_NO_DDRAWINT_NO_COM */
103 #define DDI_DRIVER_VERSION_NT4 0x00020000
104 #define DDI_DRIVER_VERSION_SP3 0x00020003
105 #define DDI_DRIVER_VERSION_NT5 0x00030000
106 #define DDI_DRIVER_VERSION_NT5_01 0x00030100
107 #define DDI_DRIVER_VERSION_NT5_01_SP1 0x00030101
109 #define GDI_DRIVER_VERSION 0x4000
111 #if defined(_X86_) && !defined(USERMODE_DRIVER) && !defined(BUILD_WOW6432)
112 typedef DWORD FLOATL
;
114 typedef FLOAT FLOATL
;
121 typedef ULONG_PTR HFF
;
122 typedef ULONG_PTR HFC
;
124 typedef LONG PTRDIFF
;
125 typedef PTRDIFF
*PPTRDIFF
;
130 typedef ULONG HGLYPH
;
131 typedef HGLYPH
*PHGLYPH
;
133 typedef LONG_PTR (APIENTRY
*PFN
)();
136 DECLARE_HANDLE(HDEV
);
137 DECLARE_HANDLE(HSURF
);
138 DECLARE_HANDLE(DHSURF
);
139 DECLARE_HANDLE(DHPDEV
);
140 DECLARE_HANDLE(HDRVOBJ
);
141 DECLARE_HANDLE(HSEMAPHORE
);
143 typedef _Return_type_success_(return >= 0) long NTSTATUS
;
146 typedef struct _ENG_EVENT
*PEVENT
;
149 #define OPENGL_CMD 4352
150 #define OPENGL_GETINFO 4353
151 #define WNDOBJ_SETUP 4354
153 #define FD_ERROR 0xFFFFFFFF
154 #define DDI_ERROR 0xFFFFFFFF
156 #define HFF_INVALID ((HFF) 0)
157 #define HFC_INVALID ((HFC) 0)
158 #define HGLYPH_INVALID ((HGLYPH) -1)
160 #define FP_ALTERNATEMODE 1
161 #define FP_WINDINGMODE 2
163 #define DN_ACCELERATION_LEVEL 1
164 #define DN_DEVICE_ORIGIN 2
165 #define DN_SLEEP_MODE 3
166 #define DN_DRAWING_BEGIN 4
167 #if (NTDDI_VERSION >= NTDDI_WIN8)
168 #define DN_ASSOCIATE_WINDOW 5
169 #define DN_COMPOSITION_CHANGED 6
170 #define DN_DRAWING_BEGIN_APIBITMAP 7
171 #define DN_SURFOBJ_DESTRUCTION 8
172 #endif /* (NTDDI_VERSION >= NTDDI_WIN8) */
174 #define SGI_EXTRASPACE 0
178 #define DCR_HALFTONE 2
180 #define GX_IDENTITY 0
185 #define LTOFX(x) ((x) << 4)
186 #define FXTOL(x) ((x) >> 4)
187 #define FXTOLFLOOR(x) ((x) >> 4)
188 #define FXTOLCEILING(x) ((x + 0x0F) >> 4)
189 #define FXTOLROUND(x) ((((x) >> 3) + 1) >> 1)
191 #define SIZEOFDV(cAxes) (offsetof(DESIGNVECTOR, dvValues) + (cAxes) * sizeof(LONG))
192 #define SIZEOFAXIW(cAxes) (offsetof(AXESLISTW, axlAxisInfo) + (cAxes) * sizeof(AXISINFOW))
193 #define SIZEOFAXIA(cAxes) (offsetof(AXESLISTA, axlAxisInfo) + (cAxes) * sizeof(AXISINFOA))
195 typedef struct _POINTE
{
200 typedef union _FLOAT_LONG
{
203 } FLOAT_LONG
, *PFLOAT_LONG
;
205 typedef struct _POINTFIX
{
208 } POINTFIX
, *PPOINTFIX
;
210 typedef struct _RECTFX
{
217 typedef struct _POINTQF
{
220 } POINTQF
, *PPOINTQF
;
223 typedef struct _BLENDOBJ
{
224 BLENDFUNCTION BlendFunction
;
225 } BLENDOBJ
,*PBLENDOBJ
;
227 /* BRUSHOBJ.flColorType */
228 #define BR_DEVICE_ICM 0x01
229 #define BR_HOST_ICM 0x02
230 #define BR_CMYKCOLOR 0x04
231 #define BR_ORIGCOLOR 0x08
233 typedef struct _BRUSHOBJ
{
239 typedef struct _CIECHROMA
{
245 typedef struct _RUN
{
250 typedef struct _CLIPLINE
{
255 _Field_size_(c
) RUN arun
[1];
256 } CLIPLINE
, *PCLIPLINE
;
258 /* CLIPOBJ.iDComplexity constants */
263 /* CLIPOBJ.iFComplexity constants */
268 /* CLIPOBJ.iMode constants */
269 #define TC_RECTANGLES 0
272 /* CLIPOBJ.fjOptions constants */
273 #define OC_BANK_CLIP 1
275 typedef struct _CLIPOBJ
{
284 typedef struct _COLORINFO
{
291 CIECHROMA AlignmentWhite
;
295 LDECI4 MagentaInCyanDye
;
296 LDECI4 YellowInCyanDye
;
297 LDECI4 CyanInMagentaDye
;
298 LDECI4 YellowInMagentaDye
;
299 LDECI4 CyanInYellowDye
;
300 LDECI4 MagentaInYellowDye
;
301 } COLORINFO
, *PCOLORINFO
;
303 /* DEVHTADJDATA.DeviceFlags constants */
304 #define DEVHTADJF_COLOR_DEVICE 0x00000001
305 #define DEVHTADJF_ADDITIVE_DEVICE 0x00000002
307 typedef struct _DEVHTINFO
{
312 } DEVHTINFO
, *PDEVHTINFO
;
314 typedef struct _DEVHTADJDATA
{
318 PDEVHTINFO pDefHTInfo
;
319 PDEVHTINFO pAdjHTInfo
;
320 } DEVHTADJDATA
, *PDEVHTADJDATA
;
322 /* DEVINFO.flGraphicsCaps flags */
323 #define GCAPS_BEZIERS 0x00000001
324 #define GCAPS_GEOMETRICWIDE 0x00000002
325 #define GCAPS_ALTERNATEFILL 0x00000004
326 #define GCAPS_WINDINGFILL 0x00000008
327 #define GCAPS_HALFTONE 0x00000010
328 #define GCAPS_COLOR_DITHER 0x00000020
329 #define GCAPS_HORIZSTRIKE 0x00000040
330 #define GCAPS_VERTSTRIKE 0x00000080
331 #define GCAPS_OPAQUERECT 0x00000100
332 #define GCAPS_VECTORFONT 0x00000200
333 #define GCAPS_MONO_DITHER 0x00000400
334 #define GCAPS_ASYNCCHANGE 0x00000800
335 #define GCAPS_ASYNCMOVE 0x00001000
336 #define GCAPS_DONTJOURNAL 0x00002000
337 #define GCAPS_DIRECTDRAW 0x00004000
338 #define GCAPS_ARBRUSHOPAQUE 0x00008000
339 #define GCAPS_PANNING 0x00010000
340 #define GCAPS_HIGHRESTEXT 0x00040000
341 #define GCAPS_PALMANAGED 0x00080000
342 #define GCAPS_DITHERONREALIZE 0x00200000
343 #define GCAPS_NO64BITMEMACCESS 0x00400000
344 #define GCAPS_FORCEDITHER 0x00800000
345 #define GCAPS_GRAY16 0x01000000
346 #define GCAPS_ICM 0x02000000
347 #define GCAPS_CMYKCOLOR 0x04000000
348 #define GCAPS_LAYERED 0x08000000
349 #define GCAPS_ARBRUSHTEXT 0x10000000
350 #define GCAPS_SCREENPRECISION 0x20000000
351 #define GCAPS_FONT_RASTERIZER 0x40000000
352 #define GCAPS_NUP 0x80000000
354 /* DEVINFO.iDitherFormat constants */
366 /* DEVINFO.flGraphicsCaps2 flags */
367 #define GCAPS2_JPEGSRC 0x00000001
368 #define GCAPS2_xxxx 0x00000002
369 #define GCAPS2_PNGSRC 0x00000008
370 #define GCAPS2_CHANGEGAMMARAMP 0x00000010
371 #define GCAPS2_ALPHACURSOR 0x00000020
372 #define GCAPS2_SYNCFLUSH 0x00000040
373 #define GCAPS2_SYNCTIMER 0x00000080
374 #define GCAPS2_ICD_MULTIMON 0x00000100
375 #define GCAPS2_MOUSETRAILS 0x00000200
376 #define GCAPS2_RESERVED1 0x00000400
377 #if (NTDDI_VERSION >= NTDDI_VISTA)
378 #define GCAPS2_EXCLUDELAYERED 0x00000800
379 #define GCAPS2_INCLUDEAPIBITMAPS 0x00001000
380 #define GCAPS2_SHOWHIDDENPOINTER 0x00002000
381 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
382 #if (NTDDI_VERSION >= NTDDI_WIN7)
383 #define GCAPS2_CLEARTYPE 0x00004000
384 #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
385 #if (NTDDI_VERSION >= NTDDI_WIN8)
386 #define GCAPS2_ACC_DRIVER 0x00008000
387 #endif /* (NTDDI_VERSION >= NTDDI_WIN8) */
389 typedef struct _DEVINFO
{
390 FLONG flGraphicsCaps
;
391 LOGFONTW lfDefaultFont
;
392 LOGFONTW lfAnsiVarFont
;
393 LOGFONTW lfAnsiFixFont
;
398 HPALETTE hpalDefault
;
399 FLONG flGraphicsCaps2
;
400 } DEVINFO
, *PDEVINFO
;
405 (APIENTRY CALLBACK
*FREEOBJPROC
)(
406 _In_
struct _DRIVEROBJ
*pDriverObj
);
408 typedef struct _DRIVEROBJ
{
410 FREEOBJPROC pFreeProc
;
415 /* DRVFN.iFunc constants */
416 #define INDEX_DrvEnablePDEV 0L
417 #define INDEX_DrvCompletePDEV 1L
418 #define INDEX_DrvDisablePDEV 2L
419 #define INDEX_DrvEnableSurface 3L
420 #define INDEX_DrvDisableSurface 4L
421 #define INDEX_DrvAssertMode 5L
422 #define INDEX_DrvOffset 6L
423 #define INDEX_DrvResetPDEV 7L
424 #define INDEX_DrvDisableDriver 8L
425 #define INDEX_DrvUnknown1 9L
426 #define INDEX_DrvCreateDeviceBitmap 10L
427 #define INDEX_DrvDeleteDeviceBitmap 11L
428 #define INDEX_DrvRealizeBrush 12L
429 #define INDEX_DrvDitherColor 13L
430 #define INDEX_DrvStrokePath 14L
431 #define INDEX_DrvFillPath 15L
432 #define INDEX_DrvStrokeAndFillPath 16L
433 #define INDEX_DrvPaint 17L
434 #define INDEX_DrvBitBlt 18L
435 #define INDEX_DrvCopyBits 19L
436 #define INDEX_DrvStretchBlt 20L
437 #define INDEX_DrvUnknown2 21L
438 #define INDEX_DrvSetPalette 22L
439 #define INDEX_DrvTextOut 23L
440 #define INDEX_DrvEscape 24L
441 #define INDEX_DrvDrawEscape 25L
442 #define INDEX_DrvQueryFont 26L
443 #define INDEX_DrvQueryFontTree 27L
444 #define INDEX_DrvQueryFontData 28L
445 #define INDEX_DrvSetPointerShape 29L
446 #define INDEX_DrvMovePointer 30L
447 #define INDEX_DrvLineTo 31L
448 #define INDEX_DrvSendPage 32L
449 #define INDEX_DrvStartPage 33L
450 #define INDEX_DrvEndDoc 34L
451 #define INDEX_DrvStartDoc 35L
452 #define INDEX_DrvUnknown3 36L
453 #define INDEX_DrvGetGlyphMode 37L
454 #define INDEX_DrvSynchronize 38L
455 #define INDEX_DrvUnknown4 39L
456 #define INDEX_DrvSaveScreenBits 40L
457 #define INDEX_DrvGetModes 41L
458 #define INDEX_DrvFree 42L
459 #define INDEX_DrvDestroyFont 43L
460 #define INDEX_DrvQueryFontCaps 44L
461 #define INDEX_DrvLoadFontFile 45L
462 #define INDEX_DrvUnloadFontFile 46L
463 #define INDEX_DrvFontManagement 47L
464 #define INDEX_DrvQueryTrueTypeTable 48L
465 #define INDEX_DrvQueryTrueTypeOutline 49L
466 #define INDEX_DrvGetTrueTypeFile 50L
467 #define INDEX_DrvQueryFontFile 51L
468 #define INDEX_DrvMovePanning 52L
469 #define INDEX_DrvQueryAdvanceWidths 53L
470 #define INDEX_DrvSetPixelFormat 54L
471 #define INDEX_DrvDescribePixelFormat 55L
472 #define INDEX_DrvSwapBuffers 56L
473 #define INDEX_DrvStartBanding 57L
474 #define INDEX_DrvNextBand 58L
475 #define INDEX_DrvGetDirectDrawInfo 59L
476 #define INDEX_DrvEnableDirectDraw 60L
477 #define INDEX_DrvDisableDirectDraw 61L
478 #define INDEX_DrvQuerySpoolType 62L
479 #define INDEX_DrvUnknown5 63L
480 #define INDEX_DrvIcmCreateColorTransform 64L
481 #define INDEX_DrvIcmDeleteColorTransform 65L
482 #define INDEX_DrvIcmCheckBitmapBits 66L
483 #define INDEX_DrvIcmSetDeviceGammaRamp 67L
484 #define INDEX_DrvGradientFill 68L
485 #define INDEX_DrvStretchBltROP 69L
486 #define INDEX_DrvPlgBlt 70L
487 #define INDEX_DrvAlphaBlend 71L
488 #define INDEX_DrvSynthesizeFont 72L
489 #define INDEX_DrvGetSynthesizedFontFiles 73L
490 #define INDEX_DrvTransparentBlt 74L
491 #define INDEX_DrvQueryPerBandInfo 75L
492 #define INDEX_DrvQueryDeviceSupport 76L
493 #define INDEX_DrvReserved1 77L
494 #define INDEX_DrvReserved2 78L
495 #define INDEX_DrvReserved3 79L
496 #define INDEX_DrvReserved4 80L
497 #define INDEX_DrvReserved5 81L
498 #define INDEX_DrvReserved6 82L
499 #define INDEX_DrvReserved7 83L
500 #define INDEX_DrvReserved8 84L
501 #define INDEX_DrvDeriveSurface 85L
502 #define INDEX_DrvQueryGlyphAttrs 86L
503 #define INDEX_DrvNotify 87L
504 #define INDEX_DrvSynchronizeSurface 88L
505 #define INDEX_DrvResetDevice 89L
506 #define INDEX_DrvReserved9 90L
507 #define INDEX_DrvReserved10 91L
508 #define INDEX_DrvReserved11 92L
509 #if (NTDDI_VERSION >= NTDDI_VISTA)
510 #define INDEX_DrvRenderHint 93L
511 #if (NTDDI_VERSION >= NTDDI_WIN7)
512 #define INDEX_DrvCreateDeviceBitmapEx 94L
513 #define INDEX_DrvDeleteDeviceBitmapEx 95L
514 #define INDEX_DrvAssociateSharedSurface 96L
515 #define INDEX_DrvSynchronizeRedirectionBitmaps 97L
516 #define INDEX_DrvAccumulateD3DDirtyRect 98L
517 #define INDEX_DrvStartDxInterop 99L
518 #define INDEX_DrvEndDxInterop 100L
519 #define INDEX_DrvLockDisplayArea 101L
520 #define INDEX_DrvUnlockDisplayArea 102L
521 #define INDEX_LAST 103L
522 #else /* (NTDDI_VERSION >= NTDDI_WIN7) */
523 #define INDEX_LAST 94L
524 #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
525 #else /* (NTDDI_VERSION >= NTDDI_VISTA) */
526 #define INDEX_LAST 93L
527 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
529 typedef struct _DRVFN
{
534 /* DRVENABLEDATA.iDriverVersion constants */
535 #define DDI_DRIVER_VERSION_NT4 0x00020000
536 #define DDI_DRIVER_VERSION_SP3 0x00020003
537 #define DDI_DRIVER_VERSION_NT5 0x00030000
538 #define DDI_DRIVER_VERSION_NT5_01 0x00030100
539 #define DDI_DRIVER_VERSION_NT5_01_SP1 0x00030101
541 typedef struct _DRVENABLEDATA
{
542 ULONG iDriverVersion
;
545 } DRVENABLEDATA
, *PDRVENABLEDATA
;
547 /* Font file status values */
548 #define FF_SIGNATURE_VERIFIED 0x00000001L
549 #define FF_IGNORED_SIGNATURE 0x00000002L
551 /* Obsolete in Windows 2000 and later */
556 PBYTE pvCurrentRecord
;
557 } EMFINFO
, *PEMFINFO
;
559 typedef struct _ENGSAFESEMAPHORE
{
564 typedef struct _ENG_TIME_FIELDS
{
565 _Field_range_(1601,MAXUSHORT
) USHORT usYear
;
566 _Field_range_(1,12) USHORT usMonth
;
567 _Field_range_(1,31) USHORT usDay
;
568 _Field_range_(0,23) USHORT usHour
;
569 _Field_range_(0,59) USHORT usMinute
;
570 _Field_range_(0,59) USHORT usSecond
;
571 _Field_range_(0,999) USHORT usMilliseconds
;
572 _Field_range_(0,6) USHORT usWeekday
; // 0 == Sunday
573 } ENG_TIME_FIELDS
, *PENG_TIME_FIELDS
;
575 typedef struct _ENUMRECTS
{
580 typedef struct _FD_XFORM
{
585 } FD_XFORM
, *PFD_XFORM
;
587 /* FD_DEVICEMETRICS.flRealizedType constants */
588 #define FDM_TYPE_BM_SIDE_CONST 0x00000001
589 #define FDM_TYPE_MAXEXT_EQUAL_BM_SIDE 0x00000002
590 #define FDM_TYPE_CHAR_INC_EQUAL_BM_BASE 0x00000004
591 #define FDM_TYPE_ZERO_BEARINGS 0x00000008
592 #define FDM_TYPE_CONST_BEARINGS 0x00000010
594 typedef struct _FD_DEVICEMETRICS
{
595 FLONG flRealizedType
;
601 POINTL ptlUnderline1
;
603 POINTL ptlULThickness
;
604 POINTL ptlSOThickness
;
608 FD_XFORM fdxQuantized
;
609 LONG lNonLinearExtLeading
;
610 LONG lNonLinearIntLeading
;
611 LONG lNonLinearMaxCharWidth
;
612 LONG lNonLinearAvgCharWidth
;
617 } FD_DEVICEMETRICS
, *PFD_DEVICEMETRICS
;
619 /* FD_GLYPHATTR.iMode constants */
620 #define FO_ATTR_MODE_ROTATE 1
622 typedef struct _FD_GLYPHATTR
{
626 _Field_size_((cGlyphs
+7)/8) BYTE aGlyphAttr
[1];
627 } FD_GLYPHATTR
, *PFD_GLYPHATTR
;
629 /* FD_GLYPHSET.flAccel */
630 #define GS_UNICODE_HANDLES 0x00000001
631 #define GS_8BIT_HANDLES 0x00000002
632 #define GS_16BIT_HANDLES 0x00000004
634 typedef struct _WCRUN
{
640 typedef struct _FD_GLYPHSET
{
643 ULONG cGlyphsSupported
;
645 _Field_size_(cRuns
) WCRUN awcrun
[1];
646 } FD_GLYPHSET
, *PFD_GLYPHSET
;
648 typedef struct _FD_KERNINGPAIR
{
654 /* Obsolete in Windows 2000 and later */
655 typedef struct _LIGATURE
{
660 } LIGATURE
, *PLIGATURE
;
662 /* Obsolete in Windows 2000 and later */
663 typedef struct _FD_LIGATURE
{
670 #if defined(_X86_) && !defined(USERMODE_DRIVER)
671 typedef struct _FLOATOBJ
675 } FLOATOBJ
, *PFLOATOBJ
;
677 typedef FLOAT FLOATOBJ
, *PFLOATOBJ
;
680 #ifndef USERMODE_DRIVER
681 typedef struct tagFLOATOBJ_XFORM
{
688 } FLOATOBJ_XFORM
, *PFLOATOBJ_XFORM
, FAR
*LPFLOATOBJ_XFORM
;
690 typedef XFORML FLOATOBJ_XFORM
, *PFLOATOBJ_XFORM
, FAR
*LPFLOATOBJ_XFORM
;
693 /* FONTDIFF.fsSelection */
694 #define FM_SEL_ITALIC 0x0001
695 #define FM_SEL_UNDERSCORE 0x0002
696 #define FM_SEL_NEGATIVE 0x0004
697 #define FM_SEL_OUTLINED 0x0008
698 #define FM_SEL_STRIKEOUT 0x0010
699 #define FM_SEL_BOLD 0x0020
700 #define FM_SEL_REGULAR 0x0040
702 typedef struct _FONTDIFF
{
709 FWORD fwdAveCharWidth
;
714 typedef struct _FONTSIM
{
717 PTRDIFF dpBoldItalic
;
720 /* FONTINFO.flCaps constants */
721 #define FO_DEVICE_FONT 1L
722 #define FO_OUTLINE_CAPABLE 2L
724 typedef struct _FONTINFO
{
727 ULONG cGlyphsSupported
;
732 } FONTINFO
, *PFONTINFO
;
734 /* FONTOBJ.flFontType constants */
735 #define FO_TYPE_RASTER RASTER_FONTTYPE
736 #define FO_TYPE_DEVICE DEVICE_FONTTYPE
737 #define FO_TYPE_TRUETYPE TRUETYPE_FONTTYPE
738 #define FO_TYPE_OPENTYPE OPENTYPE_FONTTYPE
740 #define FO_SIM_BOLD 0x00002000
741 #define FO_SIM_ITALIC 0x00004000
742 #define FO_EM_HEIGHT 0x00008000
743 #define FO_GRAY16 0x00010000
744 #define FO_NOGRAY16 0x00020000
745 #define FO_NOHINTS 0x00040000
746 #define FO_NO_CHOICE 0x00080000
747 #define FO_CFF 0x00100000
748 #define FO_POSTSCRIPT 0x00200000
749 #define FO_MULTIPLEMASTER 0x00400000
750 #define FO_VERT_FACE 0x00800000
751 #define FO_DBCS_FONT 0X01000000
752 #define FO_NOCLEARTYPE 0x02000000
753 #define FO_CLEARTYPE_X 0x10000000
754 #define FO_CLEARTYPE_Y 0x20000000
755 #define FO_CLEARTYPENATURAL_X 0x40000000
757 #define FD_NEGATIVE_FONT 1L /* Obsolete in Windows 2000 and later */
758 #define FO_DEVICE_FONT 1L
759 #define FO_OUTLINE_CAPABLE 2L
761 typedef struct _FONTOBJ
{
774 typedef struct _GAMMARAMP
{
778 } GAMMARAMP
, *PGAMMARAMP
;
780 /* GDIINFO.ulPrimaryOrder constants */
781 #define PRIMARY_ORDER_ABC 0
782 #define PRIMARY_ORDER_ACB 1
783 #define PRIMARY_ORDER_BAC 2
784 #define PRIMARY_ORDER_BCA 3
785 #define PRIMARY_ORDER_CBA 4
786 #define PRIMARY_ORDER_CAB 5
788 /* GDIINFO.ulHTPatternSize constants */
789 #define HT_PATSIZE_2x2 0
790 #define HT_PATSIZE_2x2_M 1
791 #define HT_PATSIZE_4x4 2
792 #define HT_PATSIZE_4x4_M 3
793 #define HT_PATSIZE_6x6 4
794 #define HT_PATSIZE_6x6_M 5
795 #define HT_PATSIZE_8x8 6
796 #define HT_PATSIZE_8x8_M 7
797 #define HT_PATSIZE_10x10 8
798 #define HT_PATSIZE_10x10_M 9
799 #define HT_PATSIZE_12x12 10
800 #define HT_PATSIZE_12x12_M 11
801 #define HT_PATSIZE_14x14 12
802 #define HT_PATSIZE_14x14_M 13
803 #define HT_PATSIZE_16x16 14
804 #define HT_PATSIZE_16x16_M 15
805 #define HT_PATSIZE_SUPERCELL 16
806 #define HT_PATSIZE_SUPERCELL_M 17
807 #define HT_PATSIZE_USER 18
808 #define HT_PATSIZE_MAX_INDEX HT_PATSIZE_USER
809 #define HT_PATSIZE_DEFAULT HT_PATSIZE_SUPERCELL_M
810 #define HT_USERPAT_CX_MIN 4
811 #define HT_USERPAT_CX_MAX 256
812 #define HT_USERPAT_CY_MIN 4
813 #define HT_USERPAT_CY_MAX 256
815 /* GDIINFO.ulHTOutputFormat constants */
816 #define HT_FORMAT_1BPP 0
817 #define HT_FORMAT_4BPP 2
818 #define HT_FORMAT_4BPP_IRGB 3
819 #define HT_FORMAT_8BPP 4
820 #define HT_FORMAT_16BPP 5
821 #define HT_FORMAT_24BPP 6
822 #define HT_FORMAT_32BPP 7
824 /* GDIINFO.flHTFlags */
825 #define HT_FLAG_SQUARE_DEVICE_PEL 0x00000001
826 #define HT_FLAG_HAS_BLACK_DYE 0x00000002
827 #define HT_FLAG_ADDITIVE_PRIMS 0x00000004
828 #define HT_FLAG_USE_8BPP_BITMASK 0x00000008
829 #define HT_FLAG_INK_HIGH_ABSORPTION 0x00000010
830 #define HT_FLAG_INK_ABSORPTION_INDICES 0x00000060
831 #define HT_FLAG_DO_DEVCLR_XFORM 0x00000080
832 #define HT_FLAG_OUTPUT_CMY 0x00000100
833 #define HT_FLAG_PRINT_DRAFT_MODE 0x00000200
834 #define HT_FLAG_INVERT_8BPP_BITMASK_IDX 0x00000400
835 #define HT_FLAG_8BPP_CMY332_MASK 0xFF000000
837 #define MAKE_CMYMASK_BYTE(c,m,y) ((BYTE)(((BYTE)(c) & 0x07) << 5) \
838 |(BYTE)(((BYTE)(m) & 0x07) << 2) \
839 |(BYTE)((BYTE)(y) & 0x03))
841 #define MAKE_CMY332_MASK(c,m,y) ((DWORD)(((DWORD)(c) & 0x07) << 29)\
842 |(DWORD)(((DWORD)(m) & 0x07) << 26)\
843 |(DWORD)(((DWORD)(y) & 0x03) << 24))
845 /* GDIINFO.flHTFlags constants */
846 #define HT_FLAG_INK_ABSORPTION_IDX0 0x00000000
847 #define HT_FLAG_INK_ABSORPTION_IDX1 0x00000020
848 #define HT_FLAG_INK_ABSORPTION_IDX2 0x00000040
849 #define HT_FLAG_INK_ABSORPTION_IDX3 0x00000060
851 #define HT_FLAG_HIGHEST_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \
852 |HT_FLAG_INK_ABSORPTION_IDX3)
853 #define HT_FLAG_HIGHER_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \
854 |HT_FLAG_INK_ABSORPTION_IDX2)
855 #define HT_FLAG_HIGH_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \
856 |HT_FLAG_INK_ABSORPTION_IDX1)
857 #define HT_FLAG_NORMAL_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX0
858 #define HT_FLAG_LOW_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX1
859 #define HT_FLAG_LOWER_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX2
860 #define HT_FLAG_LOWEST_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX3
862 #define HT_BITMASKPALRGB (DWORD)'0BGR'
863 #define HT_SET_BITMASKPAL2RGB(pPal) (*((LPDWORD)(pPal)) = HT_BITMASKPALRGB)
864 #define HT_IS_BITMASKPALRGB(pPal) (*((LPDWORD)(pPal)) == (DWORD)0)
866 /* GDIINFO.ulPhysicalPixelCharacteristics constants */
867 #define PPC_DEFAULT 0x0
868 #define PPC_UNDEFINED 0x1
869 #define PPC_RGB_ORDER_VERTICAL_STRIPES 0x2
870 #define PPC_BGR_ORDER_VERTICAL_STRIPES 0x3
871 #define PPC_RGB_ORDER_HORIZONTAL_STRIPES 0x4
872 #define PPC_BGR_ORDER_HORIZONTAL_STRIPES 0x5
874 #define PPG_DEFAULT 0
877 typedef struct _GDIINFO
{
900 POINTL ptlPhysOffset
;
904 ULONG ulDevicePelsDPI
;
905 ULONG ulPrimaryOrder
;
906 ULONG ulHTPatternSize
;
907 ULONG ulHTOutputFormat
;
910 ULONG ulBltAlignment
;
911 ULONG ulPanningHorzRes
;
912 ULONG ulPanningVertRes
;
913 ULONG xPanningAlignment
;
914 ULONG yPanningAlignment
;
921 ULONG ulPhysicalPixelCharacteristics
;
922 ULONG ulPhysicalPixelGamma
;
923 } GDIINFO
, *PGDIINFO
;
925 /* PATHDATA.flags constants */
926 #define PD_BEGINSUBPATH 0x00000001
927 #define PD_ENDSUBPATH 0x00000002
928 #define PD_RESETSTYLE 0x00000004
929 #define PD_CLOSEFIGURE 0x00000008
930 #define PD_BEZIERS 0x00000010
931 #define PD_ALL (PD_BEGINSUBPATH \
937 typedef struct _PATHDATA
{
941 } PATHDATA
, *PPATHDATA
;
943 /* PATHOBJ.fl constants */
944 #define PO_BEZIERS 0x00000001
945 #define PO_ELLIPSE 0x00000002
946 #define PO_ALL_INTEGERS 0x00000004
947 #define PO_ENUM_AS_INTEGERS 0x00000008
948 #if (NTDDI_VERSION >= NTDDI_WIN7)
949 #define PO_WIDENED 0x00000010
950 #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
952 typedef struct _PATHOBJ
{
957 typedef BYTE GAMMA_TABLES
[2][256];
959 typedef struct _GLYPHBITS
{
965 typedef union _GLYPHDEF
{
970 typedef struct _GLYPHPOS
{
974 } GLYPHPOS
, *PGLYPHPOS
;
976 typedef struct _GLYPHDATA
{
988 typedef struct _IFIEXTRA
{
992 PTRDIFF dpDesignVector
;
994 ULONG aulReserved
[1];
995 } IFIEXTRA
, *PIFIEXTRA
;
997 /* IFIMETRICS constants */
999 #define FM_VERSION_NUMBER 0x0
1001 /* IFIMETRICS.fsType constants */
1002 #define FM_TYPE_LICENSED 0x2
1003 #define FM_READONLY_EMBED 0x4
1004 #define FM_EDITABLE_EMBED 0x8
1005 #define FM_NO_EMBEDDING FM_TYPE_LICENSED
1007 /* IFIMETRICS.flInfo constants */
1008 #define FM_INFO_TECH_TRUETYPE 0x00000001
1009 #define FM_INFO_TECH_BITMAP 0x00000002
1010 #define FM_INFO_TECH_STROKE 0x00000004
1011 #define FM_INFO_TECH_OUTLINE_NOT_TRUETYPE 0x00000008
1012 #define FM_INFO_ARB_XFORMS 0x00000010
1013 #define FM_INFO_1BPP 0x00000020
1014 #define FM_INFO_4BPP 0x00000040
1015 #define FM_INFO_8BPP 0x00000080
1016 #define FM_INFO_16BPP 0x00000100
1017 #define FM_INFO_24BPP 0x00000200
1018 #define FM_INFO_32BPP 0x00000400
1019 #define FM_INFO_INTEGER_WIDTH 0x00000800
1020 #define FM_INFO_CONSTANT_WIDTH 0x00001000
1021 #define FM_INFO_NOT_CONTIGUOUS 0x00002000
1022 #define FM_INFO_TECH_MM 0x00004000
1023 #define FM_INFO_RETURNS_OUTLINES 0x00008000
1024 #define FM_INFO_RETURNS_STROKES 0x00010000
1025 #define FM_INFO_RETURNS_BITMAPS 0x00020000
1026 #define FM_INFO_DSIG 0x00040000
1027 #define FM_INFO_RIGHT_HANDED 0x00080000
1028 #define FM_INFO_INTEGRAL_SCALING 0x00100000
1029 #define FM_INFO_90DEGREE_ROTATIONS 0x00200000
1030 #define FM_INFO_OPTICALLY_FIXED_PITCH 0x00400000
1031 #define FM_INFO_DO_NOT_ENUMERATE 0x00800000
1032 #define FM_INFO_ISOTROPIC_SCALING_ONLY 0x01000000
1033 #define FM_INFO_ANISOTROPIC_SCALING_ONLY 0x02000000
1034 #define FM_INFO_TECH_CFF 0x04000000
1035 #define FM_INFO_FAMILY_EQUIV 0x08000000
1036 #define FM_INFO_DBCS_FIXED_PITCH 0x10000000
1037 #define FM_INFO_NONNEGATIVE_AC 0x20000000
1038 #define FM_INFO_IGNORE_TC_RA_ABLE 0x40000000
1039 #define FM_INFO_TECH_TYPE1 0x80000000
1041 #define MAXCHARSETS 16 /* Obsolete in Windows 2000 and later */
1043 /* IFIMETRICS.ulPanoseCulture constants */
1044 #define FM_PANOSE_CULTURE_LATIN 0x0
1046 typedef struct _IFIMETRICS
{
1049 PTRDIFF dpwszFamilyName
;
1050 PTRDIFF dpwszStyleName
;
1051 PTRDIFF dpwszFaceName
;
1052 PTRDIFF dpwszUniqueName
;
1059 BYTE jWinPitchAndFamily
;
1064 FWORD fwdUnitsPerEm
;
1065 FWORD fwdLowestPPEm
;
1066 FWORD fwdWinAscender
;
1067 FWORD fwdWinDescender
;
1068 FWORD fwdMacAscender
;
1069 FWORD fwdMacDescender
;
1070 FWORD fwdMacLineGap
;
1071 FWORD fwdTypoAscender
;
1072 FWORD fwdTypoDescender
;
1073 FWORD fwdTypoLineGap
;
1074 FWORD fwdAveCharWidth
;
1075 FWORD fwdMaxCharInc
;
1078 FWORD fwdSubscriptXSize
;
1079 FWORD fwdSubscriptYSize
;
1080 FWORD fwdSubscriptXOffset
;
1081 FWORD fwdSubscriptYOffset
;
1082 FWORD fwdSuperscriptXSize
;
1083 FWORD fwdSuperscriptYSize
;
1084 FWORD fwdSuperscriptXOffset
;
1085 FWORD fwdSuperscriptYOffset
;
1086 FWORD fwdUnderscoreSize
;
1087 FWORD fwdUnderscorePosition
;
1088 FWORD fwdStrikeoutSize
;
1089 FWORD fwdStrikeoutPosition
;
1096 WCHAR wcDefaultChar
;
1103 ULONG cKerningPairs
;
1104 ULONG ulPanoseCulture
;
1109 } IFIMETRICS
, *PIFIMETRICS
;
1112 #define LA_GEOMETRIC 0x00000001
1113 #define LA_ALTERNATE 0x00000002
1114 #define LA_STARTGAP 0x00000004
1115 #define LA_STYLED 0x00000008
1117 /* LINEATTRS.iJoin */
1118 #define JOIN_ROUND 0L
1119 #define JOIN_BEVEL 1L
1120 #define JOIN_MITER 2L
1122 /* LINEATTRS.iEndCap */
1123 #define ENDCAP_ROUND 0L
1124 #define ENDCAP_SQUARE 1L
1125 #define ENDCAP_BUTT 2L
1127 typedef struct _LINEATTRS
{
1135 FLOAT_LONG elStyleState
;
1136 } LINEATTRS
, *PLINEATTRS
;
1138 typedef struct _PALOBJ
{
1142 typedef struct _PERBANDINFO
{
1143 BOOL bRepeatThisBand
;
1147 } PERBANDINFO
, *PPERBANDINFO
;
1149 /* STROBJ.flAccel constants */
1150 #define SO_FLAG_DEFAULT_PLACEMENT 0x00000001
1151 #define SO_HORIZONTAL 0x00000002
1152 #define SO_VERTICAL 0x00000004
1153 #define SO_REVERSED 0x00000008
1154 #define SO_ZERO_BEARINGS 0x00000010
1155 #define SO_CHAR_INC_EQUAL_BM_BASE 0x00000020
1156 #define SO_MAXEXT_EQUAL_BM_SIDE 0x00000040
1157 #define SO_DO_NOT_SUBSTITUTE_DEVICE_FONT 0x00000080
1158 #define SO_GLYPHINDEX_TEXTOUT 0x00000100
1159 #define SO_ESC_NOT_ORIENT 0x00000200
1160 #define SO_DXDY 0x00000400
1161 #define SO_CHARACTER_EXTRA 0x00000800
1162 #define SO_BREAK_EXTRA 0x00001000
1164 typedef struct _STROBJ
{
1174 /* SURFOBJ.iType constants */
1175 #define STYPE_BITMAP 0L
1176 #define STYPE_DEVICE 1L
1177 #define STYPE_DEVBITMAP 3L
1179 /* SURFOBJ.fjBitmap constants */
1180 #define BMF_TOPDOWN 0x0001
1181 #define BMF_NOZEROINIT 0x0002
1182 #define BMF_DONTCACHE 0x0004
1183 #define BMF_USERMEM 0x0008
1184 #define BMF_KMSECTION 0x0010
1185 #define BMF_NOTSYSMEM 0x0020
1186 #define BMF_WINDOW_BLT 0x0040
1187 #define BMF_UMPDMEM 0x0080
1188 #if (NTDDI_VERSION >= NTDDI_WIN7)
1189 #define BMF_TEMP_ALPHA 0x0100
1190 #endif /* (NTDDI_VERSION >= NTDDI_WIN7) *(
1191 #if (NTDDI_VERSION >= NTDDI_WIN8)
1192 #define BMF_ACC_NOTIFY 0x8000
1193 #define BMF_RMT_ENTER 0x4000
1194 #endif /* (NTDDI_VERSION >= NTDDI_WIN8) */
1196 #if (NTDDI_VERSION >= NTDDI_WIN8)
1197 #define BMF_RESERVED 0x3E00
1198 #elif (NTDDI_VERSION >= NTDDI_WIN7)
1199 #define BMF_RESERVED 0xFE00
1201 #define BMF_RESERVED 0xFF00
1204 typedef struct _SURFOBJ
{
1215 ULONG iBitmapFormat
;
1220 typedef struct _TYPE1_FONT
{
1226 typedef struct _WNDOBJ
{
1233 typedef struct _XFORML
{
1242 typedef struct _XFORMOBJ
{
1246 /* XLATEOBJ.flXlate constants */
1247 #define XO_TRIVIAL 0x00000001
1248 #define XO_TABLE 0x00000002
1249 #define XO_TO_MONO 0x00000004
1250 #define XO_FROM_CMYK 0x00000008
1251 #define XO_DEVICE_ICM 0x00000010
1252 #define XO_HOST_ICM 0x00000020
1254 typedef struct _XLATEOBJ
{
1263 /* WNDOBJCHANGEPROC.fl constants */
1264 #define WOC_RGN_CLIENT_DELTA 0x00000001
1265 #define WOC_RGN_CLIENT 0x00000002
1266 #define WOC_RGN_SURFACE_DELTA 0x00000004
1267 #define WOC_RGN_SURFACE 0x00000008
1268 #define WOC_CHANGED 0x00000010
1269 #define WOC_DELETE 0x00000020
1270 #define WOC_DRAWN 0x00000040
1271 #define WOC_SPRITE_OVERLAP 0x00000080
1272 #define WOC_SPRITE_NO_OVERLAP 0x00000100
1273 #if (NTDDI_VERSION >= NTDDI_VISTA)
1274 #define WOC_RGN_SPRITE 0x00000200
1275 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
1277 typedef VOID (APIENTRY CALLBACK
*WNDOBJCHANGEPROC
)(
1285 BRUSHOBJ_hGetColorTransform(
1286 _In_ BRUSHOBJ
*pbo
);
1288 _Ret_opt_bytecount_(cj
)
1292 BRUSHOBJ_pvAllocRbrush(
1299 BRUSHOBJ_pvGetRbrush(
1300 _In_ BRUSHOBJ
*pbo
);
1305 BRUSHOBJ_ulGetBrushColor(
1306 _In_ BRUSHOBJ
*pbo
);
1314 _Out_bytecap_(cj
) ULONG
*pul
);
1316 /* CLIPOBJ_cEnumStart.iType constants */
1317 #define CT_RECTANGLES 0L
1319 /* CLIPOBJ_cEnumStart.iDirection constants */
1320 #define CD_RIGHTDOWN 0x00000000
1321 #define CD_LEFTDOWN 0x00000001
1322 #define CD_LEFTWARDS 0x00000001
1323 #define CD_RIGHTUP 0x00000002
1324 #define CD_UPWARDS 0x00000002
1325 #define CD_LEFTUP 0x00000003
1326 #define CD_ANY 0x00000004
1332 _Inout_ CLIPOBJ
*pco
,
1335 _In_ ULONG iDirection
,
1344 #if (NTDDI_VERSION >= NTDDI_VISTA)
1355 EngAcquireSemaphore(
1356 _Inout_ HSEMAPHORE hsem
);
1358 #define FL_ZERO_MEMORY 0x00000001
1359 #define FL_NONPAGED_MEMORY 0x00000002
1360 #if (NTDDI_VERSION >= NTDDI_WIN7)
1361 #define FL_NON_SESSION 0x00000004
1362 #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
1364 #ifdef USERMODE_DRIVER
1366 #define EngAllocMem(fl, cj, tag) ((PVOID)GlobalAlloc(((fl) & FL_ZERO_MEMORY) ? GPTR : GMEM_FIXED, cj))
1367 #define EngAllocPrivateUserMem(psl, cj, tag) ((PVOID)GlobalAlloc(GMEM_FIXED, cj))
1368 #define EngAllocUserMem(cj, tag) ((PVOID)GlobalAlloc(GMEM_FIXED, cj))
1370 #else /* !USERMODE_DRIVER */
1372 _Must_inspect_result_
1373 _When_(fl
& FL_ZERO_MEMORY
, _Ret_opt_bytecount_(cjMemSize
))
1374 _When_(!(fl
& FL_ZERO_MEMORY
), _Ret_opt_bytecap_(cjMemSize
))
1380 _In_ ULONG cjMemSize
,
1383 _Must_inspect_result_
1384 _Ret_opt_bytecount_(cjMemSize
)
1388 EngAllocPrivateUserMem(
1389 _In_ PDD_SURFACE_LOCAL psl
,
1390 _In_ SIZE_T cjMemSize
,
1393 _Must_inspect_result_
1394 _Ret_opt_bytecount_(cjMemSize
)
1399 _In_ SIZE_T cjMemSize
,
1402 #endif /* !USERMODE_DRIVER */
1408 _Inout_ SURFOBJ
*psoDest
,
1409 _In_ SURFOBJ
*psoSrc
,
1410 _In_opt_ CLIPOBJ
*pco
,
1411 _In_opt_ XLATEOBJ
*pxlo
,
1412 _In_ RECTL
*prclDest
,
1413 _In_ RECTL
*prclSrc
,
1414 _In_ BLENDOBJ
*pBlendObj
);
1416 /* EngAssociateSurface.flHooks constants */
1417 #define HOOK_BITBLT 0x00000001
1418 #define HOOK_STRETCHBLT 0x00000002
1419 #define HOOK_PLGBLT 0x00000004
1420 #define HOOK_TEXTOUT 0x00000008
1421 #define HOOK_PAINT 0x00000010
1422 #define HOOK_STROKEPATH 0x00000020
1423 #define HOOK_FILLPATH 0x00000040
1424 #define HOOK_STROKEANDFILLPATH 0x00000080
1425 #define HOOK_LINETO 0x00000100
1426 #define HOOK_COPYBITS 0x00000400
1427 #define HOOK_MOVEPANNING 0x00000800
1428 #define HOOK_SYNCHRONIZE 0x00001000
1429 #define HOOK_STRETCHBLTROP 0x00002000
1430 #define HOOK_SYNCHRONIZEACCESS 0x00004000
1431 #define HOOK_TRANSPARENTBLT 0x00008000
1432 #define HOOK_ALPHABLEND 0x00010000
1433 #define HOOK_GRADIENTFILL 0x00020000
1434 #if (NTDDI_VERSION >= NTDDI_VISTA)
1435 #define HOOK_FLAGS 0x0003b5ef
1437 #define HOOK_FLAGS 0x0003b5ff
1443 EngAssociateSurface(
1446 _In_ FLONG flHooks
);
1452 _Inout_ SURFOBJ
*psoTrg
,
1453 _In_opt_ SURFOBJ
*psoSrc
,
1454 _In_opt_ SURFOBJ
*psoMask
,
1455 _In_opt_ CLIPOBJ
*pco
,
1456 _In_opt_ XLATEOBJ
*pxlo
,
1457 _In_ RECTL
*prclTrg
,
1458 _In_opt_ POINTL
*pptlSrc
,
1459 _In_opt_ POINTL
*pptlMask
,
1460 _In_opt_ BRUSHOBJ
*pbo
,
1461 _In_opt_ POINTL
*pptlBrush
,
1474 _In_ PEVENT pEvent
);
1476 _Success_(return != 0)
1482 _In_ INT nFirstChar
,
1485 /* EngControlSprites.fl constants */
1486 #define ECS_TEARDOWN 0x00000001
1487 #define ECS_REDRAW 0x00000002
1493 _Inout_ WNDOBJ
*pwo
,
1500 _In_ SURFOBJ
*psoDest
,
1501 _In_ SURFOBJ
*psoSrc
,
1502 _In_opt_ CLIPOBJ
*pco
,
1503 _In_opt_ XLATEOBJ
*pxlo
,
1504 _In_
__in_data_source(USER_MODE
) RECTL
*prclDest
,
1505 _In_
__in_data_source(USER_MODE
) POINTL
*pptlSrc
);
1515 _In_opt_ PVOID pvBits
);
1520 EngCreateClip(VOID
);
1522 _Must_inspect_result_
1526 EngCreateDeviceBitmap(
1529 _In_ ULONG iFormatCompat
);
1531 _Must_inspect_result_
1535 EngCreateDeviceSurface(
1538 _In_ ULONG iFormatCompat
);
1540 _Must_inspect_result_
1546 _In_opt_ FREEOBJPROC pFreeObjProc
,
1549 _Must_inspect_result_
1550 _Success_(return != FALSE
)
1555 _Outptr_ PEVENT
*ppEvent
);
1557 /* EngCreatePalette.iMode constants */
1558 #define PAL_INDEXED 0x00000001
1559 #define PAL_BITFIELDS 0x00000002
1560 #define PAL_RGB 0x00000004
1561 #define PAL_BGR 0x00000008
1562 #define PAL_CMYK 0x00000010
1564 _Must_inspect_result_
1571 _In_ ULONG
*pulColors
,
1579 EngCreatePath(VOID
);
1584 EngCreateSemaphore(VOID
);
1586 /* EngCreateWnd.fl constants */
1587 #define WO_RGN_CLIENT_DELTA 0x00000001
1588 #define WO_RGN_CLIENT 0x00000002
1589 #define WO_RGN_SURFACE_DELTA 0x00000004
1590 #define WO_RGN_SURFACE 0x00000008
1591 #define WO_RGN_UPDATE_ALL 0x00000010
1592 #define WO_RGN_WINDOW 0x00000020
1593 #define WO_DRAW_NOTIFY 0x00000040
1594 #define WO_SPRITE_NOTIFY 0x00000080
1595 #define WO_RGN_DESKTOP_COORD 0x00000100
1596 #if (NTDDI_VERSION >= NTDDI_VISTA)
1597 #define WO_RGN_SPRITE 0x00000200
1598 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
1600 _Must_inspect_result_
1607 _In_ WNDOBJCHANGEPROC pfn
,
1609 _In_ INT iPixelFormat
);
1615 EngDebugBreak(VOID
);
1621 _In_z_ PCHAR StandardPrefix
,
1622 _In_z_ PCHAR DebugMessage
,
1629 _In_ _Post_ptr_invalid_ CLIPOBJ
*pco
);
1635 _In_ _Post_ptr_invalid_ HDRVOBJ hdo
,
1636 _In_ BOOL bCallBack
,
1643 _In_ _Post_ptr_invalid_ PEVENT pEvent
);
1649 _In_ LPWSTR pwszFileName
);
1655 _In_ _Post_ptr_invalid_ HPALETTE hpal
);
1661 _In_ _Post_ptr_invalid_ PATHOBJ
*ppo
);
1666 EngDeleteSafeSemaphore(
1667 _Inout_ ENGSAFESEMAPHORE
*pssem
);
1673 _In_ _Post_ptr_invalid_ HSEMAPHORE hsem
);
1679 _In_ _Post_ptr_invalid_ HSURF hsurf
);
1685 _In_ _Post_ptr_invalid_ WNDOBJ
*pwo
);
1687 _Success_(return==0)
1692 _In_ HANDLE hDevice
,
1693 _In_ DWORD dwIoControlCode
,
1694 _In_reads_bytes_opt_(cjInBufferSize
) LPVOID lpInBuffer
,
1695 _In_ DWORD cjInBufferSize
,
1696 _Out_writes_bytes_opt_(cjOutBufferSize
) LPVOID lpOutBuffer
,
1697 _In_ DWORD cjOutBufferSize
,
1698 _Out_ LPDWORD lpBytesReturned
);
1700 #define DM_DEFAULT 0x00000001
1701 #define DM_MONOCHROME 0x00000002
1710 _When_(iMode
== DM_DEFAULT
, _Out_writes_bytes_(16*8))
1711 _When_(iMode
== DM_MONOCHROME
, _Out_writes_bytes_(8))
1714 /* Obsolete in Windows 2000 and later */
1720 _Inout_ PVOID pBuffer
,
1721 _In_ ULONG ulBufferSize
);
1723 #ifdef USERMODE_DRIVER
1724 #define EngEnumForms EnumForms
1725 #else /* !USERMODE_DRIVER */
1730 _In_ HANDLE hPrinter
,
1732 _Out_writes_bytes_opt_(cbBuf
) LPBYTE pForm
,
1734 _Out_ LPDWORD pcbNeeded
,
1735 _Out_ LPDWORD pcReturned
);
1736 #endif /* !USERMODE_DRIVER */
1750 _Inout_ SURFOBJ
*pso
,
1754 _In_ POINTL
*pptlBrushOrg
,
1756 _In_ FLONG flOptions
);
1758 #ifdef USERMODE_DRIVER
1759 #define EngFindImageProcAddress(h, procname) ((PVOID) GetProcAddress(h, procname))
1760 #else /* !USERMODE_DRIVER */
1764 EngFindImageProcAddress(
1765 _In_ HANDLE hModule
,
1766 _In_ LPSTR lpProcName
);
1767 #endif /* !USERMODE_DRIVER */
1776 _Out_ PULONG pulSize
);
1778 _Must_inspect_result_
1779 _Ret_opt_bytecap_(cjSize
)
1784 _In_ ULONG ulFastCheckSum
,
1787 /* EngFntCacheFault.iFaultMode constants */
1788 #define ENG_FNT_CACHE_READ_FAULT 0x00000001
1789 #define ENG_FNT_CACHE_WRITE_FAULT 0x00000002
1795 _In_ ULONG ulFastCheckSum
,
1796 _In_ ULONG iFaultMode
);
1802 _In_ ULONG FastCheckSum
,
1803 _Out_ ULONG
*pulSize
);
1805 #ifdef USERMODE_DRIVER
1807 #define EngFreeMem(p) GlobalFree((HGLOBAL) (p))
1808 #define EngFreePrivateUserMem( psl, p) GlobalFree((HGLOBAL) (p))
1809 #define EngFreeUserMem(p) GlobalFree((HGLOBAL) (p))
1811 #else /* !USERMODE_DRIVER */
1817 _In_ _Post_ptr_invalid_ PVOID pv
);
1822 EngFreePrivateUserMem(
1823 _In_ PDD_SURFACE_LOCAL psl
,
1824 _In_ _Post_ptr_invalid_ PVOID pv
);
1830 _In_ _Post_ptr_invalid_ PVOID pv
);
1832 #endif /* !USERMODE_DRIVER */
1844 EngGetCurrentCodePage(
1845 _Out_ PUSHORT OemCodePage
,
1846 _Out_ PUSHORT AnsiCodePage
);
1851 EngGetCurrentProcessId(VOID
);
1856 EngGetCurrentThreadId(VOID
);
1858 _Must_inspect_result_ _Ret_z_
1868 EngGetFileChangeTime(
1870 _Out_ LARGE_INTEGER
*pChangeTime
);
1877 _Out_
WCHAR (*pDest
)[MAX_PATH
+1]);
1879 #ifdef USERMODE_DRIVER
1880 #define EngGetForm GetForm
1881 #define EngGetLastError GetLastError
1882 #define EngGetPrinter GetPrinter
1883 #define EngGetPrinterData GetPrinterData
1884 #else /* !USERMODE_DRIVER */
1889 _In_ HANDLE hPrinter
,
1890 _In_ LPWSTR pFormName
,
1892 _In_reads_bytes_opt_(cbBuf
) LPBYTE pForm
,
1894 _Out_ LPDWORD pcbNeeded
);
1899 EngGetLastError(VOID
);
1905 _In_ HANDLE hPrinter
,
1907 _Out_writes_bytes_opt_(cbBuf
) LPBYTE pPrinter
,
1909 _Out_ LPDWORD pcbNeeded
);
1915 _In_ HANDLE hPrinter
,
1916 _In_ LPWSTR pValueName
,
1917 _Out_opt_ LPDWORD pType
,
1918 _Out_writes_bytes_opt_(cjSize
) LPBYTE pData
,
1920 _Out_ LPDWORD pcjNeeded
);
1921 #endif /* !USERMODE_DRIVER */
1926 EngGetPrinterDataFileName(
1929 #ifdef USERMODE_DRIVER
1930 #define EngGetPrinterDriver GetPrinterDriver
1931 #else /* !USERMODE_DRIVER */
1935 EngGetPrinterDriver(
1936 _In_ HANDLE hPrinter
,
1937 _In_opt_ LPWSTR pEnvironment
,
1939 _Out_writes_bytes_opt_(cjBufSize
) BYTE
*lpbDrvInfo
,
1940 _In_ DWORD cjBufSize
,
1941 _Out_ DWORD
*pcjNeeded
);
1942 #endif /* !USERMODE_DRIVER */
1947 EngGetProcessHandle(VOID
);
1952 EngGetType1FontList(
1954 _Out_writes_bytes_opt_(cjType1Buffer
) TYPE1_FONT
*pType1Buffer
,
1955 _In_ ULONG cjType1Buffer
,
1956 _Out_ PULONG pulLocalFonts
,
1957 _Out_ PULONG pulRemoteFonts
,
1958 _Out_ LARGE_INTEGER
*pLastModified
);
1964 _Inout_ SURFOBJ
*psoDest
,
1966 _In_opt_ XLATEOBJ
*pxlo
,
1967 _In_ TRIVERTEX
*pVertex
,
1971 _In_ RECTL
*prclExtents
,
1972 _In_ POINTL
*pptlDitherOrg
,
1975 /* EngHangNotification return values */
1976 #define EHN_RESTORED 0x00000000
1977 #define EHN_ERROR 0x00000001
1982 EngHangNotification(
1984 _Reserved_ PVOID Reserved
);
1989 EngInitializeSafeSemaphore(
1990 _Out_ ENGSAFESEMAPHORE
*pssem
);
1995 EngIsSemaphoreOwned(
1996 _In_ HSEMAPHORE hsem
);
2001 EngIsSemaphoreOwnedByCurrentThread(
2002 _In_ HSEMAPHORE hsem
);
2008 _Inout_ SURFOBJ
*pso
,
2015 _In_opt_ RECTL
*prclBounds
,
2018 #ifdef USERMODE_DRIVER
2019 #define EngLoadImage(pwszDriver) ((HANDLE)LoadLibraryW(pwszDriver))
2020 #else /* !USERMODE_DRIVER */
2025 _In_ LPWSTR pwszDriver
);
2026 #endif /* !USERMODE_DRIVER */
2037 EngLoadModuleForWrite(
2039 _In_ ULONG cjSizeOfModule
);
2044 EngLockDirectDrawSurface(
2045 _In_ HANDLE hSurface
);
2062 EngLpkInstalled(VOID
);
2069 _In_ HANDLE hUserObject
,
2070 _Reserved_ PVOID Reserved1
,
2071 _Reserved_ PVOID Reserved2
,
2072 _Reserved_ PVOID Reserved3
);
2074 _Success_(return != 0)
2075 _When_(cjSize
!= 0, _At_(return, _Out_writes_bytes_(cjSize
)))
2082 _Out_ ULONG_PTR
*piFile
);
2084 __drv_preferredFunction("EngMapFontFileFD", "Obsolete")
2089 _In_ ULONG_PTR iFile
,
2090 _Outptr_result_bytebuffer_(*pcjBuf
) PULONG
*ppjBuf
,
2091 _Out_ ULONG
*pcjBuf
);
2097 _In_ ULONG_PTR iFile
,
2098 _Outptr_result_bytebuffer_(*pcjBuf
) PULONG
*ppjBuf
,
2099 _Out_ ULONG
*pcjBuf
);
2106 _Out_ PULONG pSize
);
2111 EngMarkBandingSurface(
2114 /* EngModifySurface.flSurface constants */
2115 #define MS_NOTSYSTEMMEMORY 0x00000001
2116 #define MS_SHAREDACCESS 0x00000002
2117 #define MS_CDDDEVICEBITMAP 0x00000004
2126 _In_ FLONG flSurface
,
2130 _Reserved_ PVOID pvReserved
);
2141 #ifdef USERMODE_DRIVER
2142 #define EngMulDiv MulDiv
2143 #else /* !USERMODE_DRIVER */
2151 #endif /* !USERMODE_DRIVER */
2156 EngMultiByteToUnicodeN(
2157 _Out_writes_bytes_to_(MaxBytesInUnicodeString
, *BytesInUnicodeString
) LPWSTR UnicodeString
,
2158 _In_ ULONG MaxBytesInUnicodeString
,
2159 _Out_opt_ PULONG BytesInUnicodeString
,
2160 _In_reads_bytes_(BytesInMultiByteString
) PCHAR MultiByteString
,
2161 _In_ ULONG BytesInMultiByteString
);
2166 EngMultiByteToWideChar(
2168 _Out_writes_bytes_opt_(cjWideCharString
) LPWSTR WideCharString
,
2169 _In_ INT cjWideCharString
,
2170 _In_reads_bytes_opt_(cjMultiByteString
) LPSTR MultiByteString
,
2171 _In_ INT cjMultiByteString
);
2180 _In_ POINTL
*pptlBrushOrg
,
2181 _In_
__in_data_source(USER_MODE
) MIX mix
);
2187 _In_ SURFOBJ
*psoTrg
,
2188 _In_ SURFOBJ
*psoSrc
,
2189 _In_opt_ SURFOBJ
*psoMsk
,
2191 _In_opt_ XLATEOBJ
*pxlo
,
2192 _In_ COLORADJUSTMENT
*pca
,
2193 _In_ POINTL
*pptlBrushOrg
,
2194 _In_ POINTFIX
*pptfx
,
2196 _When_(psoMsk
, _In_
) POINTL
*pptl
,
2197 _In_
__in_data_source(USER_MODE
) ULONG iMode
);
2203 _In_reads_bytes_(Length
) PVOID Address
,
2205 _In_ ULONG Alignment
);
2210 EngProbeForReadAndWrite(
2211 _Inout_updates_bytes_(Length
) PVOID Address
,
2213 _In_ ULONG Alignment
);
2215 typedef enum _ENG_DEVICE_ATTRIBUTE
{
2217 QDA_ACCELERATION_LEVEL
2218 } ENG_DEVICE_ATTRIBUTE
;
2223 EngQueryDeviceAttribute(
2225 _In_ ENG_DEVICE_ATTRIBUTE devAttr
,
2226 _In_reads_bytes_(cjInSize
) PVOID pvIn
,
2227 _In_ ULONG cjInSize
,
2228 _Out_writes_bytes_(cjOutSize
) PVOID pvOut
,
2229 _In_ ULONG cjOutSize
);
2231 /* Obsolete in Windows 2000 and later */
2232 DECLSPEC_DEPRECATED_DDK
2236 _Out_ EMFINFO
*pEMFInfo
);
2241 EngQueryFileTimeStamp(
2248 _Out_ PENG_TIME_FIELDS ptf
);
2255 _Out_ ULONG
*piMode
,
2257 _Out_writes_opt_(cColors
) ULONG
*pulColors
);
2262 EngQueryPerformanceCounter(
2263 _Out_ LONGLONG
*pPerformanceCount
);
2268 EngQueryPerformanceFrequency(
2269 _Out_ LONGLONG
*pFrequency
);
2271 typedef enum _ENG_SYSTEM_ATTRIBUTE
{
2272 EngProcessorFeature
= 1,
2273 EngNumberOfProcessors
,
2274 EngOptimumAvailableUserMemory
,
2275 EngOptimumAvailableSystemMemory
,
2276 } ENG_SYSTEM_ATTRIBUTE
;
2278 #define QSA_MMX 0x00000100
2279 #define QSA_SSE 0x00002000
2280 #define QSA_3DNOW 0x00004000
2281 #if (NTDDI_VERSION >= NTDDI_VISTA)
2282 #define QSA_SSE1 QSA_SSE
2283 #define QSA_SSE2 0x00010000
2284 #define QSA_SSE3 0x00080000
2285 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
2292 EngQuerySystemAttribute(
2293 _In_ ENG_SYSTEM_ATTRIBUTE CapNum
,
2294 _Out_ PDWORD pCapability
);
2300 _In_ PEVENT pEvent
);
2305 EngReleaseSemaphore(
2306 _In_ HSEMAPHORE hsem
);
2308 #if defined(_M_AMD64) && (NTDDI_VERSION >= NTDDI_VISTA)
2312 _Kernel_float_restored_
2313 _At_(*pBuffer
, _Kernel_requires_resource_held_(EngFloatState
)
2314 _Kernel_releases_resource_(EngFloatState
))
2318 EngRestoreFloatingPointState(
2319 _In_reads_(_Inexpressible_(statesize
))
2322 UNREFERENCED_PARAMETER(pBuffer
);
2327 _Success_(((pBuffer
!= NULL
&& cjBufferSize
!= 0) && return == 1) ||
2328 ((pBuffer
== NULL
|| cjBufferSize
== 0) && return > 0))
2329 _When_(pBuffer
!= NULL
&& cjBufferSize
!= 0 && return == 1, _Kernel_float_saved_
2330 _At_(*pBuffer
, _Post_valid_
_Kernel_acquires_resource_(EngFloatState
)))
2331 _On_failure_(_Post_satisfies_(return == 0))
2335 EngSaveFloatingPointState(
2336 _At_(*pBuffer
, _Kernel_requires_resource_not_held_(EngFloatState
))
2337 _Out_writes_bytes_opt_(cjBufferSize
) PVOID pBuffer
,
2338 _Inout_ ULONG cjBufferSize
)
2340 return ((((pBuffer
) == NULL
) || ((cjBufferSize
) == 0)) ? 8 : TRUE
);
2343 #else /* !(defined(_M_AMD64) && (NTDDI_VERSION >= NTDDI_VISTA)) */
2347 _Kernel_float_restored_
2348 _At_(*pBuffer
, _Kernel_requires_resource_held_(EngFloatState
)
2349 _Kernel_releases_resource_(EngFloatState
))
2353 EngRestoreFloatingPointState(
2354 _In_reads_(_Inexpressible_(statesize
))
2358 _Success_(((pBuffer
!= NULL
&& cjBufferSize
!= 0) && return == 1) ||
2359 ((pBuffer
== NULL
|| cjBufferSize
== 0) && return > 0))
2360 _When_(pBuffer
!= NULL
&& cjBufferSize
!= 0 && return == 1, _Kernel_float_saved_
2361 _At_(*pBuffer
, _Post_valid_
_Kernel_acquires_resource_(EngFloatState
)))
2362 _On_failure_(_Post_satisfies_(return == 0))
2366 EngSaveFloatingPointState(
2367 _At_(*pBuffer
, _Kernel_requires_resource_not_held_(EngFloatState
))
2368 _Out_writes_bytes_opt_(cjBufferSize
) PVOID pBuffer
,
2369 _Inout_ ULONG cjBufferSize
);
2372 #endif /* defined(_M_AMD64) && (NTDDI_VERSION >= NTDDI_VISTA) */
2378 _In_reads_bytes_(cjLength
) PVOID Address
,
2379 _In_ ULONG cjLength
);
2385 _In_ PEVENT pEvent
);
2387 #ifdef USERMODE_DRIVER
2388 #define EngSetLastError SetLastError
2389 #else /* !USERMODE_DRIVER */
2395 #endif /* !USERMODE_DRIVER */
2402 _In_opt_ SURFOBJ
*psoMask
,
2403 _In_opt_ SURFOBJ
*psoColor
,
2404 _In_opt_ XLATEOBJ
*pxlo
,
2412 __drv_preferredFunction("(see documentation)", "Obsolete, always returns false. ")
2418 _In_opt_ SURFOBJ
*psoMask
,
2419 _In_opt_ SURFOBJ
*psoColor
,
2420 _Reserved_ XLATEOBJ
*pxlo
,
2423 #ifdef USERMODE_DRIVER
2424 #define EngSetPrinterData SetPrinterData
2425 #else /* !USERMODE_DRIVER */
2430 _In_ HANDLE hPrinter
,
2433 _In_reads_bytes_(cjPrinterData
) LPBYTE lpbPrinterData
,
2434 _In_ DWORD cjPrinterData
);
2435 #endif /* !USERMODE_DRIVER */
2437 typedef int (CDECL
*SORTCOMP
)(const void *pv1
, const void *pv2
);
2443 _Inout_updates_bytes_(c
* cjElem
) PBYTE pjBuf
,
2446 _In_ SORTCOMP pfnComp
);
2452 _In_ SURFOBJ
*psoDest
,
2453 _In_ SURFOBJ
*psoSrc
,
2454 _In_opt_ SURFOBJ
*psoMask
,
2455 _In_opt_ CLIPOBJ
*pco
,
2456 _In_opt_ XLATEOBJ
*pxlo
,
2457 _In_opt_ COLORADJUSTMENT
*pca
,
2458 _In_ POINTL
*pptlHTOrg
,
2459 _In_ RECTL
*prclDest
,
2460 _In_ RECTL
*prclSrc
,
2461 _When_(psoMask
, _In_
) POINTL
*pptlMask
,
2468 _In_ SURFOBJ
*psoDest
,
2469 _In_ SURFOBJ
*psoSrc
,
2470 _In_opt_ SURFOBJ
*psoMask
,
2471 _In_opt_ CLIPOBJ
*pco
,
2472 _In_opt_ XLATEOBJ
*pxlo
,
2473 _In_opt_ COLORADJUSTMENT
*pca
,
2474 _In_ POINTL
*pptlHTOrg
,
2475 _In_ RECTL
*prclDest
,
2476 _In_ RECTL
*prclSrc
,
2477 _When_(psoMask
, _In_
) POINTL
*pptlMask
,
2479 _In_opt_ BRUSHOBJ
*pbo
,
2485 EngStrokeAndFillPath(
2486 _Inout_ SURFOBJ
*pso
,
2490 _In_ BRUSHOBJ
*pboStroke
,
2491 _In_ LINEATTRS
*plineattrs
,
2492 _In_ BRUSHOBJ
*pboFill
,
2493 _In_ POINTL
*pptlBrushOrg
,
2494 _In_
__in_data_source(USER_MODE
) MIX mixFill
,
2495 _In_
__in_data_source(USER_MODE
) FLONG flOptions
);
2506 _In_ POINTL
*pptlBrushOrg
,
2507 _In_ LINEATTRS
*plineattrs
,
2518 _Null_ RECTL
*prclExtra
,
2519 _In_opt_ RECTL
*prclOpaque
,
2520 _In_ BRUSHOBJ
*pboFore
,
2521 _In_ BRUSHOBJ
*pboOpaque
,
2522 _In_ POINTL
*pptlOrg
,
2529 _In_ SURFOBJ
*psoDst
,
2530 _In_ SURFOBJ
*psoSrc
,
2531 _In_opt_ CLIPOBJ
*pco
,
2532 _In_opt_ XLATEOBJ
*pxlo
,
2533 _In_ RECTL
*prclDst
,
2534 _In_ RECTL
*prclSrc
,
2535 _In_ ULONG iTransColor
,
2536 _In_ ULONG ulReserved
);
2541 EngUnicodeToMultiByteN(
2542 _Out_writes_bytes_to_(cjMultiByteBuf
, *pcjMultiByteString
) PCHAR pchMultiByteString
,
2543 _In_ ULONG cjMultiByteBuf
,
2544 _Out_opt_ PULONG pcjMultiByteString
,
2545 _In_reads_bytes_(cjUnicodeString
) PWSTR pwszUnicodeString
,
2546 _In_ ULONG cjUnicodeString
);
2548 #ifdef USERMODE_DRIVER
2549 #define EngUnloadImage(h) FreeLibrary((HMODULE) (h))
2550 #else /* !USERMODE_DRIVER */
2555 _In_ HANDLE hModule
);
2556 #endif /* !USERMODE_DRIVER */
2561 EngUnlockDirectDrawSurface(
2562 _In_ PDD_SURFACE_LOCAL pSurface
);
2568 _In_ _Post_ptr_invalid_ HDRVOBJ hdo
);
2574 _In_ _Post_ptr_invalid_ SURFOBJ
*pso
);
2580 _In_ PEVENT pEvent
);
2586 _In_ ULONG_PTR iFile
);
2588 __drv_preferredFunction("EngUnmapFontFileFD", "Obsolete")
2593 _In_ ULONG_PTR iFile
);
2599 _In_ ULONG_PTR iFile
);
2605 _In_ HANDLE hSecure
);
2610 EngWaitForSingleObject(
2612 _In_opt_ PLARGE_INTEGER pTimeOut
);
2617 EngWideCharToMultiByte(
2619 _In_reads_bytes_opt_(cjWideCharString
) LPWSTR pwszWideCharString
,
2620 _In_ INT cjWideCharString
,
2621 _Out_z_bytecap_(cjMultiByteString
) LPSTR pszMultiByteString
,
2622 _In_ INT cjMultiByteString
);
2624 #ifdef USERMODE_DRIVER
2625 #define EngWritePrinter WritePrinter
2626 #else /* !USERMODE_DRIVER */
2631 _In_ HANDLE hPrinter
,
2632 _In_reads_bytes_(cjBuf
) LPVOID pvBuf
,
2634 _Out_ LPDWORD pcWritten
);
2635 #endif /* !USERMODE_DRIVER */
2637 #if defined(_X86_) && !defined(USERMODE_DRIVER)
2642 _Inout_ PFLOATOBJ pf
,
2643 _In_ PFLOATOBJ pf1
);
2649 _Inout_ PFLOATOBJ pf
,
2656 _Inout_ PFLOATOBJ pf
,
2663 _Inout_ PFLOATOBJ pf
,
2664 _In_ PFLOATOBJ pf1
);
2670 _Inout_ PFLOATOBJ pf
,
2677 _Inout_ PFLOATOBJ pf
,
2685 _In_ PFLOATOBJ pf1
);
2709 FLOATOBJ_GreaterThan(
2711 _In_ PFLOATOBJ pf1
);
2716 FLOATOBJ_GreaterThanLong(
2725 _In_ PFLOATOBJ pf1
);
2730 FLOATOBJ_LessThanLong(
2738 _Inout_ PFLOATOBJ pf
,
2739 _In_ PFLOATOBJ pf1
);
2745 _Inout_ PFLOATOBJ pf
,
2752 _Inout_ PFLOATOBJ pf
,
2759 _Inout_ PFLOATOBJ pf
);
2779 _Inout_ PFLOATOBJ pf
,
2780 _In_ PFLOATOBJ pf1
);
2786 _Inout_ PFLOATOBJ pf
,
2793 _Inout_ PFLOATOBJ pf
,
2798 #define FLOATOBJ_SetFloat(pf, f) {*(pf) = (f);}
2799 #define FLOATOBJ_SetLong(pf, l) {*(pf) = (FLOAT)(l);}
2800 #define FLOATOBJ_GetFloat(pf) (*(PULONG)(pf))
2801 #define FLOATOBJ_GetLong(pf) ((LONG)*(pf))
2802 #define FLOATOBJ_Add(pf, pf1) {*(pf) += *(pf1);}
2803 #define FLOATOBJ_AddFloat(pf, f) {*(pf) += (f);}
2804 #define FLOATOBJ_AddLong(pf, l) {*(pf) += (l);}
2805 #define FLOATOBJ_Sub(pf, pf1) {*(pf) -= *(pf1);}
2806 #define FLOATOBJ_SubFloat(pf, f) {*(pf) -= (f);}
2807 #define FLOATOBJ_SubLong(pf, l) {*(pf) -= (l);}
2808 #define FLOATOBJ_Mul(pf, pf1) {*(pf) *= *(pf1);}
2809 #define FLOATOBJ_MulFloat(pf, f) {*(pf) *= (f);}
2810 #define FLOATOBJ_MulLong(pf, l) {*(pf) *= (l);}
2811 #define FLOATOBJ_Div(pf, pf1) {*(pf) /= *(pf1);}
2812 #define FLOATOBJ_DivFloat(pf, f) {*(pf) /= (f);}
2813 #define FLOATOBJ_DivLong(pf, l) {*(pf) /= (l);}
2814 #define FLOATOBJ_Neg(pf) {*(pf) = -(*(pf));}
2815 #define FLOATOBJ_Equal(pf, pf1) (*(pf) == *(pf1))
2816 #define FLOATOBJ_GreaterThan(pf, pf1) (*(pf) > *(pf1))
2817 #define FLOATOBJ_LessThan(pf, pf1) (*(pf) < *(pf1))
2818 #define FLOATOBJ_EqualLong(pf, l) (*(pf) == (FLOAT)(l))
2819 #define FLOATOBJ_GreaterThanLong(pf, l) (*(pf) > (FLOAT)(l))
2820 #define FLOATOBJ_LessThanLong(pf, l) (*(pf) < (FLOAT)(l))
2827 FONTOBJ_cGetAllGlyphHandles(
2829 _Out_opt_ HGLYPH
*phg
);
2838 _In_count_(cGlyph
) HGLYPH
*phg
,
2839 _Out_ PVOID
*ppvGlyph
);
2853 _Ret_opt_bytecount_(*pcjTable
)
2857 FONTOBJ_pjOpenTypeTablePointer(
2860 _Out_ ULONG
*pcjTable
);
2865 FONTOBJ_pQueryGlyphAttrs(
2869 _Ret_opt_bytecount_(*pcjFile
)
2873 FONTOBJ_pvTrueTypeFontFile(
2875 _Out_ ULONG
*pcjFile
);
2880 FONTOBJ_pwszFontFilePaths(
2887 FONTOBJ_pxoGetXform(
2896 _Out_bytecap_(cjSize
) FONTINFO
*pfi
);
2898 #if (NTDDI_VERSION <= NTDDI_WINXP)
2899 /* Obsolete in Windows 2000 and later */
2902 FONTOBJ_pGetGammaTables(
2909 HT_ComputeRGBGammaTable(
2910 _In_ USHORT GammaTableEntries
,
2911 _In_ USHORT GammaTableType
,
2912 _In_ USHORT RedGamma
,
2913 _In_ USHORT GreenGamma
,
2914 _In_ USHORT BlueGamma
,
2915 _Out_writes_bytes_(GammaTableEntries
* 3) LPBYTE pGammaTable
);
2920 HT_Get8BPPFormatPalette(
2921 _Out_opt_ LPPALETTEENTRY pPaletteEntry
,
2922 _In_ USHORT RedGamma
,
2923 _In_ USHORT GreenGamma
,
2924 _In_ USHORT BlueGamma
);
2929 HT_Get8BPPMaskPalette(
2930 _Out_opt_ LPPALETTEENTRY pPaletteEntry
,
2931 _In_ BOOL Use8BPPMaskPal
,
2933 _In_ USHORT RedGamma
,
2934 _In_ USHORT GreenGamma
,
2935 _In_ USHORT BlueGamma
);
2940 HTUI_DeviceColorAdjustment(
2941 _In_ LPSTR pDeviceName
,
2942 _Out_ PDEVHTADJDATA pDevHTAdjData
);
2951 _Out_writes_(cColors
) ULONG
*pulColors
);
2956 PATHOBJ_bCloseFigure(
2964 _Out_ PATHDATA
*ppd
);
2969 PATHOBJ_bEnumClipLines(
2972 _Out_bytecap_(cj
) CLIPLINE
*pcl
);
2979 _In_ POINTFIX ptfx
);
2984 PATHOBJ_bPolyBezierTo(
2986 _In_count_(cptfx
) POINTFIX
*pptfx
,
2992 PATHOBJ_bPolyLineTo(
2994 _In_count_(cptfx
) POINTFIX
*pptfx
,
3001 _Inout_ PATHOBJ
*ppo
);
3006 PATHOBJ_vEnumStartClipLines(
3007 _Inout_ PATHOBJ
*ppo
,
3010 _In_ LINEATTRS
*pla
);
3017 _Out_ PRECTFX prectfx
);
3023 _Inout_ STROBJ
*pstro
,
3025 _Out_ PGLYPHPOS
*ppgpos
); // FIXME_ size?
3030 STROBJ_bEnumPositionsOnly(
3033 _Out_ PGLYPHPOS
*ppgpos
); // FIXME_ size?
3038 STROBJ_bGetAdvanceWidths(
3042 _Out_cap_(c
) POINTQF
*pptqD
);
3047 STROBJ_dwGetCodePage(
3048 _In_ STROBJ
*pstro
);
3053 STROBJ_fxBreakExtra(
3054 _In_ STROBJ
*pstro
);
3059 STROBJ_fxCharacterExtra(
3060 _In_ STROBJ
*pstro
);
3066 _Inout_ STROBJ
*pstro
);
3072 _Inout_ WNDOBJ
*pwo
,
3074 _Out_bytecap_(cj
) ULONG
*pul
);
3080 _Inout_ WNDOBJ
*pwo
,
3082 _In_ ULONG iDirection
,
3088 WNDOBJ_vSetConsumer(
3089 _Inout_ WNDOBJ
*pwo
,
3090 _In_ PVOID pvConsumer
);
3092 /* XFORMOBJ_bApplyXform.iMode constants */
3094 #define XF_INV_LTOL 1L
3096 #define XF_INV_FXTOL 3L
3101 XFORMOBJ_bApplyXform(
3105 _In_reads_bytes_(cPoints
* sizeof(POINTL
)) PVOID pvIn
,
3106 _Out_writes_bytes_(cPoints
* sizeof(POINTL
)) PVOID pvOut
);
3108 /* Obsolete in Windows 2000 and later */
3109 DECLSPEC_DEPRECATED_DDK
3113 XFORMOBJ_cmGetTransform(
3116 #if !defined(USERMODE_DRIVER)
3120 XFORMOBJ_iGetFloatObjXform(
3122 _Out_ FLOATOBJ_XFORM
*pxfo
);
3124 #define XFORMOBJ_iGetFloatObjXform XFORMOBJ_iGetXform
3132 _Out_ XFORML
*pxform
);
3134 /* XLATEOBJ_cGetPalette.iPal constants */
3135 #define XO_SRCPALETTE 1
3136 #define XO_DESTPALETTE 2
3137 #define XO_DESTDCPALETTE 3
3138 #define XO_SRCBITFIELDS 4
3139 #define XO_DESTBITFIELDS 5
3144 XLATEOBJ_cGetPalette(
3145 _In_ XLATEOBJ
*pxlo
,
3148 _Out_cap_(cPal
) ULONG
*pPal
);
3153 XLATEOBJ_hGetColorTransform(
3154 _In_ XLATEOBJ
*pxlo
);
3160 _In_ XLATEOBJ
*pxlo
,
3167 _In_ XLATEOBJ
*pxlo
);
3169 #if (NTDDI_VERSION >= NTDDI_WINXPSP2)
3175 _In_ ULONG BugCheckCode
,
3181 #endif /* (NTDDI_VERSION >= NTDDI_WINXPSP2) */
3183 #if (NTDDI_VERSION >= NTDDI_VISTA)
3204 _In_ HANDLE hrgnTrg
,
3205 _In_ HANDLE hrgnSrc1
,
3206 _In_ HANDLE hrgnSrc2
,
3213 _In_ HANDLE hrgnDst
,
3214 _In_ HANDLE hrgnSrc
);
3220 _In_ HANDLE hrgnResult
,
3228 _In_ HANDLE hrgnResult
,
3236 _In_ HANDLE hrgnResult
,
3244 _In_ HANDLE hrgnResult
,
3268 _Out_cap_(nCount
) LPRGNDATA lpRgnData
);
3300 _In_ ULONG NotifyCode
,
3302 _In_reads_bytes_opt_(Length
) PVOID Data
);
3307 EngAcquireSemaphoreShared(
3308 _In_ HSEMAPHORE hsem
);
3313 EngAcquireSemaphoreNoWait(
3314 _In_ HSEMAPHORE hsem
);
3319 EngAcquireSemaphoreSharedNoWait(
3320 _In_ HSEMAPHORE hsem
);
3325 EngIsSemaphoreSharedByCurrentThread(
3326 _In_ HSEMAPHORE hsem
);
3328 DECLARE_HANDLE(HFASTMUTEX
);
3340 _In_ HFASTMUTEX hfm
);
3345 EngAcquireFastMutex(
3346 _In_ HFASTMUTEX hfm
);
3351 EngReleaseFastMutex(
3352 _In_ HFASTMUTEX hfm
);
3357 EngUpdateDeviceSurface(
3359 _Inout_ CLIPOBJ
**ppco
);
3361 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
3363 #if (NTDDI_VERSION >= NTDDI_WIN7)
3368 EngCreateRedirectionDeviceBitmap(
3369 __in_data_source(USER_MODE
) DHSURF dhsurf
,
3370 __in_data_source(USER_MODE
) SIZEL sizl
,
3371 _In_ ULONG iFormatCompat
);
3377 _Out_ CONST BYTE
** pGammaTable
,
3378 _Out_ CONST BYTE
** pInverseGammaTable
);
3382 EngCTGetCurrentGamma(
3385 #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
3387 /* Graphics Driver Functions */
3390 (APIENTRY FN_DrvAlphaBlend
)(
3391 _Inout_ SURFOBJ
*psoDest
,
3392 _In_ SURFOBJ
*psoSrc
,
3394 _In_opt_ XLATEOBJ
*pxlo
,
3395 _In_ RECTL
*prclDest
,
3396 _In_ RECTL
*prclSrc
,
3397 _In_ BLENDOBJ
*pBlendObj
);
3398 typedef FN_DrvAlphaBlend
*PFN_DrvAlphaBlend
;
3399 extern FN_DrvAlphaBlend DrvAlphaBlend
;
3402 (APIENTRY FN_DrvAssertMode
)(
3405 typedef FN_DrvAssertMode
*PFN_DrvAssertMode
;
3406 extern FN_DrvAssertMode DrvAssertMode
;
3409 (APIENTRY FN_DrvBitBlt
)(
3410 _Inout_ SURFOBJ
*psoTrg
,
3411 _In_opt_ SURFOBJ
*psoSrc
,
3412 _In_opt_ SURFOBJ
*psoMask
,
3414 _In_opt_ XLATEOBJ
*pxlo
,
3415 _In_ RECTL
*prclTrg
,
3416 _In_opt_ POINTL
*pptlSrc
,
3417 _In_opt_ POINTL
*pptlMask
,
3418 _In_opt_ BRUSHOBJ
*pbo
,
3419 _In_opt_ POINTL
*pptlBrush
,
3421 typedef FN_DrvBitBlt
*PFN_DrvBitBlt
;
3422 extern FN_DrvBitBlt DrvBitBlt
;
3425 (APIENTRY FN_DrvCompletePDEV
)(
3428 typedef FN_DrvCompletePDEV
*PFN_DrvCompletePDEV
;
3429 extern FN_DrvCompletePDEV DrvCompletePDEV
;
3432 (APIENTRY FN_DrvCopyBits
)(
3433 _In_ SURFOBJ
*psoDest
,
3434 _In_ SURFOBJ
*psoSrc
,
3436 _In_opt_ XLATEOBJ
*pxlo
,
3437 _In_ RECTL
*prclDest
,
3438 _In_ POINTL
*pptlSrc
);
3439 typedef FN_DrvCopyBits
*PFN_DrvCopyBits
;
3440 extern FN_DrvCopyBits DrvCopyBits
;
3443 (APIENTRY FN_DrvCreateDeviceBitmap
)(
3446 _In_ ULONG iFormat
);
3447 typedef FN_DrvCreateDeviceBitmap
*PFN_DrvCreateDeviceBitmap
;
3448 extern FN_DrvCreateDeviceBitmap DrvCreateDeviceBitmap
;
3451 (APIENTRY FN_DrvDeleteDeviceBitmap
)(
3452 _In_ _Post_ptr_invalid_ DHSURF dhsurf
);
3453 typedef FN_DrvDeleteDeviceBitmap
*PFN_DrvDeleteDeviceBitmap
;
3454 extern FN_DrvDeleteDeviceBitmap DrvDeleteDeviceBitmap
;
3457 (APIENTRY FN_DrvDeriveSurface
)(
3458 _In_ DD_DIRECTDRAW_GLOBAL
*pDirectDraw
,
3459 _In_ DD_SURFACE_LOCAL
*pSurface
);
3460 typedef FN_DrvDeriveSurface
*PFN_DrvDeriveSurface
;
3461 extern FN_DrvDeriveSurface DrvDeriveSurface
;
3464 (APIENTRY FN_DrvDescribePixelFormat
)(
3466 _In_ LONG iPixelFormat
,
3468 _Out_opt_ PIXELFORMATDESCRIPTOR
*ppfd
);
3469 typedef FN_DrvDescribePixelFormat
*PFN_DrvDescribePixelFormat
;
3470 extern FN_DrvDescribePixelFormat DrvDescribePixelFormat
;
3473 (APIENTRY FN_DrvDestroyFont
)(
3475 typedef FN_DrvDestroyFont
*PFN_DrvDestroyFont
;
3476 extern FN_DrvDestroyFont DrvDestroyFont
;
3479 (APIENTRY FN_DrvDisableDriver
)(VOID
);
3480 typedef FN_DrvDisableDriver
*PFN_DrvDisableDriver
;
3481 extern FN_DrvDisableDriver DrvDisableDriver
;
3484 (APIENTRY FN_DrvDisablePDEV
)(
3485 _In_ DHPDEV dhpdev
);
3486 typedef FN_DrvDisablePDEV
*PFN_DrvDisablePDEV
;
3487 extern FN_DrvDisablePDEV DrvDisablePDEV
;
3490 (APIENTRY FN_DrvDisableSurface
)(
3491 _In_ DHPDEV dhpdev
);
3492 typedef FN_DrvDisableSurface
*PFN_DrvDisableSurface
;
3493 extern FN_DrvDisableSurface DrvDisableSurface
;
3496 (APIENTRY FN_DrvDitherColor
)(
3500 _Inout_updates_(8 * 8) ULONG
*pul
); // FIXME: compare EngDitherColor
3501 typedef FN_DrvDitherColor
*PFN_DrvDitherColor
;
3502 extern FN_DrvDitherColor DrvDitherColor
;
3505 (APIENTRY FN_DrvDrawEscape
)(
3511 _In_reads_bytes_(cjIn
) PVOID pvIn
);
3512 typedef FN_DrvDrawEscape
*PFN_DrvDrawEscape
;
3513 extern FN_DrvDrawEscape DrvDrawEscape
;
3516 (APIENTRY FN_DrvEnableDriver
)(
3517 _In_ ULONG iEngineVersion
,
3519 _Inout_bytecount_(cj
) DRVENABLEDATA
*pded
); // Zero initialized
3520 typedef FN_DrvEnableDriver
*PFN_DrvEnableDriver
;
3521 extern FN_DrvEnableDriver DrvEnableDriver
;
3524 (APIENTRY FN_DrvEnablePDEV
)(
3526 _In_ LPWSTR pwszLogAddress
,
3528 _Out_opt_cap_(cPat
) HSURF
*phsurfPatterns
,
3530 _Out_bytecap_(cjCaps
) ULONG
*pdevcaps
,
3531 _In_ ULONG cjDevInfo
,
3534 _In_ LPWSTR pwszDeviceName
,
3535 _In_ HANDLE hDriver
);
3536 typedef FN_DrvEnablePDEV
*PFN_DrvEnablePDEV
;
3537 extern FN_DrvEnablePDEV DrvEnablePDEV
;
3540 (APIENTRY FN_DrvEnableSurface
)(
3541 _In_ DHPDEV dhpdev
);
3542 typedef FN_DrvEnableSurface
*PFN_DrvEnableSurface
;
3543 extern FN_DrvEnableSurface DrvEnableSurface
;
3545 /* DrvEndDoc.fl constants */
3546 #define ED_ABORTDOC 0x00000001
3549 (APIENTRY FN_DrvEndDoc
)(
3552 typedef FN_DrvEndDoc
*PFN_DrvEndDoc
;
3553 extern FN_DrvEndDoc DrvEndDoc
;
3556 (APIENTRY FN_DrvEscape
)(
3560 _In_bytecount_(cjIn
) PVOID pvIn
,
3562 _Out_bytecap_(cjOut
) PVOID pvOut
);
3563 typedef FN_DrvEscape
*PFN_DrvEscape
;
3564 extern FN_DrvEscape DrvEscape
;
3567 (APIENTRY FN_DrvFillPath
)(
3568 _Inout_ SURFOBJ
*pso
,
3572 _In_ POINTL
*pptlBrushOrg
,
3574 _In_ FLONG flOptions
);
3575 typedef FN_DrvFillPath
*PFN_DrvFillPath
;
3576 extern FN_DrvFillPath DrvFillPath
;
3579 (APIENTRY FN_DrvFontManagement
)(
3581 _In_opt_ FONTOBJ
*pfo
,
3584 _In_bytecount_(cjIn
) PVOID pvIn
,
3586 _Out_bytecap_(cjOut
) PVOID pvOut
);
3587 typedef FN_DrvFontManagement
*PFN_DrvFontManagement
;
3588 extern FN_DrvFontManagement DrvFontManagement
;
3591 (APIENTRY FN_DrvFree
)(
3592 _In_ _Post_ptr_invalid_ PVOID pv
,
3594 typedef FN_DrvFree
*PFN_DrvFree
;
3595 extern FN_DrvFree DrvFree
;
3597 /* DrvGetGlyphMode return values */
3598 #define FO_HGLYPHS 0L
3599 #define FO_GLYPHBITS 1L
3600 #define FO_PATHOBJ 2L
3603 (APIENTRY FN_DrvGetGlyphMode
)(
3606 typedef FN_DrvGetGlyphMode
*PFN_DrvGetGlyphMode
;
3607 extern FN_DrvGetGlyphMode DrvGetGlyphMode
;
3610 (APIENTRY FN_DrvGetModes
)(
3611 _In_ HANDLE hDriver
,
3613 _Out_opt_bytecap_(cjSize
) DEVMODEW
*pdm
);
3614 typedef FN_DrvGetModes
*PFN_DrvGetModes
;
3615 extern FN_DrvGetModes DrvGetModes
;
3618 (APIENTRY FN_DrvGetTrueTypeFile
)(
3619 _In_ ULONG_PTR iFile
,
3621 typedef FN_DrvGetTrueTypeFile
*PFN_DrvGetTrueTypeFile
;
3622 extern FN_DrvGetTrueTypeFile DrvGetTrueTypeFile
;
3625 (APIENTRY FN_DrvGradientFill
)(
3626 _Inout_ SURFOBJ
*psoDest
,
3628 _In_opt_ XLATEOBJ
*pxlo
,
3629 _In_ TRIVERTEX
*pVertex
,
3633 _In_ RECTL
*prclExtents
,
3634 _In_ POINTL
*pptlDitherOrg
,
3636 typedef FN_DrvGradientFill
*PFN_DrvGradientFill
;
3637 extern FN_DrvGradientFill DrvGradientFill
;
3640 (APIENTRY FN_DrvIcmCheckBitmapBits
)(
3642 _In_ HANDLE hColorTransform
,
3644 _Out_bytecap_(pso
->sizlBitmap
.cx
* pso
->sizlBitmap
.cy
) PBYTE paResults
);
3645 typedef FN_DrvIcmCheckBitmapBits
*PFN_DrvIcmCheckBitmapBits
;
3646 extern FN_DrvIcmCheckBitmapBits DrvIcmCheckBitmapBits
;
3649 (APIENTRY FN_DrvIcmCreateColorTransform
)(
3651 _In_ LPLOGCOLORSPACEW pLogColorSpace
,
3652 _In_reads_bytes_opt_(cjSourceProfile
) PVOID pvSourceProfile
,
3653 _In_ ULONG cjSourceProfile
,
3654 _In_reads_bytes_(cjDestProfile
) PVOID pvDestProfile
,
3655 _In_ ULONG cjDestProfile
,
3656 _In_reads_bytes_opt_(cjTargetProfile
) PVOID pvTargetProfile
,
3657 _In_ ULONG cjTargetProfile
,
3658 _In_ DWORD dwReserved
);
3659 typedef FN_DrvIcmCreateColorTransform
*PFN_DrvIcmCreateColorTransform
;
3660 extern FN_DrvIcmCreateColorTransform DrvIcmCreateColorTransform
;
3663 (APIENTRY FN_DrvIcmDeleteColorTransform
)(
3665 _In_ HANDLE hcmXform
);
3666 typedef FN_DrvIcmDeleteColorTransform
*PFN_DrvIcmDeleteColorTransform
;
3667 extern FN_DrvIcmDeleteColorTransform DrvIcmDeleteColorTransform
;
3669 /* DrvIcmSetDeviceGammaRamp.iFormat constants */
3670 #define IGRF_RGB_256BYTES 0x00000000
3671 #define IGRF_RGB_256WORDS 0x00000001
3674 (APIENTRY FN_DrvIcmSetDeviceGammaRamp
)(
3677 _In_bytecount_(sizeof(GAMMARAMP
)) LPVOID lpRamp
);
3678 typedef FN_DrvIcmSetDeviceGammaRamp
*PFN_DrvIcmSetDeviceGammaRamp
;
3679 extern FN_DrvIcmSetDeviceGammaRamp DrvIcmSetDeviceGammaRamp
;
3682 (APIENTRY FN_DrvLineTo
)(
3683 _Inout_ SURFOBJ
*pso
,
3690 _In_opt_ RECTL
*prclBounds
,
3692 typedef FN_DrvLineTo
*PFN_DrvLineTo
;
3693 extern FN_DrvLineTo DrvLineTo
;
3696 (APIENTRY FN_DrvLoadFontFile
)(
3698 _In_ ULONG_PTR
*piFile
,
3699 _In_count_(cFiles
) PVOID
*ppvView
,
3700 _In_count_(cFiles
) ULONG
*pcjView
,
3701 _In_opt_ DESIGNVECTOR
*pdv
,
3702 _In_ ULONG ulLangID
,
3703 _In_ ULONG ulFastCheckSum
);
3704 typedef FN_DrvLoadFontFile
*PFN_DrvLoadFontFile
;
3705 extern FN_DrvLoadFontFile DrvLoadFontFile
;
3708 (APIENTRY FN_DrvMovePointer
)(
3712 _In_opt_ RECTL
*prcl
);
3713 typedef FN_DrvMovePointer
*PFN_DrvMovePointer
;
3714 extern FN_DrvMovePointer DrvMovePointer
;
3717 (APIENTRY FN_DrvNextBand
)(
3720 typedef FN_DrvNextBand
*PFN_DrvNextBand
;
3721 extern FN_DrvNextBand DrvNextBand
;
3724 (APIENTRY FN_DrvNotify
)(
3727 _In_opt_ PVOID pvData
);
3728 typedef FN_DrvNotify
*PFN_DrvNotify
;
3729 extern FN_DrvNotify DrvNotify
;
3732 (APIENTRY FN_DrvOffset
)(
3736 _In_ FLONG flReserved
);
3737 typedef FN_DrvOffset
*PFN_DrvOffset
;
3738 extern FN_DrvOffset DrvOffset
;
3741 (APIENTRY FN_DrvPaint
)(
3742 _Inout_ SURFOBJ
*pso
,
3745 _In_ POINTL
*pptlBrushOrg
,
3747 typedef FN_DrvPaint
*PFN_DrvPaint
;
3748 extern FN_DrvPaint DrvPaint
;
3751 (APIENTRY FN_DrvPlgBlt
)(
3752 _Inout_ SURFOBJ
*psoTrg
,
3753 _Inout_ SURFOBJ
*psoSrc
,
3754 _In_opt_ SURFOBJ
*psoMsk
,
3756 _In_opt_ XLATEOBJ
*pxlo
,
3757 _In_opt_ COLORADJUSTMENT
*pca
,
3758 _In_opt_ POINTL
*pptlBrushOrg
,
3759 _In_ POINTFIX
*pptfx
,
3761 _In_opt_ POINTL
*pptl
,
3763 typedef FN_DrvPlgBlt
*PFN_DrvPlgBlt
;
3764 extern FN_DrvPlgBlt DrvPlgBlt
;
3766 /* DrvQueryAdvanceWidths.iMode constants */
3767 #define QAW_GETWIDTHS 0
3768 #define QAW_GETEASYWIDTHS 1
3771 (APIENTRY FN_DrvQueryAdvanceWidths
)(
3775 _In_reads_(cGlyphs
) HGLYPH
*phg
,
3776 _Out_writes_bytes_(cGlyphs
* sizeof(USHORT
)) PVOID pvWidths
,
3777 _In_ ULONG cGlyphs
);
3778 typedef FN_DrvQueryAdvanceWidths
*PFN_DrvQueryAdvanceWidths
;
3779 extern FN_DrvQueryAdvanceWidths DrvQueryAdvanceWidths
;
3781 /* DrvQueryDeviceSupport.iType constants */
3782 #define QDS_CHECKJPEGFORMAT 0x00000000
3783 #define QDS_CHECKPNGFORMAT 0x00000001
3786 (APIENTRY FN_DrvQueryDeviceSupport
)(
3788 _In_ XLATEOBJ
*pxlo
,
3792 _In_bytecount_(cjIn
) PVOID pvIn
,
3794 _Out_bytecap_(cjOut
) PVOID pvOut
);
3795 typedef FN_DrvQueryDeviceSupport
*PFN_DrvQueryDeviceSupport
;
3796 extern FN_DrvQueryDeviceSupport DrvQueryDeviceSupport
;
3798 /* DrvQueryDriverInfo.dwMode constants */
3799 #define DRVQUERY_USERMODE 0x00000001
3802 (APIENTRY FN_DrvQueryDriverInfo
)(
3804 _Out_bytecap_(cjBuf
) PVOID pBuffer
,
3806 _Out_ PDWORD pcbNeeded
);
3807 typedef FN_DrvQueryDriverInfo
*PFN_DrvQueryDriverInfo
;
3808 extern FN_DrvQueryDriverInfo DrvQueryDriverInfo
;
3811 (APIENTRY FN_DrvQueryFont
)(
3813 _In_ ULONG_PTR iFile
,
3815 _Out_ ULONG_PTR
*pid
);
3816 typedef FN_DrvQueryFont
*PFN_DrvQueryFont
;
3817 extern FN_DrvQueryFont DrvQueryFont
;
3819 /* DrvQueryFontCaps.pulCaps constants */
3820 #define QC_OUTLINES 0x00000001
3821 #define QC_1BIT 0x00000002
3822 #define QC_4BIT 0x00000004
3823 #define QC_FONTDRIVERCAPS (QC_OUTLINES | QC_1BIT | QC_4BIT)
3826 (APIENTRY FN_DrvQueryFontCaps
)(
3828 _Out_cap_(culCaps
) ULONG
*pulCaps
);
3829 typedef FN_DrvQueryFontCaps
*PFN_DrvQueryFontCaps
;
3830 extern FN_DrvQueryFontCaps DrvQueryFontCaps
;
3832 /* DrvQueryFontData.iMode constants */
3833 #define QFD_GLYPHANDBITMAP 1L
3834 #define QFD_GLYPHANDOUTLINE 2L
3835 #define QFD_MAXEXTENTS 3L
3836 #define QFD_TT_GLYPHANDBITMAP 4L
3837 #define QFD_TT_GRAY1_BITMAP 5L
3838 #define QFD_TT_GRAY2_BITMAP 6L
3839 #define QFD_TT_GRAY4_BITMAP 8L
3840 #define QFD_TT_GRAY8_BITMAP 9L
3842 #define QFD_TT_MONO_BITMAP QFD_TT_GRAY1_BITMAP
3845 (APIENTRY FN_DrvQueryFontData
)(
3850 _In_opt_ GLYPHDATA
*pgd
,
3851 _Out_bytecap_(cjSize
) PVOID pv
,
3853 typedef FN_DrvQueryFontData
*PFN_DrvQueryFontData
;
3854 extern FN_DrvQueryFontData DrvQueryFontData
;
3856 /* DrvQueryFontFile.ulMode constants */
3857 #define QFF_DESCRIPTION 0x00000001
3858 #define QFF_NUMFACES 0x00000002
3861 (APIENTRY FN_DrvQueryFontFile
)(
3862 _In_ ULONG_PTR iFile
,
3865 _Out_bytecap_(cjBuf
) ULONG
*pulBuf
);
3866 typedef FN_DrvQueryFontFile
*PFN_DrvQueryFontFile
;
3867 extern FN_DrvQueryFontFile DrvQueryFontFile
;
3869 /* DrvQueryFontTree.iMode constants */
3870 #define QFT_UNICODE 0L
3871 #define QFT_LIGATURES 1L
3872 #define QFT_KERNPAIRS 2L
3873 #define QFT_GLYPHSET 3L
3876 (APIENTRY FN_DrvQueryFontTree
)(
3878 _In_ ULONG_PTR iFile
,
3881 _Out_ ULONG_PTR
*pid
);
3882 typedef FN_DrvQueryFontTree
*PFN_DrvQueryFontTree
;
3883 extern FN_DrvQueryFontTree DrvQueryFontTree
;
3885 typedef PFD_GLYPHATTR
3886 (APIENTRY FN_DrvQueryGlyphAttrs
)(
3889 typedef FN_DrvQueryGlyphAttrs
*PFN_DrvQueryGlyphAttrs
;
3890 extern FN_DrvQueryGlyphAttrs DrvQueryGlyphAttrs
;
3893 (APIENTRY FN_DrvQueryPerBandInfo
)(
3895 _Inout_ PERBANDINFO
*pbi
);
3896 typedef FN_DrvQueryPerBandInfo
*PFN_DrvQueryPerBandInfo
;
3897 extern FN_DrvQueryPerBandInfo DrvQueryPerBandInfo
;
3899 /* DrvQueryTrueTypeOutline.bMetricsOnly constants */
3900 #define TTO_METRICS_ONLY 0x00000001
3901 #define TTO_QUBICS 0x00000002
3902 #define TTO_UNHINTED 0x00000004
3905 (APIENTRY FN_DrvQueryTrueTypeOutline
)(
3909 _In_ BOOL bMetricsOnly
,
3910 _Out_opt_ GLYPHDATA
*pgldt
,
3912 _Out_bytecap_(cjBuf
) TTPOLYGONHEADER
*ppoly
);
3913 typedef FN_DrvQueryTrueTypeOutline
*PFN_DrvQueryTrueTypeOutline
;
3914 extern FN_DrvQueryTrueTypeOutline DrvQueryTrueTypeOutline
;
3917 (APIENTRY FN_DrvQueryTrueTypeTable
)(
3918 _In_ ULONG_PTR iFile
,
3921 _In_ PTRDIFF dpStart
,
3923 _Out_opt_bytecap_(cjBuf
) BYTE
*pjBuf
,
3924 _Outptr_opt_result_bytebuffer_all_maybenull_(*pcjTable
) PBYTE
*ppjTable
,
3925 _Out_opt_ ULONG
*pcjTable
);
3926 typedef FN_DrvQueryTrueTypeTable
*PFN_DrvQueryTrueTypeTable
;
3927 extern FN_DrvQueryTrueTypeTable DrvQueryTrueTypeTable
;
3929 /* DrvRealizeBrush.iHatch constants */
3930 #define RB_DITHERCOLOR 0x80000000L
3932 #define HS_DDI_MAX 6
3935 (APIENTRY FN_DrvRealizeBrush
)(
3937 _Inout_ SURFOBJ
*psoTarget
, // CHECKME
3938 _In_opt_ SURFOBJ
*psoPattern
,
3939 _In_opt_ SURFOBJ
*psoMask
,
3940 _In_opt_ XLATEOBJ
*pxlo
,
3942 typedef FN_DrvRealizeBrush
*PFN_DrvRealizeBrush
;
3943 extern FN_DrvRealizeBrush DrvRealizeBrush
;
3945 /* DrvResetDevice return values */
3946 #define DRD_SUCCESS 0
3950 (APIENTRY FN_DrvResetDevice
)(
3952 _Reserved_ PVOID Reserved
);
3953 typedef FN_DrvResetDevice
*PFN_DrvResetDevice
;
3954 extern FN_DrvResetDevice DrvResetDevice
;
3957 (APIENTRY FN_DrvResetPDEV
)(
3958 _In_ DHPDEV dhpdevOld
,
3959 _In_ DHPDEV dhpdevNew
);
3960 typedef FN_DrvResetPDEV
*PFN_DrvResetPDEV
;
3961 extern FN_DrvResetPDEV DrvResetPDEV
;
3963 /* DrvSaveScreenBits.iMode constants */
3964 #define SS_SAVE 0x00000000
3965 #define SS_RESTORE 0x00000001
3966 #define SS_FREE 0x00000002
3969 (APIENTRY FN_DrvSaveScreenBits
)(
3972 _In_ ULONG_PTR ident
,
3974 typedef FN_DrvSaveScreenBits
*PFN_DrvSaveScreenBits
;
3975 extern FN_DrvSaveScreenBits DrvSaveScreenBits
;
3978 (APIENTRY FN_DrvSendPage
)(
3980 typedef FN_DrvSendPage
*PFN_DrvSendPage
;
3981 extern FN_DrvSendPage DrvSendPage
;
3983 /* DrvSetPalette range */
3984 #define WINDDI_MAXSETPALETTECOLORS 256
3985 #define WINDDI_MAXSETPALETTECOLORINDEX 255
3988 (APIENTRY FN_DrvSetPalette
)(
3992 _In_range_(0, WINDDI_MAXSETPALETTECOLORINDEX
) ULONG iStart
,
3993 _In_range_(0, WINDDI_MAXSETPALETTECOLORS
- iStart
) ULONG cColors
);
3994 typedef FN_DrvSetPalette
*PFN_DrvSetPalette
;
3995 extern FN_DrvSetPalette DrvSetPalette
;
3998 (APIENTRY FN_DrvSetPixelFormat
)(
4000 _In_ LONG iPixelFormat
,
4002 typedef FN_DrvSetPixelFormat
*PFN_DrvSetPixelFormat
;
4003 extern FN_DrvSetPixelFormat DrvSetPixelFormat
;
4005 /* DrvSetPointerShape return values */
4006 #define SPS_ERROR 0x00000000
4007 #define SPS_DECLINE 0x00000001
4008 #define SPS_ACCEPT_NOEXCLUDE 0x00000002
4009 #define SPS_ACCEPT_EXCLUDE 0x00000003
4010 #define SPS_ACCEPT_SYNCHRONOUS 0x00000004
4012 /* DrvSetPointerShape.fl constants */
4013 #define SPS_CHANGE 0x00000001L
4014 #define SPS_ASYNCCHANGE 0x00000002L
4015 #define SPS_ANIMATESTART 0x00000004L
4016 #define SPS_ANIMATEUPDATE 0x00000008L
4017 #define SPS_ALPHA 0x00000010L
4018 #define SPS_RESERVED 0x00000020L /* Force s/w cursor rendering */
4019 #define SPS_RESERVED1 0x00000040L /* Force show/hide system cursor */
4020 #define SPS_FLAGSMASK 0x000000FFL
4021 #define SPS_LENGTHMASK 0x00000F00L
4022 #define SPS_FREQMASK 0x000FF000L
4025 (APIENTRY FN_DrvSetPointerShape
)(
4027 _In_opt_ SURFOBJ
*psoMask
,
4028 _In_opt_ SURFOBJ
*psoColor
,
4029 _In_ XLATEOBJ
*pxlo
,
4036 typedef FN_DrvSetPointerShape
*PFN_DrvSetPointerShape
;
4037 extern FN_DrvSetPointerShape DrvSetPointerShape
;
4040 (APIENTRY FN_DrvStartBanding
)(
4043 typedef FN_DrvStartBanding
*PFN_DrvStartBanding
;
4044 extern FN_DrvStartBanding DrvStartBanding
;
4047 (APIENTRY FN_DrvStartDoc
)(
4049 _In_ LPWSTR pwszDocName
,
4050 _In_ DWORD dwJobId
);
4051 typedef FN_DrvStartDoc
*PFN_DrvStartDoc
;
4052 extern FN_DrvStartDoc DrvStartDoc
;
4055 (APIENTRY FN_DrvStartPage
)(
4057 typedef FN_DrvStartPage
*PFN_DrvStartPage
;
4058 extern FN_DrvStartPage DrvStartPage
;
4061 (APIENTRY FN_DrvStretchBlt
)(
4062 _Inout_ SURFOBJ
*psoDest
,
4063 _Inout_ SURFOBJ
*psoSrc
,
4064 _In_opt_ SURFOBJ
*psoMask
,
4066 _In_opt_ XLATEOBJ
*pxlo
,
4067 _In_opt_ COLORADJUSTMENT
*pca
,
4068 _In_ POINTL
*pptlHTOrg
,
4069 _In_ RECTL
*prclDest
,
4070 _In_ RECTL
*prclSrc
,
4071 _When_(psoMask
, _In_
) POINTL
*pptlMask
,
4073 typedef FN_DrvStretchBlt
*PFN_DrvStretchBlt
;
4074 extern FN_DrvStretchBlt DrvStretchBlt
;
4077 (APIENTRY FN_DrvStretchBltROP
)(
4078 _Inout_ SURFOBJ
*psoDest
,
4079 _Inout_ SURFOBJ
*psoSrc
,
4080 _In_opt_ SURFOBJ
*psoMask
,
4082 _In_opt_ XLATEOBJ
*pxlo
,
4083 _In_opt_ COLORADJUSTMENT
*pca
,
4084 _In_ POINTL
*pptlHTOrg
,
4085 _In_ RECTL
*prclDest
,
4086 _In_ RECTL
*prclSrc
,
4087 _When_(psoMask
, _In_
) POINTL
*pptlMask
,
4091 typedef FN_DrvStretchBltROP
*PFN_DrvStretchBltROP
;
4092 extern FN_DrvStretchBltROP DrvStretchBltROP
;
4095 (APIENTRY FN_DrvStrokeAndFillPath
)(
4096 _Inout_ SURFOBJ
*pso
,
4097 _Inout_ PATHOBJ
*ppo
,
4099 _In_opt_ XFORMOBJ
*pxo
,
4100 _In_ BRUSHOBJ
*pboStroke
,
4101 _In_ LINEATTRS
*plineattrs
,
4102 _In_ BRUSHOBJ
*pboFill
,
4103 _In_ POINTL
*pptlBrushOrg
,
4105 _In_ FLONG flOptions
);
4106 typedef FN_DrvStrokeAndFillPath
*PFN_DrvStrokeAndFillPath
;
4107 extern FN_DrvStrokeAndFillPath DrvStrokeAndFillPath
;
4110 (APIENTRY FN_DrvStrokePath
)(
4111 _Inout_ SURFOBJ
*pso
,
4114 _In_opt_ XFORMOBJ
*pxo
,
4116 _In_ POINTL
*pptlBrushOrg
,
4117 _In_ LINEATTRS
*plineattrs
,
4119 typedef FN_DrvStrokePath
*PFN_DrvStrokePath
;
4120 extern FN_DrvStrokePath DrvStrokePath
;
4123 (APIENTRY FN_DrvSwapBuffers
)(
4126 typedef FN_DrvSwapBuffers
*PFN_DrvSwapBuffers
;
4127 extern FN_DrvSwapBuffers DrvSwapBuffers
;
4130 (APIENTRY FN_DrvSynchronize
)(
4132 _In_count_c_(0) RECTL
*prcl
); // should be ignored
4133 typedef FN_DrvSynchronize
*PFN_DrvSynchronize
;
4134 extern FN_DrvSynchronize DrvSynchronize
;
4136 /* DrvSynchronizeSurface.fl constants */
4137 #define DSS_TIMER_EVENT 0x00000001
4138 #define DSS_FLUSH_EVENT 0x00000002
4139 #define DSS_RESERVED 0x00000004
4140 #define DSS_RESERVED1 0x00000008
4143 (APIENTRY FN_DrvSynchronizeSurface
)(
4145 _In_opt_ RECTL
*prcl
,
4147 typedef FN_DrvSynchronizeSurface
*PFN_DrvSynchronizeSurface
;
4148 extern FN_DrvSynchronizeSurface DrvSynchronizeSurface
;
4151 (APIENTRY FN_DrvTextOut
)(
4156 _Null_ RECTL
*prclExtra
,
4157 _In_opt_ RECTL
*prclOpaque
,
4158 _In_ BRUSHOBJ
*pboFore
,
4159 _In_ BRUSHOBJ
*pboOpaque
,
4160 _In_ POINTL
*pptlOrg
,
4162 typedef FN_DrvTextOut
*PFN_DrvTextOut
;
4163 extern FN_DrvTextOut DrvTextOut
;
4166 (APIENTRY FN_DrvTransparentBlt
)(
4167 _Inout_ SURFOBJ
*psoDst
,
4168 _In_ SURFOBJ
*psoSrc
,
4170 _In_opt_ XLATEOBJ
*pxlo
,
4171 _In_ RECTL
*prclDst
,
4172 _In_ RECTL
*prclSrc
,
4173 _In_ ULONG iTransColor
,
4174 _In_ ULONG ulReserved
);
4175 typedef FN_DrvTransparentBlt
*PFN_DrvTransparentBlt
;
4176 extern FN_DrvTransparentBlt DrvTransparentBlt
;
4179 (APIENTRY FN_DrvUnloadFontFile
)(
4180 _In_ ULONG_PTR iFile
);
4181 typedef FN_DrvUnloadFontFile
*PFN_DrvUnloadFontFile
;
4182 extern FN_DrvUnloadFontFile DrvUnloadFontFile
;
4187 (APIENTRY FN_DrvDisableDirectDraw
)(
4188 _In_ DHPDEV dhpdev
);
4189 typedef FN_DrvDisableDirectDraw
*PFN_DrvDisableDirectDraw
;
4190 extern FN_DrvDisableDirectDraw DrvDisableDirectDraw
;
4193 (APIENTRY FN_DrvEnableDirectDraw
)(
4195 _Out_ DD_CALLBACKS
*pCallBacks
,
4196 _Out_ DD_SURFACECALLBACKS
*pSurfaceCallBacks
,
4197 _Out_ DD_PALETTECALLBACKS
*pPaletteCallBacks
);
4198 typedef FN_DrvEnableDirectDraw
*PFN_DrvEnableDirectDraw
;
4199 extern FN_DrvEnableDirectDraw DrvEnableDirectDraw
;
4202 (APIENTRY FN_DrvGetDirectDrawInfo
)(
4204 _Out_ DD_HALINFO
*pHalInfo
,
4205 _Out_ DWORD
*pdwNumHeaps
,
4206 _Out_ VIDEOMEMORY
*pvmList
,
4207 _Out_ DWORD
*pdwNumFourCCCodes
,
4208 _Out_ DWORD
*pdwFourCC
);
4209 typedef FN_DrvGetDirectDrawInfo
*PFN_DrvGetDirectDrawInfo
;
4210 extern FN_DrvGetDirectDrawInfo DrvGetDirectDrawInfo
;
4212 typedef BOOL
//DECLSPEC_DEPRECATED_DDK
4213 (APIENTRY FN_DrvQuerySpoolType
)(
4215 _In_ LPWSTR pwchType
);
4216 typedef FN_DrvQuerySpoolType
*PFN_DrvQuerySpoolType
;
4217 extern FN_DrvQuerySpoolType DrvQuerySpoolType
;
4220 (APIENTRY FN_DrvQueryTrueTypeSection
)(
4226 typedef FN_DrvQueryTrueTypeSection
*PFN_DrvQueryTrueTypeSection
;
4227 extern FN_DrvQueryTrueTypeSection DrvQueryTrueTypeSection
;
4229 DECLSPEC_DEPRECATED_DDK
4231 (APIENTRY FN_DrvMovePanning
)(
4235 typedef FN_DrvMovePanning
*PFN_DrvMovePanning
;
4236 extern FN_DrvMovePanning DrvMovePanning
;
4238 #if (NTDDI_VERSION >= NTDDI_VISTA)
4241 (APIENTRY FN_DrvRenderHint
)(
4243 _In_ ULONG NotifyCode
,
4245 _In_reads_bytes_opt_(Length
) PVOID Data
);
4246 typedef FN_DrvRenderHint
*PFN_DrvRenderHint
;
4247 extern FN_DrvRenderHint DrvRenderHint
;
4249 typedef struct _DRH_APIBITMAPDATA
4253 } DRH_APIBITMAPDATA
, *PDRH_APIBITMAPDATA
;
4255 #define DRH_APIBITMAP 0x00000001
4258 (APIENTRY FN_EngCreateRectRgn
)(
4263 typedef FN_EngCreateRectRgn
*PFN_EngCreateRectRgn
;
4266 (APIENTRY FN_EngDeleteRgn
)(
4268 typedef FN_EngDeleteRgn
*PFN_EngDeleteRgn
;
4271 (APIENTRY FN_EngCombineRgn
)(
4272 _In_ HANDLE hrgnTrg
,
4273 _In_ HANDLE hrgnSrc1
,
4274 _In_ HANDLE hrgnSrc2
,
4276 typedef FN_EngCombineRgn
*PFN_EngCombineRgn
;
4279 (APIENTRY FN_EngCopyRgn
)(
4280 _In_ HANDLE hrgnDst
,
4281 _In_ HANDLE hrgnSrc
);
4282 typedef FN_EngCopyRgn
*PFN_EngCopyRgn
;
4285 (APIENTRY FN_EngIntersectRgn
)(
4286 _In_ HANDLE hrgnResult
,
4289 typedef FN_EngIntersectRgn
*PFN_EngIntersectRgn
;
4292 (APIENTRY FN_EngSubtractRgn
)(
4293 _In_ HANDLE hrgnResult
,
4296 typedef FN_EngSubtractRgn
*PFN_EngSubtractRgn
;
4299 (APIENTRY FN_EngUnionRgn
)(
4300 _In_ HANDLE hrgnResult
,
4303 typedef FN_EngUnionRgn
*PFN_EngUnionRgn
;
4306 (APIENTRY FN_EngXorRgn
)(
4307 _In_ HANDLE hrgnResult
,
4310 typedef FN_EngXorRgn
*PFN_EngXorRgn
;
4312 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
4314 #if (NTDDI_VERSION >= NTDDI_WIN7)
4316 /* DrvCreateDeviceBitmapEx() flags */
4317 #define CDBEX_REDIRECTION 0x00000001
4318 #define CDBEX_DXINTEROP 0x00000002
4321 (APIENTRY FN_DrvCreateDeviceBitmapEx
)(
4326 _In_ DHSURF dhsurfGroup
,
4327 _In_ DWORD DxFormat
,
4328 #if (NTDDI_VERSION >= NTDDI_WIN8)
4329 _In_ DWORD SubresourceIndex
,
4330 #endif /* (NTDDI_VERSION >= NTDDI_WIN8) */
4331 _Out_ HANDLE
* phSharedSurface
);
4332 typedef FN_DrvCreateDeviceBitmapEx
*PFN_DrvCreateDeviceBitmapEx
;
4333 extern DrvCreateDeviceBitmapEx DrvCreateDeviceBitmapEx
4336 (APIENTRY FN_DrvDeleteDeviceBitmapEx
)(
4338 typedef FN_DrvDeleteDeviceBitmapEx
*PFN_DrvDeleteDeviceBitmapEx
;
4339 extern FN_DrvDeleteDeviceBitmapEx DrvDeleteDeviceBitmapEx
;
4342 (APIENTRY FN_DrvAssociateSharedSurface
)(
4343 _In_ SURFOBJ
* psoSurf
,
4344 _In_ HANDLE hPhysicalSurface
,
4345 _In_ HANDLE hLogicalSurface
,
4347 typedef FN_DrvAssociateSharedSurface
*PFN_DrvAssociateSharedSurface
;
4351 (APIENTRY FN_DrvSynchronizeRedirectionBitmaps
)(
4353 _Out_ UINT64
* puiFenceID
);
4354 typedef FN_DrvSynchronizeRedirectionBitmaps
*PFN_DrvSynchronizeRedirectionBitmaps
;
4355 extern FN_DrvSynchronizeRedirectionBitmaps DrvSynchronizeRedirectionBitmaps
;
4357 #define WINDDI_MAX_BROADCAST_CONTEXT 64
4358 typedef struct tagCDDDXGK_REDIRBITMAPPRESENTINFO
4363 HANDLE hContext
[WINDDI_MAX_BROADCAST_CONTEXT
+1];
4364 } CDDDXGK_REDIRBITMAPPRESENTINFO
;
4367 (APIENTRY FN_DrvAccumulateD3DDirtyRect
)(
4368 _In_ SURFOBJ
* psoSurf
,
4369 _In_ CDDDXGK_REDIRBITMAPPRESENTINFO
* pDirty
);
4370 typedef FN_DrvAccumulateD3DDirtyRect
*PFN_DrvAccumulateD3DDirtyRect
;
4371 extern FN_DrvAccumulateD3DDirtyRect DrvAccumulateD3DDirtyRect
;
4374 (APIENTRY FN_DrvStartDxInterop
)(
4375 _In_ SURFOBJ
* psoSurf
,
4377 _In_ PVOID KernelModeDeviceHandle
);
4378 typedef FN_DrvStartDxInterop
*PFN_DrvStartDxInterop
;
4379 extern FN_DrvStartDxInterop DrvStartDxInterop
;
4382 (APIENTRY FN_DrvEndDxInterop
)(
4383 _In_ SURFOBJ
* psoSurf
,
4385 _Out_ BOOL
* bDeviceLost
,
4386 _In_ PVOID KernelModeDeviceHandle
);
4387 typedef FN_DrvEndDxInterop
*PFN_DrvEndDxInterop
;
4388 extern FN_DrvEndDxInterop DrvEndDxInterop
;
4391 (APIENTRY FN_DrvLockDisplayArea
)(
4393 _In_opt_ RECTL
*prcl
);
4394 typedef FN_DrvLockDisplayArea
*PFN_DrvLockDisplayArea
;
4395 extern FN_DrvLockDisplayArea DrvLockDisplayArea
;
4398 (APIENTRY FN_DrvUnlockDisplayArea
)(
4400 _In_opt_ RECTL
*prcl
);
4401 typedef FN_DrvUnlockDisplayArea
*PFN_DrvUnlockDisplayArea
;
4402 extern FN_DrvUnlockDisplayArea DrvUnlockDisplayArea
;
4404 #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
4410 #endif /* defined __VIDEO_H__ */
4412 #endif /* _WINDDI_ */