Something went wrong. Try again.
Reactos
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435/* * winddi.h * * GDI device driver interface * * This file is part of the w32api package. * * Contributors: * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> * Annotations by Timo Kreuzer <timo.kreuzer@reactos.org> * * THIS SOFTWARE IS NOT COPYRIGHTED * * This source code is offered for use in the public domain. You may * use, modify or distribute it freely. * * This code is distributed in the hope that it will be useful but * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY * DISCLAIMED. This includes but is not limited to warranties of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * */
#ifndef _WINDDI_#define _WINDDI_#pragma once
#ifdef __VIDEO_H__#error video.h cannot be included with winddi.h#else
//#include <winapifamily.h>#include <ddrawint.h>#include <d3dnthal.h>#include <specstrings.h>
#ifdef __cplusplusextern "C" {#endif
#ifndef DECLSPEC_IMPORT#define DECLSPEC_IMPORT __attribute__((dllimport))#endif
#if defined(_ENGINE_EXPORT_) #define ENGAPI#else #define ENGAPI DECLSPEC_IMPORT#endif
#ifndef _NO_DDRAWINT_NO_COM
#if !defined(EXTERN_C) #ifdef __cplusplus #define EXTERN_C extern "C" #define __EXTERN_C extern "C" #else #define EXTERN_C extern #define __EXTERN_C #endif#endif /* !defined(EXTERN_C) */
#if !defined(DEFINE_GUID) #ifdef INITGUID #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ __EXTERN_C const GUID name = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } } #else /* !INITGUID */ #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ EXTERN_C const GUID FAR name #endif /* !INITGUID */#endif /* !defined(DEFINE_GUID) */
#if !defined(DEFINE_GUIDEX) #define DEFINE_GUIDEX(name) EXTERN_C const CDECL GUID name#endif /* !defined(DEFINE_GUIDEX) */
#if !defined(STATICGUIDOF) #define STATICGUIDOF(guid) STATIC_##guid#endif /* !defined(STATICGUIDOF) */
#if !defined(GUID_DEFINED) #define GUID_DEFINED typedef struct _GUID { ULONG Data1; USHORT Data2; USHORT Data3; UCHAR Data4[8]; } GUID;#endif /* !defined(GUID_DEFINED) */
#if !defined(IsEqualGUID) #define IsEqualGUID(guid1, guid2) \ (!memcmp((guid1), (guid2), sizeof(GUID)))#endif /* !defined(IsEqualGUID) */
#ifndef IsEqualIID #define IsEqualIID IsEqualGUID#endif /* !defined(IsEqualIID) */
#endif /* !_NO_DDRAWINT_NO_COM */
#define DDI_DRIVER_VERSION_NT4 0x00020000#define DDI_DRIVER_VERSION_SP3 0x00020003#define DDI_DRIVER_VERSION_NT5 0x00030000#define DDI_DRIVER_VERSION_NT5_01 0x00030100#define DDI_DRIVER_VERSION_NT5_01_SP1 0x00030101
#define GDI_DRIVER_VERSION 0x4000
#if defined(_X86_) && !defined(USERMODE_DRIVER) && !defined(BUILD_WOW6432)typedef DWORD FLOATL;#elsetypedef FLOAT FLOATL;#endif
typedef SHORT FWORD;typedef LONG LDECI4;typedef ULONG IDENT;
typedef ULONG_PTR HFF;typedef ULONG_PTR HFC;
typedef LONG PTRDIFF;typedef PTRDIFF *PPTRDIFF;typedef LONG FIX;typedef FIX *PFIX;typedef ULONG ROP4;typedef ULONG MIX;typedef ULONG HGLYPH;typedef HGLYPH *PHGLYPH;
typedef LONG_PTR (APIENTRY *PFN)();
DECLARE_HANDLE(HBM);DECLARE_HANDLE(HDEV);DECLARE_HANDLE(HSURF);DECLARE_HANDLE(DHSURF);DECLARE_HANDLE(DHPDEV);DECLARE_HANDLE(HDRVOBJ);DECLARE_HANDLE(HSEMAPHORE);
typedef _Return_type_success_(return >= 0) long NTSTATUS;
#ifndef _NTDDVDEO_typedef struct _ENG_EVENT *PEVENT;#endif
#define OPENGL_CMD 4352#define OPENGL_GETINFO 4353#define WNDOBJ_SETUP 4354
#define FD_ERROR 0xFFFFFFFF#define DDI_ERROR 0xFFFFFFFF
#define HFF_INVALID ((HFF) 0)#define HFC_INVALID ((HFC) 0)#define HGLYPH_INVALID ((HGLYPH) -1)
#define FP_ALTERNATEMODE 1#define FP_WINDINGMODE 2
#define DN_ACCELERATION_LEVEL 1#define DN_DEVICE_ORIGIN 2#define DN_SLEEP_MODE 3#define DN_DRAWING_BEGIN 4#if (NTDDI_VERSION >= NTDDI_WIN8)#define DN_ASSOCIATE_WINDOW 5#define DN_COMPOSITION_CHANGED 6#define DN_DRAWING_BEGIN_APIBITMAP 7#define DN_SURFOBJ_DESTRUCTION 8#endif /* (NTDDI_VERSION >= NTDDI_WIN8) */
#define SGI_EXTRASPACE 0
#define DCR_SOLID 0#define DCR_DRIVER 1#define DCR_HALFTONE 2
#define GX_IDENTITY 0#define GX_OFFSET 1#define GX_SCALE 2#define GX_GENERAL 3
#define LTOFX(x) ((x) << 4)#define FXTOL(x) ((x) >> 4)#define FXTOLFLOOR(x) ((x) >> 4)#define FXTOLCEILING(x) ((x + 0x0F) >> 4)#define FXTOLROUND(x) ((((x) >> 3) + 1) >> 1)
#define SIZEOFDV(cAxes) (offsetof(DESIGNVECTOR, dvValues) + (cAxes) * sizeof(LONG))#define SIZEOFAXIW(cAxes) (offsetof(AXESLISTW, axlAxisInfo) + (cAxes) * sizeof(AXISINFOW))#define SIZEOFAXIA(cAxes) (offsetof(AXESLISTA, axlAxisInfo) + (cAxes) * sizeof(AXISINFOA))
typedef struct _POINTE { FLOATL x; FLOATL y;} POINTE, *PPOINTE;
typedef union _FLOAT_LONG { FLOATL e; LONG l;} FLOAT_LONG, *PFLOAT_LONG;
typedef struct _POINTFIX { FIX x; FIX y;} POINTFIX, *PPOINTFIX;
typedef struct _RECTFX { FIX xLeft; FIX yTop; FIX xRight; FIX yBottom;} RECTFX, *PRECTFX;
typedef struct _POINTQF { LARGE_INTEGER x; LARGE_INTEGER y;} POINTQF, *PPOINTQF;
typedef struct _BLENDOBJ { BLENDFUNCTION BlendFunction;} BLENDOBJ,*PBLENDOBJ;
/* BRUSHOBJ.flColorType */#define BR_DEVICE_ICM 0x01#define BR_HOST_ICM 0x02#define BR_CMYKCOLOR 0x04#define BR_ORIGCOLOR 0x08
typedef struct _BRUSHOBJ { ULONG iSolidColor; PVOID pvRbrush; FLONG flColorType;} BRUSHOBJ;
typedef struct _CIECHROMA { LDECI4 x; LDECI4 y; LDECI4 Y;} CIECHROMA;
typedef struct _RUN { LONG iStart; LONG iStop;} RUN, *PRUN;
typedef struct _CLIPLINE { POINTFIX ptfxA; POINTFIX ptfxB; LONG lStyleState; ULONG c; _Field_size_(c) RUN arun[1];} CLIPLINE, *PCLIPLINE;
/* CLIPOBJ.iDComplexity constants */#define DC_TRIVIAL 0#define DC_RECT 1#define DC_COMPLEX 3
/* CLIPOBJ.iFComplexity constants */#define FC_RECT 1#define FC_RECT4 2#define FC_COMPLEX 3
/* CLIPOBJ.iMode constants */#define TC_RECTANGLES 0#define TC_PATHOBJ 2
/* CLIPOBJ.fjOptions constants */#define OC_BANK_CLIP 1
typedef struct _CLIPOBJ { ULONG iUniq; RECTL rclBounds; BYTE iDComplexity; BYTE iFComplexity; BYTE iMode; BYTE fjOptions;} CLIPOBJ;
typedef struct _COLORINFO { CIECHROMA Red; CIECHROMA Green; CIECHROMA Blue; CIECHROMA Cyan; CIECHROMA Magenta; CIECHROMA Yellow; CIECHROMA AlignmentWhite; LDECI4 RedGamma; LDECI4 GreenGamma; LDECI4 BlueGamma; LDECI4 MagentaInCyanDye; LDECI4 YellowInCyanDye; LDECI4 CyanInMagentaDye; LDECI4 YellowInMagentaDye; LDECI4 CyanInYellowDye; LDECI4 MagentaInYellowDye;} COLORINFO, *PCOLORINFO;
/* DEVHTADJDATA.DeviceFlags constants */#define DEVHTADJF_COLOR_DEVICE 0x00000001#define DEVHTADJF_ADDITIVE_DEVICE 0x00000002
typedef struct _DEVHTINFO { DWORD HTFlags; DWORD HTPatternSize; DWORD DevPelsDPI; COLORINFO ColorInfo;} DEVHTINFO, *PDEVHTINFO;
typedef struct _DEVHTADJDATA { DWORD DeviceFlags; DWORD DeviceXDPI; DWORD DeviceYDPI; PDEVHTINFO pDefHTInfo; PDEVHTINFO pAdjHTInfo;} DEVHTADJDATA, *PDEVHTADJDATA;
/* DEVINFO.flGraphicsCaps flags */#define GCAPS_BEZIERS 0x00000001#define GCAPS_GEOMETRICWIDE 0x00000002#define GCAPS_ALTERNATEFILL 0x00000004#define GCAPS_WINDINGFILL 0x00000008#define GCAPS_HALFTONE 0x00000010#define GCAPS_COLOR_DITHER 0x00000020#define GCAPS_HORIZSTRIKE 0x00000040#define GCAPS_VERTSTRIKE 0x00000080#define GCAPS_OPAQUERECT 0x00000100#define GCAPS_VECTORFONT 0x00000200#define GCAPS_MONO_DITHER 0x00000400#define GCAPS_ASYNCCHANGE 0x00000800#define GCAPS_ASYNCMOVE 0x00001000#define GCAPS_DONTJOURNAL 0x00002000#define GCAPS_DIRECTDRAW 0x00004000#define GCAPS_ARBRUSHOPAQUE 0x00008000#define GCAPS_PANNING 0x00010000#define GCAPS_HIGHRESTEXT 0x00040000#define GCAPS_PALMANAGED 0x00080000#define GCAPS_DITHERONREALIZE 0x00200000#define GCAPS_NO64BITMEMACCESS 0x00400000#define GCAPS_FORCEDITHER 0x00800000#define GCAPS_GRAY16 0x01000000#define GCAPS_ICM 0x02000000#define GCAPS_CMYKCOLOR 0x04000000#define GCAPS_LAYERED 0x08000000#define GCAPS_ARBRUSHTEXT 0x10000000#define GCAPS_SCREENPRECISION 0x20000000#define GCAPS_FONT_RASTERIZER 0x40000000#define GCAPS_NUP 0x80000000
/* DEVINFO.iDitherFormat constants */#define BMF_1BPP 1L#define BMF_4BPP 2L#define BMF_8BPP 3L#define BMF_16BPP 4L#define BMF_24BPP 5L#define BMF_32BPP 6L#define BMF_4RLE 7L#define BMF_8RLE 8L#define BMF_JPEG 9L#define BMF_PNG 10L
/* DEVINFO.flGraphicsCaps2 flags */#define GCAPS2_JPEGSRC 0x00000001#define GCAPS2_xxxx 0x00000002#define GCAPS2_PNGSRC 0x00000008#define GCAPS2_CHANGEGAMMARAMP 0x00000010#define GCAPS2_ALPHACURSOR 0x00000020#define GCAPS2_SYNCFLUSH 0x00000040#define GCAPS2_SYNCTIMER 0x00000080#define GCAPS2_ICD_MULTIMON 0x00000100#define GCAPS2_MOUSETRAILS 0x00000200#define GCAPS2_RESERVED1 0x00000400#if (NTDDI_VERSION >= NTDDI_VISTA)#define GCAPS2_EXCLUDELAYERED 0x00000800#define GCAPS2_INCLUDEAPIBITMAPS 0x00001000#define GCAPS2_SHOWHIDDENPOINTER 0x00002000#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */#if (NTDDI_VERSION >= NTDDI_WIN7)#define GCAPS2_CLEARTYPE 0x00004000#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */#if (NTDDI_VERSION >= NTDDI_WIN8)#define GCAPS2_ACC_DRIVER 0x00008000#endif /* (NTDDI_VERSION >= NTDDI_WIN8) */
typedef struct _DEVINFO { FLONG flGraphicsCaps; LOGFONTW lfDefaultFont; LOGFONTW lfAnsiVarFont; LOGFONTW lfAnsiFixFont; ULONG cFonts; ULONG iDitherFormat; USHORT cxDither; USHORT cyDither; HPALETTE hpalDefault; FLONG flGraphicsCaps2;} DEVINFO, *PDEVINFO;
struct _DRIVEROBJ;
typedef BOOL(APIENTRY CALLBACK *FREEOBJPROC)( _In_ struct _DRIVEROBJ *pDriverObj);
typedef struct _DRIVEROBJ { PVOID pvObj; FREEOBJPROC pFreeProc; HDEV hdev; DHPDEV dhpdev;} DRIVEROBJ;
/* DRVFN.iFunc constants */#define INDEX_DrvEnablePDEV 0L#define INDEX_DrvCompletePDEV 1L#define INDEX_DrvDisablePDEV 2L#define INDEX_DrvEnableSurface 3L#define INDEX_DrvDisableSurface 4L#define INDEX_DrvAssertMode 5L#define INDEX_DrvOffset 6L#define INDEX_DrvResetPDEV 7L#define INDEX_DrvDisableDriver 8L#define INDEX_DrvUnknown1 9L#define INDEX_DrvCreateDeviceBitmap 10L#define INDEX_DrvDeleteDeviceBitmap 11L#define INDEX_DrvRealizeBrush 12L#define INDEX_DrvDitherColor 13L#define INDEX_DrvStrokePath 14L#define INDEX_DrvFillPath 15L#define INDEX_DrvStrokeAndFillPath 16L#define INDEX_DrvPaint 17L#define INDEX_DrvBitBlt 18L#define INDEX_DrvCopyBits 19L#define INDEX_DrvStretchBlt 20L#define INDEX_DrvUnknown2 21L#define INDEX_DrvSetPalette 22L#define INDEX_DrvTextOut 23L#define INDEX_DrvEscape 24L#define INDEX_DrvDrawEscape 25L#define INDEX_DrvQueryFont 26L#define INDEX_DrvQueryFontTree 27L#define INDEX_DrvQueryFontData 28L#define INDEX_DrvSetPointerShape 29L#define INDEX_DrvMovePointer 30L#define INDEX_DrvLineTo 31L#define INDEX_DrvSendPage 32L#define INDEX_DrvStartPage 33L#define INDEX_DrvEndDoc 34L#define INDEX_DrvStartDoc 35L#define INDEX_DrvUnknown3 36L#define INDEX_DrvGetGlyphMode 37L#define INDEX_DrvSynchronize 38L#define INDEX_DrvUnknown4 39L#define INDEX_DrvSaveScreenBits 40L#define INDEX_DrvGetModes 41L#define INDEX_DrvFree 42L#define INDEX_DrvDestroyFont 43L#define INDEX_DrvQueryFontCaps 44L#define INDEX_DrvLoadFontFile 45L#define INDEX_DrvUnloadFontFile 46L#define INDEX_DrvFontManagement 47L#define INDEX_DrvQueryTrueTypeTable 48L#define INDEX_DrvQueryTrueTypeOutline 49L#define INDEX_DrvGetTrueTypeFile 50L#define INDEX_DrvQueryFontFile 51L#define INDEX_DrvMovePanning 52L#define INDEX_DrvQueryAdvanceWidths 53L#define INDEX_DrvSetPixelFormat 54L#define INDEX_DrvDescribePixelFormat 55L#define INDEX_DrvSwapBuffers 56L#define INDEX_DrvStartBanding 57L#define INDEX_DrvNextBand 58L#define INDEX_DrvGetDirectDrawInfo 59L#define INDEX_DrvEnableDirectDraw 60L#define INDEX_DrvDisableDirectDraw 61L#define INDEX_DrvQuerySpoolType 62L#define INDEX_DrvUnknown5 63L#define INDEX_DrvIcmCreateColorTransform 64L#define INDEX_DrvIcmDeleteColorTransform 65L#define INDEX_DrvIcmCheckBitmapBits 66L#define INDEX_DrvIcmSetDeviceGammaRamp 67L#define INDEX_DrvGradientFill 68L#define INDEX_DrvStretchBltROP 69L#define INDEX_DrvPlgBlt 70L#define INDEX_DrvAlphaBlend 71L#define INDEX_DrvSynthesizeFont 72L#define INDEX_DrvGetSynthesizedFontFiles 73L#define INDEX_DrvTransparentBlt 74L#define INDEX_DrvQueryPerBandInfo 75L#define INDEX_DrvQueryDeviceSupport 76L#define INDEX_DrvReserved1 77L#define INDEX_DrvReserved2 78L#define INDEX_DrvReserved3 79L#define INDEX_DrvReserved4 80L#define INDEX_DrvReserved5 81L#define INDEX_DrvReserved6 82L#define INDEX_DrvReserved7 83L#define INDEX_DrvReserved8 84L#define INDEX_DrvDeriveSurface 85L#define INDEX_DrvQueryGlyphAttrs 86L#define INDEX_DrvNotify 87L#define INDEX_DrvSynchronizeSurface 88L#define INDEX_DrvResetDevice 89L#define INDEX_DrvReserved9 90L#define INDEX_DrvReserved10 91L#define INDEX_DrvReserved11 92L#if (NTDDI_VERSION >= NTDDI_VISTA)#define INDEX_DrvRenderHint 93L#if (NTDDI_VERSION >= NTDDI_WIN7)#define INDEX_DrvCreateDeviceBitmapEx 94L#define INDEX_DrvDeleteDeviceBitmapEx 95L#define INDEX_DrvAssociateSharedSurface 96L#define INDEX_DrvSynchronizeRedirectionBitmaps 97L#define INDEX_DrvAccumulateD3DDirtyRect 98L#define INDEX_DrvStartDxInterop 99L#define INDEX_DrvEndDxInterop 100L#define INDEX_DrvLockDisplayArea 101L#define INDEX_DrvUnlockDisplayArea 102L#define INDEX_LAST 103L#else /* (NTDDI_VERSION >= NTDDI_WIN7) */#define INDEX_LAST 94L#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */#else /* (NTDDI_VERSION >= NTDDI_VISTA) */#define INDEX_LAST 93L#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
typedef struct _DRVFN { ULONG iFunc; PFN pfn;} DRVFN, *PDRVFN;
/* DRVENABLEDATA.iDriverVersion constants */#define DDI_DRIVER_VERSION_NT4 0x00020000#define DDI_DRIVER_VERSION_SP3 0x00020003#define DDI_DRIVER_VERSION_NT5 0x00030000#define DDI_DRIVER_VERSION_NT5_01 0x00030100#define DDI_DRIVER_VERSION_NT5_01_SP1 0x00030101
typedef struct tagDRVENABLEDATA { ULONG iDriverVersion; ULONG c; DRVFN *pdrvfn;} DRVENABLEDATA, *PDRVENABLEDATA;
/* Font file status values */#define FF_SIGNATURE_VERIFIED 0x00000001L#define FF_IGNORED_SIGNATURE 0x00000002L
/* Obsolete in Windows 2000 and later */typedef struct { DWORD nSize; HDC hdc; PBYTE pvEMF; PBYTE pvCurrentRecord;} EMFINFO, *PEMFINFO;
typedef struct _ENGSAFESEMAPHORE { HSEMAPHORE hsem; LONG lCount;} ENGSAFESEMAPHORE;
typedef struct _ENG_TIME_FIELDS { _Field_range_(1601,MAXUSHORT) USHORT usYear; _Field_range_(1,12) USHORT usMonth; _Field_range_(1,31) USHORT usDay; _Field_range_(0,23) USHORT usHour; _Field_range_(0,59) USHORT usMinute; _Field_range_(0,59) USHORT usSecond; _Field_range_(0,999) USHORT usMilliseconds; _Field_range_(0,6) USHORT usWeekday; // 0 == Sunday} ENG_TIME_FIELDS, *PENG_TIME_FIELDS;
typedef struct _ENUMRECTS { ULONG c; RECTL arcl[1];} ENUMRECTS;
typedef struct _FD_XFORM { FLOATL eXX; FLOATL eXY; FLOATL eYX; FLOATL eYY;} FD_XFORM, *PFD_XFORM;
/* FD_DEVICEMETRICS.flRealizedType constants */#define FDM_TYPE_BM_SIDE_CONST 0x00000001#define FDM_TYPE_MAXEXT_EQUAL_BM_SIDE 0x00000002#define FDM_TYPE_CHAR_INC_EQUAL_BM_BASE 0x00000004#define FDM_TYPE_ZERO_BEARINGS 0x00000008#define FDM_TYPE_CONST_BEARINGS 0x00000010
typedef struct _FD_DEVICEMETRICS { FLONG flRealizedType; POINTE pteBase; POINTE pteSide; LONG lD; FIX fxMaxAscender; FIX fxMaxDescender; POINTL ptlUnderline1; POINTL ptlStrikeout; POINTL ptlULThickness; POINTL ptlSOThickness; ULONG cxMax; ULONG cyMax; ULONG cjGlyphMax; FD_XFORM fdxQuantized; LONG lNonLinearExtLeading; LONG lNonLinearIntLeading; LONG lNonLinearMaxCharWidth; LONG lNonLinearAvgCharWidth; LONG lMinA; LONG lMinC; LONG lMinD; LONG alReserved[1];} FD_DEVICEMETRICS, *PFD_DEVICEMETRICS;
/* FD_GLYPHATTR.iMode constants */#define FO_ATTR_MODE_ROTATE 1
typedef struct _FD_GLYPHATTR { ULONG cjThis; ULONG cGlyphs; ULONG iMode; _Field_size_((cGlyphs+7)/8) BYTE aGlyphAttr[1];} FD_GLYPHATTR, *PFD_GLYPHATTR;
/* FD_GLYPHSET.flAccel */#define GS_UNICODE_HANDLES 0x00000001#define GS_8BIT_HANDLES 0x00000002#define GS_16BIT_HANDLES 0x00000004
typedef struct _WCRUN { WCHAR wcLow; USHORT cGlyphs; HGLYPH *phg;} WCRUN, *PWCRUN;
typedef struct _FD_GLYPHSET { ULONG cjThis; FLONG flAccel; ULONG cGlyphsSupported; ULONG cRuns; _Field_size_(cRuns) WCRUN awcrun[1];} FD_GLYPHSET, *PFD_GLYPHSET;
typedef struct _FD_KERNINGPAIR { WCHAR wcFirst; WCHAR wcSecond; FWORD fwdKern;} FD_KERNINGPAIR;
/* Obsolete in Windows 2000 and later */typedef struct _LIGATURE { ULONG culSize; LPWSTR pwsz; ULONG chglyph; HGLYPH ahglyph[1];} LIGATURE, *PLIGATURE;
/* Obsolete in Windows 2000 and later */typedef struct _FD_LIGATURE { ULONG culThis; ULONG ulType; ULONG cLigatures; LIGATURE alig[1];} FD_LIGATURE;
#if defined(_X86_) && !defined(USERMODE_DRIVER)typedef struct _FLOATOBJ{ ULONG ul1; ULONG ul2;} FLOATOBJ, *PFLOATOBJ;#elsetypedef FLOAT FLOATOBJ, *PFLOATOBJ;#endif
#ifndef USERMODE_DRIVERtypedef struct tagFLOATOBJ_XFORM { FLOATOBJ eM11; FLOATOBJ eM12; FLOATOBJ eM21; FLOATOBJ eM22; FLOATOBJ eDx; FLOATOBJ eDy;} FLOATOBJ_XFORM, *PFLOATOBJ_XFORM, FAR *LPFLOATOBJ_XFORM;#elsetypedef XFORML FLOATOBJ_XFORM, *PFLOATOBJ_XFORM, FAR *LPFLOATOBJ_XFORM;#endif
/* FONTDIFF.fsSelection */#define FM_SEL_ITALIC 0x0001#define FM_SEL_UNDERSCORE 0x0002#define FM_SEL_NEGATIVE 0x0004#define FM_SEL_OUTLINED 0x0008#define FM_SEL_STRIKEOUT 0x0010#define FM_SEL_BOLD 0x0020#define FM_SEL_REGULAR 0x0040
typedef struct _FONTDIFF { BYTE jReserved1; BYTE jReserved2; BYTE jReserved3; BYTE bWeight; USHORT usWinWeight; FSHORT fsSelection; FWORD fwdAveCharWidth; FWORD fwdMaxCharInc; POINTL ptlCaret;} FONTDIFF;
typedef struct _FONTSIM { PTRDIFF dpBold; PTRDIFF dpItalic; PTRDIFF dpBoldItalic;} FONTSIM;
/* FONTINFO.flCaps constants */#define FO_DEVICE_FONT 1L#define FO_OUTLINE_CAPABLE 2L
typedef struct _FONTINFO { ULONG cjThis; FLONG flCaps; ULONG cGlyphsSupported; ULONG cjMaxGlyph1; ULONG cjMaxGlyph4; ULONG cjMaxGlyph8; ULONG cjMaxGlyph32;} FONTINFO, *PFONTINFO;
/* FONTOBJ.flFontType constants */#define FO_TYPE_RASTER RASTER_FONTTYPE#define FO_TYPE_DEVICE DEVICE_FONTTYPE#define FO_TYPE_TRUETYPE TRUETYPE_FONTTYPE#define FO_TYPE_OPENTYPE OPENTYPE_FONTTYPE
#define FO_SIM_BOLD 0x00002000#define FO_SIM_ITALIC 0x00004000#define FO_EM_HEIGHT 0x00008000#define FO_GRAY16 0x00010000#define FO_NOGRAY16 0x00020000#define FO_NOHINTS 0x00040000#define FO_NO_CHOICE 0x00080000#define FO_CFF 0x00100000#define FO_POSTSCRIPT 0x00200000#define FO_MULTIPLEMASTER 0x00400000#define FO_VERT_FACE 0x00800000#define FO_DBCS_FONT 0X01000000#define FO_NOCLEARTYPE 0x02000000#define FO_CLEARTYPE_X 0x10000000#define FO_CLEARTYPE_Y 0x20000000#define FO_CLEARTYPENATURAL_X 0x40000000
#define FD_NEGATIVE_FONT 1L /* Obsolete in Windows 2000 and later */#define FO_DEVICE_FONT 1L#define FO_OUTLINE_CAPABLE 2L
typedef struct _FONTOBJ { ULONG iUniq; ULONG iFace; ULONG cxMax; FLONG flFontType; ULONG_PTR iTTUniq; ULONG_PTR iFile; SIZE sizLogResPpi; ULONG ulStyleSize; PVOID pvConsumer; PVOID pvProducer;} FONTOBJ;
typedef struct _GAMMARAMP { WORD Red[256]; WORD Green[256]; WORD Blue[256];} GAMMARAMP, *PGAMMARAMP;
/* GDIINFO.ulPrimaryOrder constants */#define PRIMARY_ORDER_ABC 0#define PRIMARY_ORDER_ACB 1#define PRIMARY_ORDER_BAC 2#define PRIMARY_ORDER_BCA 3#define PRIMARY_ORDER_CBA 4#define PRIMARY_ORDER_CAB 5
/* GDIINFO.ulHTPatternSize constants */#define HT_PATSIZE_2x2 0#define HT_PATSIZE_2x2_M 1#define HT_PATSIZE_4x4 2#define HT_PATSIZE_4x4_M 3#define HT_PATSIZE_6x6 4#define HT_PATSIZE_6x6_M 5#define HT_PATSIZE_8x8 6#define HT_PATSIZE_8x8_M 7#define HT_PATSIZE_10x10 8#define HT_PATSIZE_10x10_M 9#define HT_PATSIZE_12x12 10#define HT_PATSIZE_12x12_M 11#define HT_PATSIZE_14x14 12#define HT_PATSIZE_14x14_M 13#define HT_PATSIZE_16x16 14#define HT_PATSIZE_16x16_M 15#define HT_PATSIZE_SUPERCELL 16#define HT_PATSIZE_SUPERCELL_M 17#define HT_PATSIZE_USER 18#define HT_PATSIZE_MAX_INDEX HT_PATSIZE_USER#define HT_PATSIZE_DEFAULT HT_PATSIZE_SUPERCELL_M#define HT_USERPAT_CX_MIN 4#define HT_USERPAT_CX_MAX 256#define HT_USERPAT_CY_MIN 4#define HT_USERPAT_CY_MAX 256
/* GDIINFO.ulHTOutputFormat constants */#define HT_FORMAT_1BPP 0#define HT_FORMAT_4BPP 2#define HT_FORMAT_4BPP_IRGB 3#define HT_FORMAT_8BPP 4#define HT_FORMAT_16BPP 5#define HT_FORMAT_24BPP 6#define HT_FORMAT_32BPP 7
/* GDIINFO.flHTFlags */#define HT_FLAG_SQUARE_DEVICE_PEL 0x00000001#define HT_FLAG_HAS_BLACK_DYE 0x00000002#define HT_FLAG_ADDITIVE_PRIMS 0x00000004#define HT_FLAG_USE_8BPP_BITMASK 0x00000008#define HT_FLAG_INK_HIGH_ABSORPTION 0x00000010#define HT_FLAG_INK_ABSORPTION_INDICES 0x00000060#define HT_FLAG_DO_DEVCLR_XFORM 0x00000080#define HT_FLAG_OUTPUT_CMY 0x00000100#define HT_FLAG_PRINT_DRAFT_MODE 0x00000200#define HT_FLAG_INVERT_8BPP_BITMASK_IDX 0x00000400#define HT_FLAG_8BPP_CMY332_MASK 0xFF000000
#define MAKE_CMYMASK_BYTE(c,m,y) ((BYTE)(((BYTE)(c) & 0x07) << 5) \ |(BYTE)(((BYTE)(m) & 0x07) << 2) \ |(BYTE)((BYTE)(y) & 0x03))
#define MAKE_CMY332_MASK(c,m,y) ((DWORD)(((DWORD)(c) & 0x07) << 29)\ |(DWORD)(((DWORD)(m) & 0x07) << 26)\ |(DWORD)(((DWORD)(y) & 0x03) << 24))
/* GDIINFO.flHTFlags constants */#define HT_FLAG_INK_ABSORPTION_IDX0 0x00000000#define HT_FLAG_INK_ABSORPTION_IDX1 0x00000020#define HT_FLAG_INK_ABSORPTION_IDX2 0x00000040#define HT_FLAG_INK_ABSORPTION_IDX3 0x00000060
#define HT_FLAG_HIGHEST_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \ |HT_FLAG_INK_ABSORPTION_IDX3)#define HT_FLAG_HIGHER_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \ |HT_FLAG_INK_ABSORPTION_IDX2)#define HT_FLAG_HIGH_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \ |HT_FLAG_INK_ABSORPTION_IDX1)#define HT_FLAG_NORMAL_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX0#define HT_FLAG_LOW_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX1#define HT_FLAG_LOWER_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX2#define HT_FLAG_LOWEST_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX3
#define HT_BITMASKPALRGB (DWORD)'0BGR'#define HT_SET_BITMASKPAL2RGB(pPal) (*((LPDWORD)(pPal)) = HT_BITMASKPALRGB)#define HT_IS_BITMASKPALRGB(pPal) (*((LPDWORD)(pPal)) == (DWORD)0)
/* GDIINFO.ulPhysicalPixelCharacteristics constants */#define PPC_DEFAULT 0x0#define PPC_UNDEFINED 0x1#define PPC_RGB_ORDER_VERTICAL_STRIPES 0x2#define PPC_BGR_ORDER_VERTICAL_STRIPES 0x3#define PPC_RGB_ORDER_HORIZONTAL_STRIPES 0x4#define PPC_BGR_ORDER_HORIZONTAL_STRIPES 0x5
#define PPG_DEFAULT 0#define PPG_SRGB 1
typedef struct _GDIINFO { ULONG ulVersion; ULONG ulTechnology; ULONG ulHorzSize; ULONG ulVertSize; ULONG ulHorzRes; ULONG ulVertRes; ULONG cBitsPixel; ULONG cPlanes; ULONG ulNumColors; ULONG flRaster; ULONG ulLogPixelsX; ULONG ulLogPixelsY; ULONG flTextCaps; ULONG ulDACRed; ULONG ulDACGreen; ULONG ulDACBlue; ULONG ulAspectX; ULONG ulAspectY; ULONG ulAspectXY; LONG xStyleStep; LONG yStyleStep; LONG denStyleStep; POINTL ptlPhysOffset; SIZEL szlPhysSize; ULONG ulNumPalReg; COLORINFO ciDevice; ULONG ulDevicePelsDPI; ULONG ulPrimaryOrder; ULONG ulHTPatternSize; ULONG ulHTOutputFormat; ULONG flHTFlags; ULONG ulVRefresh; ULONG ulBltAlignment; ULONG ulPanningHorzRes; ULONG ulPanningVertRes; ULONG xPanningAlignment; ULONG yPanningAlignment; ULONG cxHTPat; ULONG cyHTPat; LPBYTE pHTPatA; LPBYTE pHTPatB; LPBYTE pHTPatC; ULONG flShadeBlend; ULONG ulPhysicalPixelCharacteristics; ULONG ulPhysicalPixelGamma;} GDIINFO, *PGDIINFO;
/* PATHDATA.flags constants */#define PD_BEGINSUBPATH 0x00000001#define PD_ENDSUBPATH 0x00000002#define PD_RESETSTYLE 0x00000004#define PD_CLOSEFIGURE 0x00000008#define PD_BEZIERS 0x00000010#define PD_ALL (PD_BEGINSUBPATH \ |PD_ENDSUBPATH \ |PD_RESETSTYLE \ |PD_CLOSEFIGURE \ PD_BEZIERS)
typedef struct _PATHDATA { FLONG flags; ULONG count; POINTFIX *pptfx;} PATHDATA, *PPATHDATA;
/* PATHOBJ.fl constants */#define PO_BEZIERS 0x00000001#define PO_ELLIPSE 0x00000002#define PO_ALL_INTEGERS 0x00000004#define PO_ENUM_AS_INTEGERS 0x00000008#if (NTDDI_VERSION >= NTDDI_WIN7)#define PO_WIDENED 0x00000010#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
typedef struct _PATHOBJ { FLONG fl; ULONG cCurves;} PATHOBJ;
typedef BYTE GAMMA_TABLES[2][256];
typedef struct _GLYPHBITS { POINTL ptlOrigin; SIZEL sizlBitmap; BYTE aj[1];} GLYPHBITS;
typedef union _GLYPHDEF { GLYPHBITS *pgb; PATHOBJ *ppo;} GLYPHDEF;
typedef struct _GLYPHPOS { HGLYPH hg; GLYPHDEF *pgdf; POINTL ptl;} GLYPHPOS, *PGLYPHPOS;
typedef struct _GLYPHDATA { GLYPHDEF gdf; HGLYPH hg; FIX fxD; FIX fxA; FIX fxAB; FIX fxInkTop; FIX fxInkBottom; RECTL rclInk; POINTQF ptqD;} GLYPHDATA;
typedef struct _IFIEXTRA { ULONG ulIdentifier; PTRDIFF dpFontSig; ULONG cig; PTRDIFF dpDesignVector; PTRDIFF dpAxesInfoW; ULONG aulReserved[1];} IFIEXTRA, *PIFIEXTRA;
/* IFIMETRICS constants */
#define FM_VERSION_NUMBER 0x0
/* IFIMETRICS.fsType constants */#define FM_TYPE_LICENSED 0x2#define FM_READONLY_EMBED 0x4#define FM_EDITABLE_EMBED 0x8#define FM_NO_EMBEDDING FM_TYPE_LICENSED
/* IFIMETRICS.flInfo constants */#define FM_INFO_TECH_TRUETYPE 0x00000001#define FM_INFO_TECH_BITMAP 0x00000002#define FM_INFO_TECH_STROKE 0x00000004#define FM_INFO_TECH_OUTLINE_NOT_TRUETYPE 0x00000008#define FM_INFO_ARB_XFORMS 0x00000010#define FM_INFO_1BPP 0x00000020#define FM_INFO_4BPP 0x00000040#define FM_INFO_8BPP 0x00000080#define FM_INFO_16BPP 0x00000100#define FM_INFO_24BPP 0x00000200#define FM_INFO_32BPP 0x00000400#define FM_INFO_INTEGER_WIDTH 0x00000800#define FM_INFO_CONSTANT_WIDTH 0x00001000#define FM_INFO_NOT_CONTIGUOUS 0x00002000#define FM_INFO_TECH_MM 0x00004000#define FM_INFO_RETURNS_OUTLINES 0x00008000#define FM_INFO_RETURNS_STROKES 0x00010000#define FM_INFO_RETURNS_BITMAPS 0x00020000#define FM_INFO_DSIG 0x00040000#define FM_INFO_RIGHT_HANDED 0x00080000#define FM_INFO_INTEGRAL_SCALING 0x00100000#define FM_INFO_90DEGREE_ROTATIONS 0x00200000#define FM_INFO_OPTICALLY_FIXED_PITCH 0x00400000#define FM_INFO_DO_NOT_ENUMERATE 0x00800000#define FM_INFO_ISOTROPIC_SCALING_ONLY 0x01000000#define FM_INFO_ANISOTROPIC_SCALING_ONLY 0x02000000#define FM_INFO_TECH_CFF 0x04000000#define FM_INFO_FAMILY_EQUIV 0x08000000#define FM_INFO_DBCS_FIXED_PITCH 0x10000000#define FM_INFO_NONNEGATIVE_AC 0x20000000#define FM_INFO_IGNORE_TC_RA_ABLE 0x40000000#define FM_INFO_TECH_TYPE1 0x80000000
#define MAXCHARSETS 16 /* Obsolete in Windows 2000 and later */
/* IFIMETRICS.ulPanoseCulture constants */#define FM_PANOSE_CULTURE_LATIN 0x0
typedef struct _IFIMETRICS { ULONG cjThis; ULONG cjIfiExtra; PTRDIFF dpwszFamilyName; PTRDIFF dpwszStyleName; PTRDIFF dpwszFaceName; PTRDIFF dpwszUniqueName; PTRDIFF dpFontSim; LONG lEmbedId; LONG lItalicAngle; LONG lCharBias; PTRDIFF dpCharSets; BYTE jWinCharSet; BYTE jWinPitchAndFamily; USHORT usWinWeight; ULONG flInfo; USHORT fsSelection; USHORT fsType; FWORD fwdUnitsPerEm; FWORD fwdLowestPPEm; FWORD fwdWinAscender; FWORD fwdWinDescender; FWORD fwdMacAscender; FWORD fwdMacDescender; FWORD fwdMacLineGap; FWORD fwdTypoAscender; FWORD fwdTypoDescender; FWORD fwdTypoLineGap; FWORD fwdAveCharWidth; FWORD fwdMaxCharInc; FWORD fwdCapHeight; FWORD fwdXHeight; FWORD fwdSubscriptXSize; FWORD fwdSubscriptYSize; FWORD fwdSubscriptXOffset; FWORD fwdSubscriptYOffset; FWORD fwdSuperscriptXSize; FWORD fwdSuperscriptYSize; FWORD fwdSuperscriptXOffset; FWORD fwdSuperscriptYOffset; FWORD fwdUnderscoreSize; FWORD fwdUnderscorePosition; FWORD fwdStrikeoutSize; FWORD fwdStrikeoutPosition; BYTE chFirstChar; BYTE chLastChar; BYTE chDefaultChar; BYTE chBreakChar; WCHAR wcFirstChar; WCHAR wcLastChar; WCHAR wcDefaultChar; WCHAR wcBreakChar; POINTL ptlBaseline; POINTL ptlAspect; POINTL ptlCaret; RECTL rclFontBox; BYTE achVendId[4]; ULONG cKerningPairs; ULONG ulPanoseCulture; PANOSE panose;#if defined(_WIN64) PVOID Align;#endif} IFIMETRICS, *PIFIMETRICS;
/* LINEATTRS.fl */#define LA_GEOMETRIC 0x00000001#define LA_ALTERNATE 0x00000002#define LA_STARTGAP 0x00000004#define LA_STYLED 0x00000008
/* LINEATTRS.iJoin */#define JOIN_ROUND 0L#define JOIN_BEVEL 1L#define JOIN_MITER 2L
/* LINEATTRS.iEndCap */#define ENDCAP_ROUND 0L#define ENDCAP_SQUARE 1L#define ENDCAP_BUTT 2L
typedef struct _LINEATTRS { FLONG fl; ULONG iJoin; ULONG iEndCap; FLOAT_LONG elWidth; FLOATL eMiterLimit; ULONG cstyle; PFLOAT_LONG pstyle; FLOAT_LONG elStyleState;} LINEATTRS, *PLINEATTRS;
typedef struct _PALOBJ { ULONG ulReserved;} PALOBJ;
typedef struct _PERBANDINFO { BOOL bRepeatThisBand; SIZEL szlBand; ULONG ulHorzRes; ULONG ulVertRes;} PERBANDINFO, *PPERBANDINFO;
/* STROBJ.flAccel constants */#define SO_FLAG_DEFAULT_PLACEMENT 0x00000001#define SO_HORIZONTAL 0x00000002#define SO_VERTICAL 0x00000004#define SO_REVERSED 0x00000008#define SO_ZERO_BEARINGS 0x00000010#define SO_CHAR_INC_EQUAL_BM_BASE 0x00000020#define SO_MAXEXT_EQUAL_BM_SIDE 0x00000040#define SO_DO_NOT_SUBSTITUTE_DEVICE_FONT 0x00000080#define SO_GLYPHINDEX_TEXTOUT 0x00000100#define SO_ESC_NOT_ORIENT 0x00000200#define SO_DXDY 0x00000400#define SO_CHARACTER_EXTRA 0x00000800#define SO_BREAK_EXTRA 0x00001000
typedef struct _STROBJ { ULONG cGlyphs; FLONG flAccel; ULONG ulCharInc; RECTL rclBkGround; GLYPHPOS *pgp; LPWSTR pwszOrg;} STROBJ;
/* SURFOBJ.iType constants */#define STYPE_BITMAP 0L#define STYPE_DEVICE 1L#define STYPE_DEVBITMAP 3L
/* SURFOBJ.fjBitmap constants */#define BMF_TOPDOWN 0x0001#define BMF_NOZEROINIT 0x0002#define BMF_DONTCACHE 0x0004#define BMF_USERMEM 0x0008#define BMF_KMSECTION 0x0010#define BMF_NOTSYSMEM 0x0020#define BMF_WINDOW_BLT 0x0040#define BMF_UMPDMEM 0x0080#if (NTDDI_VERSION >= NTDDI_WIN7)#define BMF_TEMP_ALPHA 0x0100#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */#if (NTDDI_VERSION >= NTDDI_WIN8)#define BMF_ACC_NOTIFY 0x8000#define BMF_RMT_ENTER 0x4000#endif /* (NTDDI_VERSION >= NTDDI_WIN8) */
#if (NTDDI_VERSION >= NTDDI_WIN8)#define BMF_RESERVED 0x3E00#elif (NTDDI_VERSION >= NTDDI_WIN7)#define BMF_RESERVED 0xFE00#else#define BMF_RESERVED 0xFF00#endif
typedef struct _SURFOBJ { DHSURF dhsurf; HSURF hsurf; DHPDEV dhpdev; HDEV hdev; SIZEL sizlBitmap; ULONG cjBits; PVOID pvBits; PVOID pvScan0; LONG lDelta; ULONG iUniq; ULONG iBitmapFormat; USHORT iType; USHORT fjBitmap;} SURFOBJ;
typedef struct _TYPE1_FONT { HANDLE hPFM; HANDLE hPFB; ULONG ulIdentifier;} TYPE1_FONT;
typedef struct _WNDOBJ { CLIPOBJ coClient; PVOID pvConsumer; RECTL rclClient; SURFOBJ *psoOwner;} WNDOBJ, *PWNDOBJ;
typedef struct _XFORML { FLOATL eM11; FLOATL eM12; FLOATL eM21; FLOATL eM22; FLOATL eDx; FLOATL eDy;} XFORML, *PXFORML;
typedef struct _XFORMOBJ { ULONG ulReserved;} XFORMOBJ;
/* XLATEOBJ.flXlate constants */#define XO_TRIVIAL 0x00000001#define XO_TABLE 0x00000002#define XO_TO_MONO 0x00000004#define XO_FROM_CMYK 0x00000008#define XO_DEVICE_ICM 0x00000010#define XO_HOST_ICM 0x00000020
typedef struct _XLATEOBJ { ULONG iUniq; FLONG flXlate; USHORT iSrcType; USHORT iDstType; ULONG cEntries; ULONG *pulXlate;} XLATEOBJ;
/* WNDOBJCHANGEPROC.fl constants */#define WOC_RGN_CLIENT_DELTA 0x00000001#define WOC_RGN_CLIENT 0x00000002#define WOC_RGN_SURFACE_DELTA 0x00000004#define WOC_RGN_SURFACE 0x00000008#define WOC_CHANGED 0x00000010#define WOC_DELETE 0x00000020#define WOC_DRAWN 0x00000040#define WOC_SPRITE_OVERLAP 0x00000080#define WOC_SPRITE_NO_OVERLAP 0x00000100#if (NTDDI_VERSION >= NTDDI_VISTA)#define WOC_RGN_SPRITE 0x00000200#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
typedef VOID (APIENTRY CALLBACK *WNDOBJCHANGEPROC)( _In_ WNDOBJ *pwo, _In_ FLONG fl);
ENGAPIHANDLEAPIENTRYBRUSHOBJ_hGetColorTransform( _In_ BRUSHOBJ *pbo);
_Ret_opt_bytecount_(cj)ENGAPIPVOIDAPIENTRYBRUSHOBJ_pvAllocRbrush( _In_ BRUSHOBJ *pbo, _In_ ULONG cj);
ENGAPIPVOIDAPIENTRYBRUSHOBJ_pvGetRbrush( _In_ BRUSHOBJ *pbo);
ENGAPIULONGAPIENTRYBRUSHOBJ_ulGetBrushColor( _In_ BRUSHOBJ *pbo);
ENGAPIBOOLAPIENTRYCLIPOBJ_bEnum( _In_ CLIPOBJ *pco, _In_ ULONG cj, _Out_bytecap_(cj) ULONG *pul);
/* CLIPOBJ_cEnumStart.iType constants */#define CT_RECTANGLES 0L
/* CLIPOBJ_cEnumStart.iDirection constants */#define CD_RIGHTDOWN 0x00000000#define CD_LEFTDOWN 0x00000001#define CD_LEFTWARDS 0x00000001#define CD_RIGHTUP 0x00000002#define CD_UPWARDS 0x00000002#define CD_LEFTUP 0x00000003#define CD_ANY 0x00000004
ENGAPIULONGAPIENTRYCLIPOBJ_cEnumStart( _Inout_ CLIPOBJ *pco, _In_ BOOL bAll, _In_ ULONG iType, _In_ ULONG iDirection, _In_ ULONG cLimit);
ENGAPIPATHOBJ*APIENTRYCLIPOBJ_ppoGetPath( _In_ CLIPOBJ *pco);
#if (NTDDI_VERSION >= NTDDI_VISTA)ENGAPIHANDLEAPIENTRYCLIPOBJ_GetRgn( _In_ CLIPOBJ* pco);#endif
ENGAPIVOIDAPIENTRYEngAcquireSemaphore( _Inout_ HSEMAPHORE hsem);
#define FL_ZERO_MEMORY 0x00000001#define FL_NONPAGED_MEMORY 0x00000002#if (NTDDI_VERSION >= NTDDI_WIN7)#define FL_NON_SESSION 0x00000004#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
#ifdef USERMODE_DRIVER
#define EngAllocMem(fl, cj, tag) ((PVOID)GlobalAlloc(((fl) & FL_ZERO_MEMORY) ? GPTR : GMEM_FIXED, cj))#define EngAllocPrivateUserMem(psl, cj, tag) ((PVOID)GlobalAlloc(GMEM_FIXED, cj))#define EngAllocUserMem(cj, tag) ((PVOID)GlobalAlloc(GMEM_FIXED, cj))
#else /* !USERMODE_DRIVER */
_Must_inspect_result__When_(fl & FL_ZERO_MEMORY, _Ret_opt_bytecount_(cjMemSize))_When_(!(fl & FL_ZERO_MEMORY), _Ret_opt_bytecap_(cjMemSize))__drv_allocatesMem(Mem)ENGAPIPVOIDAPIENTRYEngAllocMem( _In_ ULONG fl, _In_ ULONG cjMemSize, _In_ ULONG ulTag);
_Must_inspect_result__Ret_opt_bytecount_(cjMemSize)__drv_allocatesMem(PrivateUserMem)ENGAPIPVOIDAPIENTRYEngAllocPrivateUserMem( _In_ PDD_SURFACE_LOCAL psl, _In_ SIZE_T cjMemSize, _In_ ULONG ulTag);
_Must_inspect_result__Ret_opt_bytecount_(cjMemSize)__drv_allocatesMem(UserMem)ENGAPIPVOIDAPIENTRYEngAllocUserMem( _In_ SIZE_T cjMemSize, _In_ ULONG ulTag);
#endif /* !USERMODE_DRIVER */
ENGAPIBOOLAPIENTRYEngAlphaBlend( _Inout_ SURFOBJ *psoDest, _In_ SURFOBJ *psoSrc, _In_opt_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_ RECTL *prclDest, _In_ RECTL *prclSrc, _In_ BLENDOBJ *pBlendObj);
/* EngAssociateSurface.flHooks constants */#define HOOK_BITBLT 0x00000001#define HOOK_STRETCHBLT 0x00000002#define HOOK_PLGBLT 0x00000004#define HOOK_TEXTOUT 0x00000008#define HOOK_PAINT 0x00000010#define HOOK_STROKEPATH 0x00000020#define HOOK_FILLPATH 0x00000040#define HOOK_STROKEANDFILLPATH 0x00000080#define HOOK_LINETO 0x00000100#define HOOK_COPYBITS 0x00000400#define HOOK_MOVEPANNING 0x00000800#define HOOK_SYNCHRONIZE 0x00001000#define HOOK_STRETCHBLTROP 0x00002000#define HOOK_SYNCHRONIZEACCESS 0x00004000#define HOOK_TRANSPARENTBLT 0x00008000#define HOOK_ALPHABLEND 0x00010000#define HOOK_GRADIENTFILL 0x00020000#if (NTDDI_VERSION >= NTDDI_VISTA)#define HOOK_FLAGS 0x0003b5ef#else#define HOOK_FLAGS 0x0003b5ff#endif
ENGAPIBOOLAPIENTRYEngAssociateSurface( _In_ HSURF hsurf, _In_ HDEV hdev, _In_ FLONG flHooks);
ENGAPIBOOLAPIENTRYEngBitBlt( _Inout_ SURFOBJ *psoTrg, _In_opt_ SURFOBJ *psoSrc, _In_opt_ SURFOBJ *psoMask, _In_opt_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_ RECTL *prclTrg, _In_opt_ POINTL *pptlSrc, _In_opt_ POINTL *pptlMask, _In_opt_ BRUSHOBJ *pbo, _In_opt_ POINTL *pptlBrush, _In_ ROP4 rop4);
ENGAPIBOOLAPIENTRYEngCheckAbort( _In_ SURFOBJ *pso);
ENGAPIVOIDAPIENTRYEngClearEvent( _In_ PEVENT pEvent);
_Success_(return != 0)ENGAPIFD_GLYPHSET*APIENTRYEngComputeGlyphSet( _In_ INT nCodePage, _In_ INT nFirstChar, _In_ INT cChars);
/* EngControlSprites.fl constants */#define ECS_TEARDOWN 0x00000001#define ECS_REDRAW 0x00000002
ENGAPIBOOLAPIENTRYEngControlSprites( _Inout_ WNDOBJ *pwo, _In_ FLONG fl);
ENGAPIBOOLAPIENTRYEngCopyBits( _In_ SURFOBJ *psoDest, _In_ SURFOBJ *psoSrc, _In_opt_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_ __in_data_source(USER_MODE) RECTL *prclDest, _In_ __in_data_source(USER_MODE) POINTL *pptlSrc);
ENGAPIHBITMAPAPIENTRYEngCreateBitmap( _In_ SIZEL sizl, _In_ LONG lWidth, _In_ ULONG iFormat, _In_ FLONG fl, _In_opt_ PVOID pvBits);
ENGAPICLIPOBJ*APIENTRYEngCreateClip(VOID);
_Must_inspect_result_ENGAPIHBITMAPAPIENTRYEngCreateDeviceBitmap( _In_ DHSURF dhsurf, _In_ SIZEL sizl, _In_ ULONG iFormatCompat);
_Must_inspect_result_ENGAPIHSURFAPIENTRYEngCreateDeviceSurface( _In_ DHSURF dhsurf, _In_ SIZEL sizl, _In_ ULONG iFormatCompat);
_Must_inspect_result_ENGAPIHDRVOBJAPIENTRYEngCreateDriverObj( _In_ PVOID pvObj, _In_opt_ FREEOBJPROC pFreeObjProc, _In_ HDEV hdev);
_Must_inspect_result__Success_(return != FALSE)ENGAPIBOOLAPIENTRYEngCreateEvent( _Outptr_ PEVENT *ppEvent);
/* EngCreatePalette.iMode constants */#define PAL_INDEXED 0x00000001#define PAL_BITFIELDS 0x00000002#define PAL_RGB 0x00000004#define PAL_BGR 0x00000008#define PAL_CMYK 0x00000010
_Must_inspect_result_ENGAPIHPALETTEAPIENTRYEngCreatePalette( _In_ ULONG iMode, _In_ ULONG cColors, _In_ ULONG *pulColors, _In_ FLONG flRed, _In_ FLONG flGreen, _In_ FLONG flBlue);
ENGAPIPATHOBJ*APIENTRYEngCreatePath(VOID);
__drv_allocatesMem(Mem)_Post_writable_byte_size_(sizeof(ERESOURCE))ENGAPIHSEMAPHOREAPIENTRYEngCreateSemaphore( VOID);
/* EngCreateWnd.fl constants */#define WO_RGN_CLIENT_DELTA 0x00000001#define WO_RGN_CLIENT 0x00000002#define WO_RGN_SURFACE_DELTA 0x00000004#define WO_RGN_SURFACE 0x00000008#define WO_RGN_UPDATE_ALL 0x00000010#define WO_RGN_WINDOW 0x00000020#define WO_DRAW_NOTIFY 0x00000040#define WO_SPRITE_NOTIFY 0x00000080#define WO_RGN_DESKTOP_COORD 0x00000100#if (NTDDI_VERSION >= NTDDI_VISTA)#define WO_RGN_SPRITE 0x00000200#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
_Must_inspect_result_ENGAPIWNDOBJ*APIENTRYEngCreateWnd( _In_ SURFOBJ *pso, _In_ HWND hwnd, _In_ WNDOBJCHANGEPROC pfn, _In_ FLONG fl, _In_ INT iPixelFormat);
_Analysis_noreturn_ENGAPIVOIDAPIENTRYEngDebugBreak(VOID);
ENGAPIVOIDAPIENTRYEngDebugPrint( _In_z_ PCHAR StandardPrefix, _In_z_ PCHAR DebugMessage, _In_ va_list ap);
ENGAPIVOIDAPIENTRYEngDeleteClip( _In_ _Post_ptr_invalid_ CLIPOBJ *pco);
ENGAPIBOOLAPIENTRYEngDeleteDriverObj( _In_ _Post_ptr_invalid_ HDRVOBJ hdo, _In_ BOOL bCallBack, _In_ BOOL bLocked);
ENGAPIBOOLAPIENTRYEngDeleteEvent( _In_ _Post_ptr_invalid_ PEVENT pEvent);
ENGAPIBOOLAPIENTRYEngDeleteFile( _In_ LPWSTR pwszFileName);
ENGAPIBOOLAPIENTRYEngDeletePalette( _In_ _Post_ptr_invalid_ HPALETTE hpal);
ENGAPIVOIDAPIENTRYEngDeletePath( _In_ _Post_ptr_invalid_ PATHOBJ *ppo);
ENGAPIVOIDAPIENTRYEngDeleteSafeSemaphore( _Inout_ _Post_invalid_ ENGSAFESEMAPHORE *pssem);
_Requires_lock_not_held_(*hsem)ENGAPIVOIDAPIENTRYEngDeleteSemaphore( _Inout_ __drv_freesMem(Mem) HSEMAPHORE hsem);
ENGAPIBOOLAPIENTRYEngDeleteSurface( _In_ _Post_ptr_invalid_ HSURF hsurf);
ENGAPIVOIDAPIENTRYEngDeleteWnd( _In_ _Post_ptr_invalid_ WNDOBJ *pwo);
_Success_(return==0)ENGAPIDWORDAPIENTRYEngDeviceIoControl( _In_ HANDLE hDevice, _In_ DWORD dwIoControlCode, _In_reads_bytes_opt_(cjInBufferSize) LPVOID lpInBuffer, _In_ DWORD cjInBufferSize, _Out_writes_bytes_opt_(cjOutBufferSize) LPVOID lpOutBuffer, _In_ DWORD cjOutBufferSize, _Out_ LPDWORD lpBytesReturned);
#define DM_DEFAULT 0x00000001#define DM_MONOCHROME 0x00000002
ENGAPIULONGAPIENTRYEngDitherColor( _In_ HDEV hdev, _In_ ULONG iMode, _In_ ULONG rgb, _When_(iMode == DM_DEFAULT, _Out_writes_bytes_(16*8)) _When_(iMode == DM_MONOCHROME, _Out_writes_bytes_(8)) ULONG *pul);
/* Obsolete in Windows 2000 and later */ENGAPIHRESULTAPIENTRYEngDxIoctl( _In_ ULONG ulIoctl, _Inout_ PVOID pBuffer, _In_ ULONG ulBufferSize);
#ifdef USERMODE_DRIVER#define EngEnumForms EnumForms#else /* !USERMODE_DRIVER */ENGAPIBOOLAPIENTRYEngEnumForms( _In_ HANDLE hPrinter, _In_ DWORD Level, _Out_writes_bytes_opt_(cbBuf) LPBYTE pForm, _In_ DWORD cbBuf, _Out_ LPDWORD pcbNeeded, _Out_ LPDWORD pcReturned);#endif /* !USERMODE_DRIVER */
ENGAPIBOOLAPIENTRYEngEraseSurface( _In_ SURFOBJ *pso, _In_ RECTL *prcl, _In_ ULONG iColor);
ENGAPIBOOLAPIENTRYEngFillPath( _Inout_ SURFOBJ *pso, _In_ PATHOBJ *ppo, _In_ CLIPOBJ *pco, _In_ BRUSHOBJ *pbo, _In_ POINTL *pptlBrushOrg, _In_ MIX mix, _In_ FLONG flOptions);
#ifdef USERMODE_DRIVER#define EngFindImageProcAddress(h, procname) ((PVOID) GetProcAddress(h, procname))#else /* !USERMODE_DRIVER */ENGAPIPVOIDAPIENTRYEngFindImageProcAddress( _In_ HANDLE hModule, _In_ LPSTR lpProcName);#endif /* !USERMODE_DRIVER */
ENGAPIPVOIDAPIENTRYEngFindResource( _In_ HANDLE h, _In_ INT iName, _In_ INT iType, _Out_ PULONG pulSize);
_Must_inspect_result__Ret_opt_bytecap_(cjSize)ENGAPIPVOIDAPIENTRYEngFntCacheAlloc( _In_ ULONG ulFastCheckSum, _In_ ULONG cjSize);
/* EngFntCacheFault.iFaultMode constants */#define ENG_FNT_CACHE_READ_FAULT 0x00000001#define ENG_FNT_CACHE_WRITE_FAULT 0x00000002
ENGAPIVOIDAPIENTRYEngFntCacheFault( _In_ ULONG ulFastCheckSum, _In_ ULONG iFaultMode);
ENGAPIPVOIDAPIENTRYEngFntCacheLookUp( _In_ ULONG FastCheckSum, _Out_ ULONG *pulSize);
#ifdef USERMODE_DRIVER
#define EngFreeMem(p) GlobalFree((HGLOBAL) (p))#define EngFreePrivateUserMem( psl, p) GlobalFree((HGLOBAL) (p))#define EngFreeUserMem(p) GlobalFree((HGLOBAL) (p))
#else /* !USERMODE_DRIVER */
ENGAPIVOIDAPIENTRYEngFreeMem( _Pre_notnull_ __drv_freesMem(Mem) PVOID pv);
ENGAPIVOIDAPIENTRYEngFreePrivateUserMem( _In_ PDD_SURFACE_LOCAL psl, _Pre_notnull_ __drv_freesMem(PrivateUserMem) PVOID pv);
ENGAPIVOIDAPIENTRYEngFreeUserMem( _Pre_notnull_ __drv_freesMem(UserMem) PVOID pv);
#endif /* !USERMODE_DRIVER */
ENGAPIVOIDAPIENTRYEngFreeModule( _In_ _Post_invalid_ HANDLE h);
ENGAPIVOIDAPIENTRYEngGetCurrentCodePage( _Out_ PUSHORT OemCodePage, _Out_ PUSHORT AnsiCodePage);
ENGAPIHANDLEAPIENTRYEngGetCurrentProcessId(VOID);
ENGAPIHANDLEAPIENTRYEngGetCurrentThreadId(VOID);
_Must_inspect_result_ _Ret_z_ENGAPILPWSTRAPIENTRYEngGetDriverName( _In_ HDEV hdev);
ENGAPIBOOLAPIENTRYEngGetFileChangeTime( _In_ HANDLE h, _Out_ LARGE_INTEGER *pChangeTime);
ENGAPIBOOLAPIENTRYEngGetFilePath( _In_ HANDLE h, _Out_ WCHAR (*pDest)[MAX_PATH+1]);
#ifdef USERMODE_DRIVER#define EngGetForm GetForm#define EngGetLastError GetLastError#define EngGetPrinter GetPrinter#define EngGetPrinterData GetPrinterData#else /* !USERMODE_DRIVER */ENGAPIBOOLAPIENTRYEngGetForm( _In_ HANDLE hPrinter, _In_ LPWSTR pFormName, _In_ DWORD Level, _In_reads_bytes_opt_(cbBuf) LPBYTE pForm, _In_ DWORD cbBuf, _Out_ LPDWORD pcbNeeded);
ENGAPIULONGAPIENTRYEngGetLastError(VOID);
ENGAPIBOOLAPIENTRYEngGetPrinter( _In_ HANDLE hPrinter, _In_ DWORD dwLevel, _Out_writes_bytes_opt_(cbBuf) LPBYTE pPrinter, _In_ DWORD cbBuf, _Out_ LPDWORD pcbNeeded);
ENGAPIDWORDAPIENTRYEngGetPrinterData( _In_ HANDLE hPrinter, _In_ LPWSTR pValueName, _Out_opt_ LPDWORD pType, _Out_writes_bytes_opt_(cjSize) LPBYTE pData, _In_ DWORD cjSize, _Out_ LPDWORD pcjNeeded);#endif /* !USERMODE_DRIVER */
ENGAPILPWSTRAPIENTRYEngGetPrinterDataFileName( _In_ HDEV hdev);
#ifdef USERMODE_DRIVER#define EngGetPrinterDriver GetPrinterDriver#else /* !USERMODE_DRIVER */ENGAPIBOOLAPIENTRYEngGetPrinterDriver( _In_ HANDLE hPrinter, _In_opt_ LPWSTR pEnvironment, _In_ DWORD dwLevel, _Out_writes_bytes_opt_(cjBufSize) BYTE *lpbDrvInfo, _In_ DWORD cjBufSize, _Out_ DWORD *pcjNeeded);#endif /* !USERMODE_DRIVER */
ENGAPIHANDLEAPIENTRYEngGetProcessHandle(VOID);
ENGAPIBOOLAPIENTRYEngGetType1FontList( _In_ HDEV hdev, _Out_writes_bytes_opt_(cjType1Buffer) TYPE1_FONT *pType1Buffer, _In_ ULONG cjType1Buffer, _Out_ PULONG pulLocalFonts, _Out_ PULONG pulRemoteFonts, _Out_ LARGE_INTEGER *pLastModified);
ENGAPIBOOLAPIENTRYEngGradientFill( _Inout_ SURFOBJ *psoDest, _In_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_ TRIVERTEX *pVertex, _In_ ULONG nVertex, _In_ PVOID pMesh, _In_ ULONG nMesh, _In_ RECTL *prclExtents, _In_ POINTL *pptlDitherOrg, _In_ ULONG ulMode);
/* EngHangNotification return values */#define EHN_RESTORED 0x00000000#define EHN_ERROR 0x00000001
ENGAPIULONGAPIENTRYEngHangNotification( _In_ HDEV hDev, _Reserved_ PVOID Reserved);
ENGAPIBOOLAPIENTRYEngInitializeSafeSemaphore( _Out_ ENGSAFESEMAPHORE *pssem);
ENGAPIBOOLAPIENTRYEngIsSemaphoreOwned( _In_ HSEMAPHORE hsem);
ENGAPIBOOLAPIENTRYEngIsSemaphoreOwnedByCurrentThread( _In_ HSEMAPHORE hsem);
ENGAPIBOOLAPIENTRYEngLineTo( _Inout_ SURFOBJ *pso, _In_ CLIPOBJ *pco, _In_ BRUSHOBJ *pbo, _In_ LONG x1, _In_ LONG y1, _In_ LONG x2, _In_ LONG y2, _In_opt_ RECTL *prclBounds, _In_ MIX mix);
#ifdef USERMODE_DRIVER#define EngLoadImage(pwszDriver) ((HANDLE)LoadLibraryW(pwszDriver))#else /* !USERMODE_DRIVER */ENGAPIHANDLEAPIENTRYEngLoadImage( _In_ LPWSTR pwszDriver);#endif /* !USERMODE_DRIVER */
ENGAPIHANDLEAPIENTRYEngLoadModule( _In_ LPWSTR pwsz);
ENGAPIHANDLEAPIENTRYEngLoadModuleForWrite( _In_ LPWSTR pwsz, _In_ ULONG cjSizeOfModule);
ENGAPIPDD_SURFACE_LOCALAPIENTRYEngLockDirectDrawSurface( _In_ HANDLE hSurface);
ENGAPIDRIVEROBJ*APIENTRYEngLockDriverObj( _In_ HDRVOBJ hdo);
ENGAPISURFOBJ*APIENTRYEngLockSurface( _In_ HSURF hsurf);
ENGAPIBOOLAPIENTRYEngLpkInstalled(VOID);
ENGAPIPEVENTAPIENTRYEngMapEvent( _In_ HDEV hDev, _In_ HANDLE hUserObject, _Reserved_ PVOID Reserved1, _Reserved_ PVOID Reserved2, _Reserved_ PVOID Reserved3);
_Success_(return != 0)_When_(cjSize != 0, _At_(return, _Out_writes_bytes_(cjSize)))ENGAPIPVOIDAPIENTRYEngMapFile( _In_ LPWSTR pwsz, _In_ ULONG cjSize, _Out_ ULONG_PTR *piFile);
__drv_preferredFunction("EngMapFontFileFD", "Obsolete")_Check_return__Success_(return!=FALSE)ENGAPIBOOLAPIENTRYEngMapFontFile( _In_ ULONG_PTR iFile, _Outptr_result_bytebuffer_(*pcjBuf) PULONG *ppjBuf, _Out_ ULONG *pcjBuf);
_Check_return__Success_(return!=FALSE)ENGAPIBOOLAPIENTRYEngMapFontFileFD( _In_ ULONG_PTR iFile, _Outptr_result_bytebuffer_(*pcjBuf) PULONG *ppjBuf, _Out_ ULONG *pcjBuf);
_Check_return__Success_(return!=NULL)_Post_writable_byte_size_(*pulSize)ENGAPIPVOIDAPIENTRYEngMapModule( _In_ HANDLE h, _Out_ PULONG pulSize);
ENGAPIBOOLAPIENTRYEngMarkBandingSurface( _In_ HSURF hsurf);
/* EngModifySurface.flSurface constants */#define MS_NOTSYSTEMMEMORY 0x00000001#define MS_SHAREDACCESS 0x00000002#define MS_CDDDEVICEBITMAP 0x00000004
ENGAPIBOOLAPIENTRYEngModifySurface( _In_ HSURF hsurf, _In_ HDEV hdev, _In_ FLONG flHooks, _In_ FLONG flSurface, _In_ DHSURF dhsurf, _In_ PVOID pvScan0, _In_ LONG lDelta, _Reserved_ PVOID pvReserved);
ENGAPIVOIDAPIENTRYEngMovePointer( _In_ SURFOBJ *pso, _In_ LONG x, _In_ LONG y, _In_ RECTL *prcl);
#ifdef USERMODE_DRIVER#define EngMulDiv MulDiv#else /* !USERMODE_DRIVER */ENGAPIINTAPIENTRYEngMulDiv( _In_ INT a, _In_ INT b, _In_ INT c);#endif /* !USERMODE_DRIVER */
ENGAPIVOIDAPIENTRYEngMultiByteToUnicodeN( _Out_writes_bytes_to_(MaxBytesInUnicodeString, *BytesInUnicodeString) LPWSTR UnicodeString, _In_ ULONG MaxBytesInUnicodeString, _Out_opt_ PULONG BytesInUnicodeString, _In_reads_bytes_(BytesInMultiByteString) PCHAR MultiByteString, _In_ ULONG BytesInMultiByteString);
ENGAPIINTAPIENTRYEngMultiByteToWideChar( _In_ UINT CodePage, _Out_writes_bytes_opt_(cjWideCharString) LPWSTR WideCharString, _In_ INT cjWideCharString, _In_reads_bytes_opt_(cjMultiByteString) LPSTR MultiByteString, _In_ INT cjMultiByteString);
ENGAPIBOOLAPIENTRYEngPaint( _In_ SURFOBJ *pso, _In_ CLIPOBJ *pco, _In_ BRUSHOBJ *pbo, _In_ POINTL *pptlBrushOrg, _In_ __in_data_source(USER_MODE) MIX mix);
ENGAPIBOOLAPIENTRYEngPlgBlt( _In_ SURFOBJ *psoTrg, _In_ SURFOBJ *psoSrc, _In_opt_ SURFOBJ *psoMsk, _In_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_ COLORADJUSTMENT *pca, _In_ POINTL *pptlBrushOrg, _In_ POINTFIX *pptfx, _In_ RECTL *prcl, _When_(psoMsk, _In_) POINTL *pptl, _In_ __in_data_source(USER_MODE) ULONG iMode);
ENGAPIVOIDAPIENTRYEngProbeForRead( _In_reads_bytes_(Length) PVOID Address, _In_ SIZE_T Length, _In_ ULONG Alignment);
ENGAPIVOIDAPIENTRYEngProbeForReadAndWrite( _Inout_updates_bytes_(Length) PVOID Address, _In_ SIZE_T Length, _In_ ULONG Alignment);
typedef enum _ENG_DEVICE_ATTRIBUTE { QDA_RESERVED = 0, QDA_ACCELERATION_LEVEL} ENG_DEVICE_ATTRIBUTE;
ENGAPIBOOLAPIENTRYEngQueryDeviceAttribute( _In_ HDEV hdev, _In_ ENG_DEVICE_ATTRIBUTE devAttr, _In_reads_bytes_(cjInSize) PVOID pvIn, _In_ ULONG cjInSize, _Out_writes_bytes_(cjOutSize) PVOID pvOut, _In_ ULONG cjOutSize);
/* Obsolete in Windows 2000 and later */DECLSPEC_DEPRECATED_DDKBOOL APIENTRYEngQueryEMFInfo( _In_ HDEV hdev, _Out_ EMFINFO *pEMFInfo);
ENGAPILARGE_INTEGERAPIENTRYEngQueryFileTimeStamp( _In_ LPWSTR pwsz);
ENGAPIVOIDAPIENTRYEngQueryLocalTime( _Out_ PENG_TIME_FIELDS ptf);
ENGAPIULONGAPIENTRYEngQueryPalette( _In_ HPALETTE hPal, _Out_ ULONG *piMode, _In_ ULONG cColors, _Out_writes_opt_(cColors) ULONG *pulColors);
ENGAPIVOIDAPIENTRYEngQueryPerformanceCounter( _Out_ LONGLONG *pPerformanceCount);
ENGAPIVOIDAPIENTRYEngQueryPerformanceFrequency( _Out_ LONGLONG *pFrequency);
typedef enum _ENG_SYSTEM_ATTRIBUTE { EngProcessorFeature = 1, EngNumberOfProcessors, EngOptimumAvailableUserMemory, EngOptimumAvailableSystemMemory,} ENG_SYSTEM_ATTRIBUTE;
#define QSA_MMX 0x00000100#define QSA_SSE 0x00002000#define QSA_3DNOW 0x00004000#if (NTDDI_VERSION >= NTDDI_VISTA)#define QSA_SSE1 QSA_SSE#define QSA_SSE2 0x00010000#define QSA_SSE3 0x00080000#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
_Check_return__Success_(return)ENGAPIBOOLAPIENTRYEngQuerySystemAttribute( _In_ ENG_SYSTEM_ATTRIBUTE CapNum, _Out_ PDWORD pCapability);
ENGAPILONGAPIENTRYEngReadStateEvent( _In_ PEVENT pEvent);
_Requires_lock_held_(*hsem)_Releases_lock_(*hsem)_Releases_lock_(_Global_critical_region_)ENGAPIVOIDAPIENTRYEngReleaseSemaphore( _Inout_ HSEMAPHORE hsem);
#if defined(_M_AMD64) && (NTDDI_VERSION >= NTDDI_VISTA)
_Check_return__Success_(return)_Kernel_float_restored__At_(*pBuffer, _Kernel_requires_resource_held_(EngFloatState) _Kernel_releases_resource_(EngFloatState))ENGAPIBOOLAPIENTRYEngRestoreFloatingPointState( _In_reads_(_Inexpressible_(statesize)) PVOID pBuffer){ UNREFERENCED_PARAMETER(pBuffer); return TRUE;}
_Check_return__Success_(((pBuffer != NULL && cjBufferSize != 0) && return == 1) || ((pBuffer == NULL || cjBufferSize == 0) && return > 0))_When_(pBuffer != NULL && cjBufferSize != 0 && return == 1, _Kernel_float_saved_ _At_(*pBuffer, _Post_valid_ _Kernel_acquires_resource_(EngFloatState)))_On_failure_(_Post_satisfies_(return == 0))ENGAPIULONGAPIENTRYEngSaveFloatingPointState( _At_(*pBuffer, _Kernel_requires_resource_not_held_(EngFloatState)) _Out_writes_bytes_opt_(cjBufferSize) PVOID pBuffer, _Inout_ ULONG cjBufferSize){ return ((((pBuffer) == NULL) || ((cjBufferSize) == 0)) ? 8 : TRUE);}
#else /* !(defined(_M_AMD64) && (NTDDI_VERSION >= NTDDI_VISTA)) */
_Check_return__Success_(return)_Kernel_float_restored__At_(*pBuffer, _Kernel_requires_resource_held_(EngFloatState) _Kernel_releases_resource_(EngFloatState))ENGAPIBOOLAPIENTRYEngRestoreFloatingPointState( _In_reads_(_Inexpressible_(statesize)) PVOID pBuffer);
_Check_return__Success_(((pBuffer != NULL && cjBufferSize != 0) && return == 1) || ((pBuffer == NULL || cjBufferSize == 0) && return > 0))_When_(pBuffer != NULL && cjBufferSize != 0 && return == 1, _Kernel_float_saved_ _At_(*pBuffer, _Post_valid_ _Kernel_acquires_resource_(EngFloatState)))_On_failure_(_Post_satisfies_(return == 0))ENGAPIULONGAPIENTRYEngSaveFloatingPointState( _At_(*pBuffer, _Kernel_requires_resource_not_held_(EngFloatState)) _Out_writes_bytes_opt_(cjBufferSize) PVOID pBuffer, _Inout_ ULONG cjBufferSize);
#endif /* defined(_M_AMD64) && (NTDDI_VERSION >= NTDDI_VISTA) */
ENGAPIHANDLEAPIENTRYEngSecureMem( _In_reads_bytes_(cjLength) PVOID Address, _In_ ULONG cjLength);
ENGAPILONGAPIENTRYEngSetEvent( _In_ PEVENT pEvent);
#ifdef USERMODE_DRIVER#define EngSetLastError SetLastError#else /* !USERMODE_DRIVER */ENGAPIVOIDAPIENTRYEngSetLastError( _In_ ULONG iError);#endif /* !USERMODE_DRIVER */
ENGAPIULONGAPIENTRYEngSetPointerShape( _In_ SURFOBJ *pso, _In_opt_ SURFOBJ *psoMask, _In_opt_ SURFOBJ *psoColor, _In_opt_ XLATEOBJ *pxlo, _In_ LONG xHot, _In_ LONG yHot, _In_ LONG x, _In_ LONG y, _In_ RECTL *prcl, _In_ FLONG fl);
__drv_preferredFunction("(see documentation)", "Obsolete, always returns false. ")ENGAPIBOOLAPIENTRYEngSetPointerTag( _In_ HDEV hdev, _In_opt_ SURFOBJ *psoMask, _In_opt_ SURFOBJ *psoColor, _Reserved_ XLATEOBJ *pxlo, _In_ FLONG fl);
#ifdef USERMODE_DRIVER#define EngSetPrinterData SetPrinterData#else /* !USERMODE_DRIVER */ENGAPIDWORDAPIENTRYEngSetPrinterData( _In_ HANDLE hPrinter, _In_ LPWSTR pType, _In_ DWORD dwType, _In_reads_bytes_(cjPrinterData) LPBYTE lpbPrinterData, _In_ DWORD cjPrinterData);#endif /* !USERMODE_DRIVER */
typedef int (__cdecl /*CDECL*/ *SORTCOMP)(const void *pv1, const void *pv2);
ENGAPIVOIDAPIENTRYEngSort( _Inout_updates_bytes_(c * cjElem) PBYTE pjBuf, _In_ ULONG c, _In_ ULONG cjElem, _In_ SORTCOMP pfnComp);
ENGAPIBOOLAPIENTRYEngStretchBlt( _In_ SURFOBJ *psoDest, _In_ SURFOBJ *psoSrc, _In_opt_ SURFOBJ *psoMask, _In_opt_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_opt_ COLORADJUSTMENT *pca, _In_ POINTL *pptlHTOrg, _In_ RECTL *prclDest, _In_ RECTL *prclSrc, _When_(psoMask, _In_) POINTL *pptlMask, _In_ ULONG iMode);
ENGAPIBOOLAPIENTRYEngStretchBltROP( _In_ SURFOBJ *psoDest, _In_ SURFOBJ *psoSrc, _In_opt_ SURFOBJ *psoMask, _In_opt_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_opt_ COLORADJUSTMENT *pca, _In_ POINTL *pptlHTOrg, _In_ RECTL *prclDest, _In_ RECTL *prclSrc, _When_(psoMask, _In_) POINTL *pptlMask, _In_ ULONG iMode, _In_opt_ BRUSHOBJ *pbo, _In_ DWORD rop4);
ENGAPIBOOLAPIENTRYEngStrokeAndFillPath( _Inout_ SURFOBJ *pso, _In_ PATHOBJ *ppo, _In_ CLIPOBJ *pco, _In_ XFORMOBJ *pxo, _In_ BRUSHOBJ *pboStroke, _In_ LINEATTRS *plineattrs, _In_ BRUSHOBJ *pboFill, _In_ POINTL *pptlBrushOrg, _In_ __in_data_source(USER_MODE) MIX mixFill, _In_ __in_data_source(USER_MODE) FLONG flOptions);
ENGAPIBOOLAPIENTRYEngStrokePath( _In_ SURFOBJ *pso, _In_ PATHOBJ *ppo, _In_ CLIPOBJ *pco, _In_ XFORMOBJ *pxo, _In_ BRUSHOBJ *pbo, _In_ POINTL *pptlBrushOrg, _In_ LINEATTRS *plineattrs, _In_ MIX mix);
ENGAPIBOOLAPIENTRYEngTextOut( _In_ SURFOBJ *pso, _In_ STROBJ *pstro, _In_ FONTOBJ *pfo, _In_ CLIPOBJ *pco, _Null_ RECTL *prclExtra, _In_opt_ RECTL *prclOpaque, _In_ BRUSHOBJ *pboFore, _In_ BRUSHOBJ *pboOpaque, _In_ POINTL *pptlOrg, _In_ MIX mix);
ENGAPIBOOLAPIENTRYEngTransparentBlt( _In_ SURFOBJ *psoDst, _In_ SURFOBJ *psoSrc, _In_opt_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_ RECTL *prclDst, _In_ RECTL *prclSrc, _In_ ULONG iTransColor, _In_ ULONG ulReserved);
ENGAPIVOIDAPIENTRYEngUnicodeToMultiByteN( _Out_writes_bytes_to_(cjMultiByteBuf, *pcjMultiByteString) PCHAR pchMultiByteString, _In_ ULONG cjMultiByteBuf, _Out_opt_ PULONG pcjMultiByteString, _In_reads_bytes_(cjUnicodeString) PWSTR pwszUnicodeString, _In_ ULONG cjUnicodeString);
#ifdef USERMODE_DRIVER#define EngUnloadImage(h) FreeLibrary((HMODULE) (h))#else /* !USERMODE_DRIVER */ENGAPIVOIDAPIENTRYEngUnloadImage( _In_ HANDLE hModule);#endif /* !USERMODE_DRIVER */
ENGAPIBOOLAPIENTRYEngUnlockDirectDrawSurface( _In_ PDD_SURFACE_LOCAL pSurface);
ENGAPIBOOLAPIENTRYEngUnlockDriverObj( _In_ _Post_ptr_invalid_ HDRVOBJ hdo);
ENGAPIVOIDAPIENTRYEngUnlockSurface( _In_ _Post_ptr_invalid_ SURFOBJ *pso);
ENGAPIBOOLAPIENTRYEngUnmapEvent( _In_ PEVENT pEvent);
ENGAPIBOOLAPIENTRYEngUnmapFile( _In_ ULONG_PTR iFile);
__drv_preferredFunction("EngUnmapFontFileFD", "Obsolete")ENGAPIVOIDAPIENTRYEngUnmapFontFile( _In_ ULONG_PTR iFile);
ENGAPIVOIDAPIENTRYEngUnmapFontFileFD( _In_ ULONG_PTR iFile);
ENGAPIVOIDAPIENTRYEngUnsecureMem( _In_ HANDLE hSecure);
ENGAPIBOOLAPIENTRYEngWaitForSingleObject( _In_ PEVENT pEvent, _In_opt_ PLARGE_INTEGER pTimeOut);
ENGAPIINTAPIENTRYEngWideCharToMultiByte( _In_ UINT CodePage, _In_reads_bytes_opt_(cjWideCharString) LPWSTR pwszWideCharString, _In_ INT cjWideCharString, _Out_z_bytecap_(cjMultiByteString) LPSTR pszMultiByteString, _In_ INT cjMultiByteString);
#ifdef USERMODE_DRIVER#define EngWritePrinter WritePrinter#else /* !USERMODE_DRIVER */ENGAPIBOOLAPIENTRYEngWritePrinter( _In_ HANDLE hPrinter, _In_reads_bytes_(cjBuf) LPVOID pvBuf, _In_ DWORD cjBuf, _Out_ LPDWORD pcWritten);#endif /* !USERMODE_DRIVER */
#if defined(_X86_) && !defined(USERMODE_DRIVER)ENGAPIVOIDAPIENTRYFLOATOBJ_Add( _Inout_ PFLOATOBJ pf, _In_ PFLOATOBJ pf1);
ENGAPIVOIDAPIENTRYFLOATOBJ_AddFloat( _Inout_ PFLOATOBJ pf, _In_ FLOATL f);
ENGAPIVOIDAPIENTRYFLOATOBJ_AddLong( _Inout_ PFLOATOBJ pf, _In_ LONG l);
ENGAPIVOIDAPIENTRYFLOATOBJ_Div( _Inout_ PFLOATOBJ pf, _In_ PFLOATOBJ pf1);
ENGAPIVOIDAPIENTRYFLOATOBJ_DivFloat( _Inout_ PFLOATOBJ pf, _In_ FLOATL f);
ENGAPIVOIDAPIENTRYFLOATOBJ_DivLong( _Inout_ PFLOATOBJ pf, _In_ LONG l);
ENGAPIBOOLAPIENTRYFLOATOBJ_Equal( _In_ PFLOATOBJ pf, _In_ PFLOATOBJ pf1);
ENGAPIBOOLAPIENTRYFLOATOBJ_EqualLong( _In_ PFLOATOBJ pf, _In_ LONG l);
ENGAPILONGAPIENTRYFLOATOBJ_GetFloat( _In_ PFLOATOBJ pf);
ENGAPILONGAPIENTRYFLOATOBJ_GetLong( _In_ PFLOATOBJ pf);
ENGAPIBOOLAPIENTRYFLOATOBJ_GreaterThan( _In_ PFLOATOBJ pf, _In_ PFLOATOBJ pf1);
ENGAPIBOOLAPIENTRYFLOATOBJ_GreaterThanLong( _In_ PFLOATOBJ pf, _In_ LONG l);
ENGAPIBOOLAPIENTRYFLOATOBJ_LessThan( _In_ PFLOATOBJ pf, _In_ PFLOATOBJ pf1);
ENGAPIBOOLAPIENTRYFLOATOBJ_LessThanLong( _In_ PFLOATOBJ pf, _In_ LONG l);
ENGAPIVOIDAPIENTRYFLOATOBJ_Mul( _Inout_ PFLOATOBJ pf, _In_ PFLOATOBJ pf1);
ENGAPIVOIDAPIENTRYFLOATOBJ_MulFloat( _Inout_ PFLOATOBJ pf, _In_ FLOATL f);
ENGAPIVOIDAPIENTRYFLOATOBJ_MulLong( _Inout_ PFLOATOBJ pf, _In_ LONG l);
ENGAPIVOIDAPIENTRYFLOATOBJ_Neg( _Inout_ PFLOATOBJ pf);
ENGAPIVOIDAPIENTRYFLOATOBJ_SetFloat( _Out_ PFLOATOBJ pf, _In_ FLOATL f);
ENGAPIVOIDAPIENTRYFLOATOBJ_SetLong( _Out_ PFLOATOBJ pf, _In_ LONG l);
ENGAPIVOIDAPIENTRYFLOATOBJ_Sub( _Inout_ PFLOATOBJ pf, _In_ PFLOATOBJ pf1);
ENGAPIVOIDAPIENTRYFLOATOBJ_SubFloat( _Inout_ PFLOATOBJ pf, _In_ FLOATL f);
ENGAPIVOIDAPIENTRYFLOATOBJ_SubLong( _Inout_ PFLOATOBJ pf, _In_ LONG l);
#else
#define FLOATOBJ_SetFloat(pf, f) {*(pf) = (f);}#define FLOATOBJ_SetLong(pf, l) {*(pf) = (FLOAT)(l);}#define FLOATOBJ_GetFloat(pf) (*(PULONG)(pf))#define FLOATOBJ_GetLong(pf) ((LONG)*(pf))#define FLOATOBJ_Add(pf, pf1) {*(pf) += *(pf1);}#define FLOATOBJ_AddFloat(pf, f) {*(pf) += (f);}#define FLOATOBJ_AddLong(pf, l) {*(pf) += (l);}#define FLOATOBJ_Sub(pf, pf1) {*(pf) -= *(pf1);}#define FLOATOBJ_SubFloat(pf, f) {*(pf) -= (f);}#define FLOATOBJ_SubLong(pf, l) {*(pf) -= (l);}#define FLOATOBJ_Mul(pf, pf1) {*(pf) *= *(pf1);}#define FLOATOBJ_MulFloat(pf, f) {*(pf) *= (f);}#define FLOATOBJ_MulLong(pf, l) {*(pf) *= (l);}#define FLOATOBJ_Div(pf, pf1) {*(pf) /= *(pf1);}#define FLOATOBJ_DivFloat(pf, f) {*(pf) /= (f);}#define FLOATOBJ_DivLong(pf, l) {*(pf) /= (l);}#define FLOATOBJ_Neg(pf) {*(pf) = -(*(pf));}#define FLOATOBJ_Equal(pf, pf1) (*(pf) == *(pf1))#define FLOATOBJ_GreaterThan(pf, pf1) (*(pf) > *(pf1))#define FLOATOBJ_LessThan(pf, pf1) (*(pf) < *(pf1))#define FLOATOBJ_EqualLong(pf, l) (*(pf) == (FLOAT)(l))#define FLOATOBJ_GreaterThanLong(pf, l) (*(pf) > (FLOAT)(l))#define FLOATOBJ_LessThanLong(pf, l) (*(pf) < (FLOAT)(l))
#endif
ENGAPIULONGAPIENTRYFONTOBJ_cGetAllGlyphHandles( _In_ FONTOBJ *pfo, _Out_opt_ HGLYPH *phg);
ENGAPIULONGAPIENTRYFONTOBJ_cGetGlyphs( _In_ FONTOBJ *pfo, _In_ ULONG iMode, _In_ ULONG cGlyph, _In_count_(cGlyph) HGLYPH *phg, _Out_ PVOID *ppvGlyph);
ENGAPIFD_GLYPHSET*APIENTRYFONTOBJ_pfdg( _In_ FONTOBJ *pfo);
ENGAPIIFIMETRICS*APIENTRYFONTOBJ_pifi( _In_ FONTOBJ *pfo);
_Ret_opt_bytecount_(*pcjTable)ENGAPIPBYTEAPIENTRYFONTOBJ_pjOpenTypeTablePointer( _In_ FONTOBJ *pfo, _In_ ULONG ulTag, _Out_ ULONG *pcjTable);
ENGAPIPFD_GLYPHATTRAPIENTRYFONTOBJ_pQueryGlyphAttrs( _In_ FONTOBJ *pfo, _In_ ULONG iMode);
_Ret_opt_bytecount_(*pcjFile)ENGAPIPVOIDAPIENTRYFONTOBJ_pvTrueTypeFontFile( _In_ FONTOBJ *pfo, _Out_ ULONG *pcjFile);
ENGAPILPWSTRAPIENTRYFONTOBJ_pwszFontFilePaths( _In_ FONTOBJ *pfo, _Out_ ULONG *pcwc);
ENGAPIXFORMOBJ*APIENTRYFONTOBJ_pxoGetXform( _In_ FONTOBJ *pfo);
ENGAPIVOIDAPIENTRYFONTOBJ_vGetInfo( _In_ FONTOBJ *pfo, _In_ ULONG cjSize, _Out_bytecap_(cjSize) FONTINFO *pfi);
#if (NTDDI_VERSION <= NTDDI_WINXP) /* Obsolete in Windows 2000 and later */GAMMA_TABLES*APIENTRYFONTOBJ_pGetGammaTables( _In_ FONTOBJ *pfo);#endif
ENGAPILONGAPIENTRYHT_ComputeRGBGammaTable( _In_ USHORT GammaTableEntries, _In_ USHORT GammaTableType, _In_ USHORT RedGamma, _In_ USHORT GreenGamma, _In_ USHORT BlueGamma, _Out_writes_bytes_(GammaTableEntries * 3) LPBYTE pGammaTable);
ENGAPILONGAPIENTRYHT_Get8BPPFormatPalette( _Out_opt_ LPPALETTEENTRY pPaletteEntry, _In_ USHORT RedGamma, _In_ USHORT GreenGamma, _In_ USHORT BlueGamma);
ENGAPILONGAPIENTRYHT_Get8BPPMaskPalette( _Out_opt_ LPPALETTEENTRY pPaletteEntry, _In_ BOOL Use8BPPMaskPal, _In_ BYTE CMYMask, _In_ USHORT RedGamma, _In_ USHORT GreenGamma, _In_ USHORT BlueGamma);
ENGAPILONGAPIENTRYHTUI_DeviceColorAdjustment( _In_ LPSTR pDeviceName, _Out_ PDEVHTADJDATA pDevHTAdjData);
ENGAPIULONGAPIENTRYPALOBJ_cGetColors( _In_ PALOBJ *ppalo, _In_ ULONG iStart, _In_ ULONG cColors, _Out_writes_(cColors) ULONG *pulColors);
ENGAPIBOOLAPIENTRYPATHOBJ_bCloseFigure( _In_ PATHOBJ *ppo);
ENGAPIBOOLAPIENTRYPATHOBJ_bEnum( _In_ PATHOBJ *ppo, _Out_ PATHDATA *ppd);
ENGAPIBOOLAPIENTRYPATHOBJ_bEnumClipLines( _In_ PATHOBJ *ppo, _In_ ULONG cj, _Out_bytecap_(cj) CLIPLINE *pcl);
ENGAPIBOOLAPIENTRYPATHOBJ_bMoveTo( _In_ PATHOBJ *ppo, _In_ POINTFIX ptfx);
ENGAPIBOOLAPIENTRYPATHOBJ_bPolyBezierTo( _In_ PATHOBJ *ppo, _In_count_(cptfx) POINTFIX *pptfx, _In_ ULONG cptfx);
ENGAPIBOOLAPIENTRYPATHOBJ_bPolyLineTo( _In_ PATHOBJ *ppo, _In_count_(cptfx) POINTFIX *pptfx, _In_ ULONG cptfx);
ENGAPIVOIDAPIENTRYPATHOBJ_vEnumStart( _Inout_ PATHOBJ *ppo);
ENGAPIVOIDAPIENTRYPATHOBJ_vEnumStartClipLines( _Inout_ PATHOBJ *ppo, _In_ CLIPOBJ *pco, _In_ SURFOBJ *pso, _In_ LINEATTRS *pla);
ENGAPIVOIDAPIENTRYPATHOBJ_vGetBounds( _In_ PATHOBJ *ppo, _Out_ PRECTFX prectfx);
ENGAPIBOOLAPIENTRYSTROBJ_bEnum( _Inout_ STROBJ *pstro, _Out_ ULONG *pc, _Out_ PGLYPHPOS *ppgpos); // FIXME_ size?
ENGAPIBOOLAPIENTRYSTROBJ_bEnumPositionsOnly( _In_ STROBJ *pstro, _Out_ ULONG *pc, _Out_ PGLYPHPOS *ppgpos); // FIXME_ size?
ENGAPIBOOLAPIENTRYSTROBJ_bGetAdvanceWidths( _In_ STROBJ *pso, _In_ ULONG iFirst, _In_ ULONG c, _Out_cap_(c) POINTQF *pptqD);
ENGAPIDWORDAPIENTRYSTROBJ_dwGetCodePage( _In_ STROBJ *pstro);
ENGAPIFIXAPIENTRYSTROBJ_fxBreakExtra( _In_ STROBJ *pstro);
ENGAPIFIXAPIENTRYSTROBJ_fxCharacterExtra( _In_ STROBJ *pstro);
ENGAPIVOIDAPIENTRYSTROBJ_vEnumStart( _Inout_ STROBJ *pstro);
ENGAPIBOOLAPIENTRYWNDOBJ_bEnum( _Inout_ WNDOBJ *pwo, _In_ ULONG cj, _Out_bytecap_(cj) ULONG *pul);
ENGAPIULONGAPIENTRYWNDOBJ_cEnumStart( _Inout_ WNDOBJ *pwo, _In_ ULONG iType, _In_ ULONG iDirection, _In_ ULONG cLimit);
ENGAPIVOIDAPIENTRYWNDOBJ_vSetConsumer( _Inout_ WNDOBJ *pwo, _In_ PVOID pvConsumer);
/* XFORMOBJ_bApplyXform.iMode constants */#define XF_LTOL 0L#define XF_INV_LTOL 1L#define XF_LTOFX 2L#define XF_INV_FXTOL 3L
ENGAPIBOOLAPIENTRYXFORMOBJ_bApplyXform( _In_ XFORMOBJ *pxo, _In_ ULONG iMode, _In_ ULONG cPoints, _In_reads_bytes_(cPoints * sizeof(POINTL)) PVOID pvIn, _Out_writes_bytes_(cPoints * sizeof(POINTL)) PVOID pvOut);
/* Obsolete in Windows 2000 and later */DECLSPEC_DEPRECATED_DDKENGAPIHANDLEAPIENTRYXFORMOBJ_cmGetTransform( XFORMOBJ *pxo);
#if !defined(USERMODE_DRIVER)ENGAPIULONGAPIENTRYXFORMOBJ_iGetFloatObjXform( _In_ XFORMOBJ *pxo, _Out_ FLOATOBJ_XFORM *pxfo);#else#define XFORMOBJ_iGetFloatObjXform XFORMOBJ_iGetXform#endif
ENGAPIULONGAPIENTRYXFORMOBJ_iGetXform( _In_ XFORMOBJ *pxo, _Out_ XFORML *pxform);
/* XLATEOBJ_cGetPalette.iPal constants */#define XO_SRCPALETTE 1#define XO_DESTPALETTE 2#define XO_DESTDCPALETTE 3#define XO_SRCBITFIELDS 4#define XO_DESTBITFIELDS 5
ENGAPIULONGAPIENTRYXLATEOBJ_cGetPalette( _In_ XLATEOBJ *pxlo, _In_ ULONG iPal, _In_ ULONG cPal, _Out_cap_(cPal) ULONG *pPal);
ENGAPIHANDLEAPIENTRYXLATEOBJ_hGetColorTransform( _In_ XLATEOBJ *pxlo);
ENGAPIULONGAPIENTRYXLATEOBJ_iXlate( _In_ XLATEOBJ *pxlo, _In_ ULONG iColor);
ENGAPIULONG*APIENTRYXLATEOBJ_piVector( _In_ XLATEOBJ *pxlo);
#if (NTDDI_VERSION >= NTDDI_WINXPSP2)
ENGAPIVOIDAPIENTRYEngBugCheckEx( _In_ ULONG BugCheckCode, _In_ ULONG_PTR P1, _In_ ULONG_PTR P2, _In_ ULONG_PTR P3, _In_ ULONG_PTR P4);
#endif /* (NTDDI_VERSION >= NTDDI_WINXPSP2) */
#if (NTDDI_VERSION >= NTDDI_VISTA)
ENGAPIHANDLEAPIENTRYEngCreateRectRgn( _In_ INT left, _In_ INT top, _In_ INT right, _In_ INT bottom);
ENGAPIVOIDAPIENTRYEngDeleteRgn( _In_ HANDLE hrgn);
ENGAPIINTAPIENTRYEngCombineRgn( _In_ HANDLE hrgnTrg, _In_ HANDLE hrgnSrc1, _In_ HANDLE hrgnSrc2, _In_ INT iMode);
ENGAPIINTAPIENTRYEngCopyRgn( _In_ HANDLE hrgnDst, _In_ HANDLE hrgnSrc);
ENGAPIINTAPIENTRYEngIntersectRgn( _In_ HANDLE hrgnResult, _In_ HANDLE hRgnA, _In_ HANDLE hRgnB);
ENGAPIINTAPIENTRYEngSubtractRgn( _In_ HANDLE hrgnResult, _In_ HANDLE hRgnA, _In_ HANDLE hRgnB);
ENGAPIINTAPIENTRYEngUnionRgn( _In_ HANDLE hrgnResult, _In_ HANDLE hRgnA, _In_ HANDLE hRgnB);
ENGAPIINTAPIENTRYEngXorRgn( _In_ HANDLE hrgnResult, _In_ HANDLE hRgnA, _In_ HANDLE hRgnB);
ENGAPIBOOLAPIENTRYEngRectInRgn( _In_ HANDLE hrgn, _In_ LPRECT prcl);
ENGAPIBOOLAPIENTRYEngEqualRgn( _In_ HANDLE hrgn1, _In_ HANDLE hrgn2);
ENGAPIDWORDAPIENTRYEngGetRgnData( _In_ HANDLE hrgn, _In_ DWORD nCount, _Out_cap_(nCount) LPRGNDATA lpRgnData);
ENGAPIBOOLAPIENTRYEngSetRectRgn( _In_ HANDLE hrgn, _In_ INT left, _In_ INT top, _In_ INT right, _In_ INT bottom);
ENGAPIINTAPIENTRYEngGetRgnBox( _In_ HANDLE hrgn, _Out_ LPRECT prcl);
ENGAPIINTAPIENTRYEngOffsetRgn( _In_ HANDLE hrgn, _In_ INT x, _In_ INT y);
ENGAPIVOIDAPIENTRYEngRenderHint( _In_ DHPDEV dhpdev, _In_ ULONG NotifyCode, _In_ SIZE_T Length, _In_reads_bytes_opt_(Length) PVOID Data);
_Requires_lock_not_held_(*hsem)_Acquires_exclusive_lock_(*hsem)_Acquires_lock_(_Global_critical_region_)ENGAPIVOIDAPIENTRYEngAcquireSemaphore( _Inout_ HSEMAPHORE hsem);
ENGAPIBOOLAPIENTRYEngAcquireSemaphoreNoWait( _In_ HSEMAPHORE hsem);
_Acquires_lock_(_Global_critical_region_)_Requires_lock_not_held_(*hsem)_Acquires_shared_lock_(*hsem)ENGAPIVOIDNTAPIEngAcquireSemaphoreShared( _Inout_ HSEMAPHORE hsem);
ENGAPIBOOLAPIENTRYEngIsSemaphoreSharedByCurrentThread( _In_ HSEMAPHORE hsem);
DECLARE_HANDLE(HFASTMUTEX);
ENGAPIHFASTMUTEXAPIENTRYEngCreateFastMutex( VOID);
ENGAPIVOIDAPIENTRYEngDeleteFastMutex( _In_ HFASTMUTEX hfm);
ENGAPIVOIDAPIENTRYEngAcquireFastMutex( _In_ HFASTMUTEX hfm);
ENGAPIVOIDAPIENTRYEngReleaseFastMutex( _In_ HFASTMUTEX hfm);
ENGAPIBOOLAPIENTRYEngUpdateDeviceSurface( _In_ SURFOBJ *pso, _Inout_ CLIPOBJ **ppco);
#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
#if (NTDDI_VERSION >= NTDDI_WIN7)
ENGAPIHBITMAPAPIENTRYEngCreateRedirectionDeviceBitmap( __in_data_source(USER_MODE) DHSURF dhsurf, __in_data_source(USER_MODE) SIZEL sizl, _In_ ULONG iFormatCompat);
VOIDAPIENTRYEngCTGetGammaTable( _In_ ULONG ulGamma, _Out_ CONST BYTE** pGammaTable, _Out_ CONST BYTE** pInverseGammaTable);
ULONGAPIENTRYEngCTGetCurrentGamma( _In_ HDEV hdev);
#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
/* Graphics Driver Functions */
typedef BOOL(APIENTRY FN_DrvAlphaBlend)( _Inout_ SURFOBJ *psoDest, _In_ SURFOBJ *psoSrc, _In_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_ RECTL *prclDest, _In_ RECTL *prclSrc, _In_ BLENDOBJ *pBlendObj);typedef FN_DrvAlphaBlend *PFN_DrvAlphaBlend;extern FN_DrvAlphaBlend DrvAlphaBlend;
typedef BOOL(APIENTRY FN_DrvAssertMode)( _In_ DHPDEV dhpdev, _In_ BOOL bEnable);typedef FN_DrvAssertMode *PFN_DrvAssertMode;extern FN_DrvAssertMode DrvAssertMode;
typedef BOOL(APIENTRY FN_DrvBitBlt)( _Inout_ SURFOBJ *psoTrg, _In_opt_ SURFOBJ *psoSrc, _In_opt_ SURFOBJ *psoMask, _In_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_ RECTL *prclTrg, _In_opt_ POINTL *pptlSrc, _In_opt_ POINTL *pptlMask, _In_opt_ BRUSHOBJ *pbo, _In_opt_ POINTL *pptlBrush, _In_ ROP4 rop4);typedef FN_DrvBitBlt *PFN_DrvBitBlt;extern FN_DrvBitBlt DrvBitBlt;
typedef VOID(APIENTRY FN_DrvCompletePDEV)( _In_ DHPDEV dhpdev, _In_ HDEV hdev);typedef FN_DrvCompletePDEV *PFN_DrvCompletePDEV;extern FN_DrvCompletePDEV DrvCompletePDEV;
typedef BOOL(APIENTRY FN_DrvCopyBits)( _In_ SURFOBJ *psoDest, _In_ SURFOBJ *psoSrc, _In_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_ RECTL *prclDest, _In_ POINTL *pptlSrc);typedef FN_DrvCopyBits *PFN_DrvCopyBits;extern FN_DrvCopyBits DrvCopyBits;
typedef HBITMAP(APIENTRY FN_DrvCreateDeviceBitmap)( _In_ DHPDEV dhpdev, _In_ SIZEL sizl, _In_ ULONG iFormat);typedef FN_DrvCreateDeviceBitmap *PFN_DrvCreateDeviceBitmap;extern FN_DrvCreateDeviceBitmap DrvCreateDeviceBitmap;
typedef VOID(APIENTRY FN_DrvDeleteDeviceBitmap)( _In_ _Post_ptr_invalid_ DHSURF dhsurf);typedef FN_DrvDeleteDeviceBitmap *PFN_DrvDeleteDeviceBitmap;extern FN_DrvDeleteDeviceBitmap DrvDeleteDeviceBitmap;
typedef HBITMAP(APIENTRY FN_DrvDeriveSurface)( _In_ DD_DIRECTDRAW_GLOBAL *pDirectDraw, _In_ DD_SURFACE_LOCAL *pSurface);typedef FN_DrvDeriveSurface *PFN_DrvDeriveSurface;extern FN_DrvDeriveSurface DrvDeriveSurface;
typedef LONG(APIENTRY FN_DrvDescribePixelFormat)( _In_ DHPDEV dhpdev, _In_ LONG iPixelFormat, _In_ ULONG cjpfd, _Out_opt_ PIXELFORMATDESCRIPTOR *ppfd);typedef FN_DrvDescribePixelFormat *PFN_DrvDescribePixelFormat;extern FN_DrvDescribePixelFormat DrvDescribePixelFormat;
typedef VOID(APIENTRY FN_DrvDestroyFont)( _In_ FONTOBJ *pfo);typedef FN_DrvDestroyFont *PFN_DrvDestroyFont;extern FN_DrvDestroyFont DrvDestroyFont;
typedef VOID(APIENTRY FN_DrvDisableDriver)(VOID);typedef FN_DrvDisableDriver *PFN_DrvDisableDriver;extern FN_DrvDisableDriver DrvDisableDriver;
typedef VOID(APIENTRY FN_DrvDisablePDEV)( _In_ DHPDEV dhpdev);typedef FN_DrvDisablePDEV *PFN_DrvDisablePDEV;extern FN_DrvDisablePDEV DrvDisablePDEV;
typedef VOID(APIENTRY FN_DrvDisableSurface)( _In_ DHPDEV dhpdev);typedef FN_DrvDisableSurface *PFN_DrvDisableSurface;extern FN_DrvDisableSurface DrvDisableSurface;
typedef ULONG(APIENTRY FN_DrvDitherColor)( _In_ DHPDEV dhpdev, _In_ ULONG iMode, _In_ ULONG rgb, _Inout_updates_(8 * 8) ULONG *pul); // FIXME: compare EngDitherColortypedef FN_DrvDitherColor *PFN_DrvDitherColor;extern FN_DrvDitherColor DrvDitherColor;
typedef ULONG(APIENTRY FN_DrvDrawEscape)( _In_ SURFOBJ *pso, _In_ ULONG iEsc, _In_ CLIPOBJ *pco, _In_ RECTL *prcl, _In_ ULONG cjIn, _In_reads_bytes_(cjIn) PVOID pvIn);typedef FN_DrvDrawEscape *PFN_DrvDrawEscape;extern FN_DrvDrawEscape DrvDrawEscape;
typedef BOOL(APIENTRY FN_DrvEnableDriver)( _In_ ULONG iEngineVersion, _In_ ULONG cj, _Inout_bytecount_(cj) DRVENABLEDATA *pded); // Zero initializedtypedef FN_DrvEnableDriver *PFN_DrvEnableDriver;extern FN_DrvEnableDriver DrvEnableDriver;
typedef DHPDEV(APIENTRY FN_DrvEnablePDEV)( _In_ DEVMODEW *pdm, _In_ LPWSTR pwszLogAddress, _In_ ULONG cPat, _Out_opt_cap_(cPat) HSURF *phsurfPatterns, _In_ ULONG cjCaps, _Out_bytecap_(cjCaps) ULONG *pdevcaps, _In_ ULONG cjDevInfo, _Out_ DEVINFO *pdi, _In_ HDEV hdev, _In_ LPWSTR pwszDeviceName, _In_ HANDLE hDriver);typedef FN_DrvEnablePDEV *PFN_DrvEnablePDEV;extern FN_DrvEnablePDEV DrvEnablePDEV;
typedef HSURF(APIENTRY FN_DrvEnableSurface)( _In_ DHPDEV dhpdev);typedef FN_DrvEnableSurface *PFN_DrvEnableSurface;extern FN_DrvEnableSurface DrvEnableSurface;
/* DrvEndDoc.fl constants */#define ED_ABORTDOC 0x00000001
typedef BOOL(APIENTRY FN_DrvEndDoc)( _In_ SURFOBJ *pso, _In_ FLONG fl);typedef FN_DrvEndDoc *PFN_DrvEndDoc;extern FN_DrvEndDoc DrvEndDoc;
typedef ULONG(APIENTRY FN_DrvEscape)( _In_ SURFOBJ *pso, _In_ ULONG iEsc, _In_ ULONG cjIn, _In_bytecount_(cjIn) PVOID pvIn, _In_ ULONG cjOut, _Out_bytecap_(cjOut) PVOID pvOut);typedef FN_DrvEscape *PFN_DrvEscape;extern FN_DrvEscape DrvEscape;
typedef BOOL(APIENTRY FN_DrvFillPath)( _Inout_ SURFOBJ *pso, _In_ PATHOBJ *ppo, _In_ CLIPOBJ *pco, _In_ BRUSHOBJ *pbo, _In_ POINTL *pptlBrushOrg, _In_ MIX mix, _In_ FLONG flOptions);typedef FN_DrvFillPath *PFN_DrvFillPath;extern FN_DrvFillPath DrvFillPath;
typedef ULONG(APIENTRY FN_DrvFontManagement)( _In_ SURFOBJ *pso, _In_opt_ FONTOBJ *pfo, _In_ ULONG iMode, _In_ ULONG cjIn, _In_bytecount_(cjIn) PVOID pvIn, _In_ ULONG cjOut, _Out_bytecap_(cjOut) PVOID pvOut);typedef FN_DrvFontManagement *PFN_DrvFontManagement;extern FN_DrvFontManagement DrvFontManagement;
typedef VOID(APIENTRY FN_DrvFree)( _In_ _Post_ptr_invalid_ PVOID pv, _In_ ULONG_PTR id);typedef FN_DrvFree *PFN_DrvFree;extern FN_DrvFree DrvFree;
/* DrvGetGlyphMode return values */#define FO_HGLYPHS 0L#define FO_GLYPHBITS 1L#define FO_PATHOBJ 2L
typedef ULONG(APIENTRY FN_DrvGetGlyphMode)( _In_ DHPDEV dhpdev, _In_ FONTOBJ *pfo);typedef FN_DrvGetGlyphMode *PFN_DrvGetGlyphMode;extern FN_DrvGetGlyphMode DrvGetGlyphMode;
typedef ULONG(APIENTRY FN_DrvGetModes)( _In_ HANDLE hDriver, _In_ ULONG cjSize, _Out_opt_bytecap_(cjSize) DEVMODEW *pdm);typedef FN_DrvGetModes *PFN_DrvGetModes;extern FN_DrvGetModes DrvGetModes;
typedef PVOID(APIENTRY FN_DrvGetTrueTypeFile)( _In_ ULONG_PTR iFile, _In_ ULONG *pcj);typedef FN_DrvGetTrueTypeFile *PFN_DrvGetTrueTypeFile;extern FN_DrvGetTrueTypeFile DrvGetTrueTypeFile;
typedef BOOL(APIENTRY FN_DrvGradientFill)( _Inout_ SURFOBJ *psoDest, _In_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_ TRIVERTEX *pVertex, _In_ ULONG nVertex, _In_ PVOID pMesh, _In_ ULONG nMesh, _In_ RECTL *prclExtents, _In_ POINTL *pptlDitherOrg, _In_ ULONG ulMode);typedef FN_DrvGradientFill *PFN_DrvGradientFill;extern FN_DrvGradientFill DrvGradientFill;
typedef BOOL(APIENTRY FN_DrvIcmCheckBitmapBits)( _In_ DHPDEV dhpdev, _In_ HANDLE hColorTransform, _In_ SURFOBJ *pso, _Out_bytecap_(pso->sizlBitmap.cx * pso->sizlBitmap.cy) PBYTE paResults);typedef FN_DrvIcmCheckBitmapBits *PFN_DrvIcmCheckBitmapBits;extern FN_DrvIcmCheckBitmapBits DrvIcmCheckBitmapBits;
typedef HANDLE(APIENTRY FN_DrvIcmCreateColorTransform)( _In_ DHPDEV dhpdev, _In_ LPLOGCOLORSPACEW pLogColorSpace, _In_reads_bytes_opt_(cjSourceProfile) PVOID pvSourceProfile, _In_ ULONG cjSourceProfile, _In_reads_bytes_(cjDestProfile) PVOID pvDestProfile, _In_ ULONG cjDestProfile, _In_reads_bytes_opt_(cjTargetProfile) PVOID pvTargetProfile, _In_ ULONG cjTargetProfile, _In_ DWORD dwReserved);typedef FN_DrvIcmCreateColorTransform *PFN_DrvIcmCreateColorTransform;extern FN_DrvIcmCreateColorTransform DrvIcmCreateColorTransform;
typedef BOOL(APIENTRY FN_DrvIcmDeleteColorTransform)( _In_ DHPDEV dhpdev, _In_ HANDLE hcmXform);typedef FN_DrvIcmDeleteColorTransform *PFN_DrvIcmDeleteColorTransform;extern FN_DrvIcmDeleteColorTransform DrvIcmDeleteColorTransform;
/* DrvIcmSetDeviceGammaRamp.iFormat constants */#define IGRF_RGB_256BYTES 0x00000000#define IGRF_RGB_256WORDS 0x00000001
typedef BOOL(APIENTRY FN_DrvIcmSetDeviceGammaRamp)( _In_ DHPDEV dhpdev, _In_ ULONG iFormat, _In_bytecount_(sizeof(GAMMARAMP)) LPVOID lpRamp);typedef FN_DrvIcmSetDeviceGammaRamp *PFN_DrvIcmSetDeviceGammaRamp;extern FN_DrvIcmSetDeviceGammaRamp DrvIcmSetDeviceGammaRamp;
typedef BOOL(APIENTRY FN_DrvLineTo)( _Inout_ SURFOBJ *pso, _In_ CLIPOBJ *pco, _In_ BRUSHOBJ *pbo, _In_ LONG x1, _In_ LONG y1, _In_ LONG x2, _In_ LONG y2, _In_opt_ RECTL *prclBounds, _In_ MIX mix);typedef FN_DrvLineTo *PFN_DrvLineTo;extern FN_DrvLineTo DrvLineTo;
typedef ULONG_PTR(APIENTRY FN_DrvLoadFontFile)( _In_ ULONG cFiles, _In_ ULONG_PTR *piFile, _In_count_(cFiles) PVOID *ppvView, _In_count_(cFiles) ULONG *pcjView, _In_opt_ DESIGNVECTOR *pdv, _In_ ULONG ulLangID, _In_ ULONG ulFastCheckSum);typedef FN_DrvLoadFontFile *PFN_DrvLoadFontFile;extern FN_DrvLoadFontFile DrvLoadFontFile;
typedef VOID(APIENTRY FN_DrvMovePointer)( _In_ SURFOBJ *pso, _In_ LONG x, _In_ LONG y, _In_opt_ RECTL *prcl);typedef FN_DrvMovePointer *PFN_DrvMovePointer;extern FN_DrvMovePointer DrvMovePointer;
typedef BOOL(APIENTRY FN_DrvNextBand)( _In_ SURFOBJ *pso, _In_ POINTL *pptl);typedef FN_DrvNextBand *PFN_DrvNextBand;extern FN_DrvNextBand DrvNextBand;
typedef VOID(APIENTRY FN_DrvNotify)( _In_ SURFOBJ *pso, _In_ ULONG iType, _In_opt_ PVOID pvData);typedef FN_DrvNotify *PFN_DrvNotify;extern FN_DrvNotify DrvNotify;
typedef BOOL(APIENTRY FN_DrvOffset)( _In_ SURFOBJ *pso, _In_ LONG x, _In_ LONG y, _In_ FLONG flReserved);typedef FN_DrvOffset *PFN_DrvOffset;extern FN_DrvOffset DrvOffset;
typedef BOOL(APIENTRY FN_DrvPaint)( _Inout_ SURFOBJ *pso, _In_ CLIPOBJ *pco, _In_ BRUSHOBJ *pbo, _In_ POINTL *pptlBrushOrg, _In_ MIX mix);typedef FN_DrvPaint *PFN_DrvPaint;extern FN_DrvPaint DrvPaint;
typedef BOOL(APIENTRY FN_DrvPlgBlt)( _Inout_ SURFOBJ *psoTrg, _Inout_ SURFOBJ *psoSrc, _In_opt_ SURFOBJ *psoMsk, _In_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_opt_ COLORADJUSTMENT *pca, _In_opt_ POINTL *pptlBrushOrg, _In_ POINTFIX *pptfx, _In_ RECTL *prcl, _In_opt_ POINTL *pptl, _In_ ULONG iMode);typedef FN_DrvPlgBlt *PFN_DrvPlgBlt;extern FN_DrvPlgBlt DrvPlgBlt;
/* DrvQueryAdvanceWidths.iMode constants */#define QAW_GETWIDTHS 0#define QAW_GETEASYWIDTHS 1
typedef BOOL(APIENTRY FN_DrvQueryAdvanceWidths)( _In_ DHPDEV dhpdev, _In_ FONTOBJ *pfo, _In_ ULONG iMode, _In_reads_(cGlyphs) HGLYPH *phg, _Out_writes_bytes_(cGlyphs * sizeof(USHORT)) PVOID pvWidths, _In_ ULONG cGlyphs);typedef FN_DrvQueryAdvanceWidths *PFN_DrvQueryAdvanceWidths;extern FN_DrvQueryAdvanceWidths DrvQueryAdvanceWidths;
/* DrvQueryDeviceSupport.iType constants */#define QDS_CHECKJPEGFORMAT 0x00000000#define QDS_CHECKPNGFORMAT 0x00000001
typedef BOOL(APIENTRY FN_DrvQueryDeviceSupport)( _In_ SURFOBJ *pso, _In_ XLATEOBJ *pxlo, _In_ XFORMOBJ *pxo, _In_ ULONG iType, _In_ ULONG cjIn, _In_bytecount_(cjIn) PVOID pvIn, _In_ ULONG cjOut, _Out_bytecap_(cjOut) PVOID pvOut);typedef FN_DrvQueryDeviceSupport *PFN_DrvQueryDeviceSupport;extern FN_DrvQueryDeviceSupport DrvQueryDeviceSupport;
/* DrvQueryDriverInfo.dwMode constants */#define DRVQUERY_USERMODE 0x00000001
typedef BOOL(APIENTRY FN_DrvQueryDriverInfo)( _In_ DWORD dwMode, _Out_bytecap_(cjBuf) PVOID pBuffer, _In_ DWORD cjBuf, _Out_ PDWORD pcbNeeded);typedef FN_DrvQueryDriverInfo *PFN_DrvQueryDriverInfo;extern FN_DrvQueryDriverInfo DrvQueryDriverInfo;
typedef PIFIMETRICS(APIENTRY FN_DrvQueryFont)( _In_ DHPDEV dhpdev, _In_ ULONG_PTR iFile, _In_ ULONG iFace, _Out_ ULONG_PTR *pid);typedef FN_DrvQueryFont *PFN_DrvQueryFont;extern FN_DrvQueryFont DrvQueryFont;
/* DrvQueryFontCaps.pulCaps constants */#define QC_OUTLINES 0x00000001#define QC_1BIT 0x00000002#define QC_4BIT 0x00000004#define QC_FONTDRIVERCAPS (QC_OUTLINES | QC_1BIT | QC_4BIT)
typedef LONG(APIENTRY FN_DrvQueryFontCaps)( _In_ ULONG culCaps, _Out_cap_(culCaps) ULONG *pulCaps);typedef FN_DrvQueryFontCaps *PFN_DrvQueryFontCaps;extern FN_DrvQueryFontCaps DrvQueryFontCaps;
/* DrvQueryFontData.iMode constants */#define QFD_GLYPHANDBITMAP 1L#define QFD_GLYPHANDOUTLINE 2L#define QFD_MAXEXTENTS 3L#define QFD_TT_GLYPHANDBITMAP 4L#define QFD_TT_GRAY1_BITMAP 5L#define QFD_TT_GRAY2_BITMAP 6L#define QFD_TT_GRAY4_BITMAP 8L#define QFD_TT_GRAY8_BITMAP 9L
#define QFD_TT_MONO_BITMAP QFD_TT_GRAY1_BITMAP
typedef LONG(APIENTRY FN_DrvQueryFontData)( _In_ DHPDEV dhpdev, _In_ FONTOBJ *pfo, _In_ ULONG iMode, _In_ HGLYPH hg, _In_opt_ GLYPHDATA *pgd, _Out_bytecap_(cjSize) PVOID pv, _In_ ULONG cjSize);typedef FN_DrvQueryFontData *PFN_DrvQueryFontData;extern FN_DrvQueryFontData DrvQueryFontData;
/* DrvQueryFontFile.ulMode constants */#define QFF_DESCRIPTION 0x00000001#define QFF_NUMFACES 0x00000002
typedef LONG(APIENTRY FN_DrvQueryFontFile)( _In_ ULONG_PTR iFile, _In_ ULONG ulMode, _In_ ULONG cjBuf, _Out_bytecap_(cjBuf) ULONG *pulBuf);typedef FN_DrvQueryFontFile *PFN_DrvQueryFontFile;extern FN_DrvQueryFontFile DrvQueryFontFile;
/* DrvQueryFontTree.iMode constants */#define QFT_UNICODE 0L#define QFT_LIGATURES 1L#define QFT_KERNPAIRS 2L#define QFT_GLYPHSET 3L
typedef PVOID(APIENTRY FN_DrvQueryFontTree)( _In_ DHPDEV dhpdev, _In_ ULONG_PTR iFile, _In_ ULONG iFace, _In_ ULONG iMode, _Out_ ULONG_PTR *pid);typedef FN_DrvQueryFontTree *PFN_DrvQueryFontTree;extern FN_DrvQueryFontTree DrvQueryFontTree;
typedef PFD_GLYPHATTR(APIENTRY FN_DrvQueryGlyphAttrs)( _In_ FONTOBJ *pfo, _In_ ULONG iMode);typedef FN_DrvQueryGlyphAttrs *PFN_DrvQueryGlyphAttrs;extern FN_DrvQueryGlyphAttrs DrvQueryGlyphAttrs;
typedef ULONG(APIENTRY FN_DrvQueryPerBandInfo)( _In_ SURFOBJ *pso, _Inout_ PERBANDINFO *pbi);typedef FN_DrvQueryPerBandInfo *PFN_DrvQueryPerBandInfo;extern FN_DrvQueryPerBandInfo DrvQueryPerBandInfo;
/* DrvQueryTrueTypeOutline.bMetricsOnly constants */#define TTO_METRICS_ONLY 0x00000001#define TTO_QUBICS 0x00000002#define TTO_UNHINTED 0x00000004
typedef LONG(APIENTRY FN_DrvQueryTrueTypeOutline)( _In_ DHPDEV dhpdev, _In_ FONTOBJ *pfo, _In_ HGLYPH hglyph, _In_ BOOL bMetricsOnly, _Out_opt_ GLYPHDATA *pgldt, _In_ ULONG cjBuf, _Out_bytecap_(cjBuf) TTPOLYGONHEADER *ppoly);typedef FN_DrvQueryTrueTypeOutline *PFN_DrvQueryTrueTypeOutline;extern FN_DrvQueryTrueTypeOutline DrvQueryTrueTypeOutline;
typedef LONG(APIENTRY FN_DrvQueryTrueTypeTable)( _In_ ULONG_PTR iFile, _In_ ULONG ulFont, _In_ ULONG ulTag, _In_ PTRDIFF dpStart, _In_ ULONG cjBuf, _Out_opt_bytecap_(cjBuf) BYTE *pjBuf, _Outptr_opt_result_bytebuffer_all_maybenull_(*pcjTable) PBYTE *ppjTable, _Out_opt_ ULONG *pcjTable);typedef FN_DrvQueryTrueTypeTable *PFN_DrvQueryTrueTypeTable;extern FN_DrvQueryTrueTypeTable DrvQueryTrueTypeTable;
/* DrvRealizeBrush.iHatch constants */#define RB_DITHERCOLOR 0x80000000L
#define HS_DDI_MAX 6
typedef BOOL(APIENTRY FN_DrvRealizeBrush)( _In_ BRUSHOBJ *pbo, _Inout_ SURFOBJ *psoTarget, // CHECKME _In_opt_ SURFOBJ *psoPattern, _In_opt_ SURFOBJ *psoMask, _In_opt_ XLATEOBJ *pxlo, _In_ ULONG iHatch);typedef FN_DrvRealizeBrush *PFN_DrvRealizeBrush;extern FN_DrvRealizeBrush DrvRealizeBrush;
/* DrvResetDevice return values */#define DRD_SUCCESS 0#define DRD_ERROR 1
typedef ULONG(APIENTRY FN_DrvResetDevice)( _In_ DHPDEV dhpdev, _Reserved_ PVOID Reserved);typedef FN_DrvResetDevice *PFN_DrvResetDevice;extern FN_DrvResetDevice DrvResetDevice;
typedef BOOL(APIENTRY FN_DrvResetPDEV)( _In_ DHPDEV dhpdevOld, _In_ DHPDEV dhpdevNew);typedef FN_DrvResetPDEV *PFN_DrvResetPDEV;extern FN_DrvResetPDEV DrvResetPDEV;
/* DrvSaveScreenBits.iMode constants */#define SS_SAVE 0x00000000#define SS_RESTORE 0x00000001#define SS_FREE 0x00000002
typedef ULONG_PTR(APIENTRY FN_DrvSaveScreenBits)( _In_ SURFOBJ *pso, _In_ ULONG iMode, _In_ ULONG_PTR ident, _In_ RECTL *prcl);typedef FN_DrvSaveScreenBits *PFN_DrvSaveScreenBits;extern FN_DrvSaveScreenBits DrvSaveScreenBits;
typedef BOOL(APIENTRY FN_DrvSendPage)( _In_ SURFOBJ *pso);typedef FN_DrvSendPage *PFN_DrvSendPage;extern FN_DrvSendPage DrvSendPage;
/* DrvSetPalette range */#define WINDDI_MAXSETPALETTECOLORS 256#define WINDDI_MAXSETPALETTECOLORINDEX 255
typedef BOOL(APIENTRY FN_DrvSetPalette)( _In_ DHPDEV dhpdev, _In_ PALOBJ *ppalo, _In_ FLONG fl, _In_range_(0, WINDDI_MAXSETPALETTECOLORINDEX) ULONG iStart, _In_range_(0, WINDDI_MAXSETPALETTECOLORS - iStart) ULONG cColors);typedef FN_DrvSetPalette *PFN_DrvSetPalette;extern FN_DrvSetPalette DrvSetPalette;
typedef BOOL(APIENTRY FN_DrvSetPixelFormat)( _In_ SURFOBJ *pso, _In_ LONG iPixelFormat, _In_ HWND hwnd);typedef FN_DrvSetPixelFormat *PFN_DrvSetPixelFormat;extern FN_DrvSetPixelFormat DrvSetPixelFormat;
/* DrvSetPointerShape return values */#define SPS_ERROR 0x00000000#define SPS_DECLINE 0x00000001#define SPS_ACCEPT_NOEXCLUDE 0x00000002#define SPS_ACCEPT_EXCLUDE 0x00000003#define SPS_ACCEPT_SYNCHRONOUS 0x00000004
/* DrvSetPointerShape.fl constants */#define SPS_CHANGE 0x00000001L#define SPS_ASYNCCHANGE 0x00000002L#define SPS_ANIMATESTART 0x00000004L#define SPS_ANIMATEUPDATE 0x00000008L#define SPS_ALPHA 0x00000010L#define SPS_RESERVED 0x00000020L /* Force s/w cursor rendering */#define SPS_RESERVED1 0x00000040L /* Force show/hide system cursor */#define SPS_FLAGSMASK 0x000000FFL#define SPS_LENGTHMASK 0x00000F00L#define SPS_FREQMASK 0x000FF000L
typedef ULONG(APIENTRY FN_DrvSetPointerShape)( _In_ SURFOBJ *pso, _In_opt_ SURFOBJ *psoMask, _In_opt_ SURFOBJ *psoColor, _In_ XLATEOBJ *pxlo, _In_ LONG xHot, _In_ LONG yHot, _In_ LONG x, _In_ LONG y, _In_ RECTL *prcl, _In_ FLONG fl);typedef FN_DrvSetPointerShape *PFN_DrvSetPointerShape;extern FN_DrvSetPointerShape DrvSetPointerShape;
typedef BOOL(APIENTRY FN_DrvStartBanding)( _In_ SURFOBJ *pso, _In_ POINTL *pptl);typedef FN_DrvStartBanding *PFN_DrvStartBanding;extern FN_DrvStartBanding DrvStartBanding;
typedef BOOL(APIENTRY FN_DrvStartDoc)( _In_ SURFOBJ *pso, _In_ LPWSTR pwszDocName, _In_ DWORD dwJobId);typedef FN_DrvStartDoc *PFN_DrvStartDoc;extern FN_DrvStartDoc DrvStartDoc;
typedef BOOL(APIENTRY FN_DrvStartPage)( _In_ SURFOBJ *pso);typedef FN_DrvStartPage *PFN_DrvStartPage;extern FN_DrvStartPage DrvStartPage;
typedef BOOL(APIENTRY FN_DrvStretchBlt)( _Inout_ SURFOBJ *psoDest, _Inout_ SURFOBJ *psoSrc, _In_opt_ SURFOBJ *psoMask, _In_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_opt_ COLORADJUSTMENT *pca, _In_ POINTL *pptlHTOrg, _In_ RECTL *prclDest, _In_ RECTL *prclSrc, _When_(psoMask, _In_) POINTL *pptlMask, _In_ ULONG iMode);typedef FN_DrvStretchBlt *PFN_DrvStretchBlt;extern FN_DrvStretchBlt DrvStretchBlt;
typedef BOOL(APIENTRY FN_DrvStretchBltROP)( _Inout_ SURFOBJ *psoDest, _Inout_ SURFOBJ *psoSrc, _In_opt_ SURFOBJ *psoMask, _In_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_opt_ COLORADJUSTMENT *pca, _In_ POINTL *pptlHTOrg, _In_ RECTL *prclDest, _In_ RECTL *prclSrc, _When_(psoMask, _In_) POINTL *pptlMask, _In_ ULONG iMode, _In_ BRUSHOBJ *pbo, _In_ DWORD rop4);typedef FN_DrvStretchBltROP *PFN_DrvStretchBltROP;extern FN_DrvStretchBltROP DrvStretchBltROP;
typedef BOOL(APIENTRY FN_DrvStrokeAndFillPath)( _Inout_ SURFOBJ *pso, _Inout_ PATHOBJ *ppo, _In_ CLIPOBJ *pco, _In_opt_ XFORMOBJ *pxo, _In_ BRUSHOBJ *pboStroke, _In_ LINEATTRS *plineattrs, _In_ BRUSHOBJ *pboFill, _In_ POINTL *pptlBrushOrg, _In_ MIX mixFill, _In_ FLONG flOptions);typedef FN_DrvStrokeAndFillPath *PFN_DrvStrokeAndFillPath;extern FN_DrvStrokeAndFillPath DrvStrokeAndFillPath;
typedef BOOL(APIENTRY FN_DrvStrokePath)( _Inout_ SURFOBJ *pso, _In_ PATHOBJ *ppo, _In_ CLIPOBJ *pco, _In_opt_ XFORMOBJ *pxo, _In_ BRUSHOBJ *pbo, _In_ POINTL *pptlBrushOrg, _In_ LINEATTRS *plineattrs, _In_ MIX mix);typedef FN_DrvStrokePath *PFN_DrvStrokePath;extern FN_DrvStrokePath DrvStrokePath;
typedef BOOL(APIENTRY FN_DrvSwapBuffers)( _In_ SURFOBJ *pso, _In_ WNDOBJ *pwo);typedef FN_DrvSwapBuffers *PFN_DrvSwapBuffers;extern FN_DrvSwapBuffers DrvSwapBuffers;
typedef VOID(APIENTRY FN_DrvSynchronize)( _In_ DHPDEV dhpdev, _In_count_c_(0) RECTL *prcl); // should be ignoredtypedef FN_DrvSynchronize *PFN_DrvSynchronize;extern FN_DrvSynchronize DrvSynchronize;
/* DrvSynchronizeSurface.fl constants */#define DSS_TIMER_EVENT 0x00000001#define DSS_FLUSH_EVENT 0x00000002#define DSS_RESERVED 0x00000004#define DSS_RESERVED1 0x00000008
typedef VOID(APIENTRY FN_DrvSynchronizeSurface)( _In_ SURFOBJ *pso, _In_opt_ RECTL *prcl, _In_ FLONG fl);typedef FN_DrvSynchronizeSurface *PFN_DrvSynchronizeSurface;extern FN_DrvSynchronizeSurface DrvSynchronizeSurface;
typedef BOOL(APIENTRY FN_DrvTextOut)( _In_ SURFOBJ *pso, _In_ STROBJ *pstro, _In_ FONTOBJ *pfo, _In_ CLIPOBJ *pco, _Null_ RECTL *prclExtra, _In_opt_ RECTL *prclOpaque, _In_ BRUSHOBJ *pboFore, _In_ BRUSHOBJ *pboOpaque, _In_ POINTL *pptlOrg, _In_ MIX mix);typedef FN_DrvTextOut *PFN_DrvTextOut;extern FN_DrvTextOut DrvTextOut;
typedef BOOL(APIENTRY FN_DrvTransparentBlt)( _Inout_ SURFOBJ *psoDst, _In_ SURFOBJ *psoSrc, _In_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_ RECTL *prclDst, _In_ RECTL *prclSrc, _In_ ULONG iTransColor, _In_ ULONG ulReserved);typedef FN_DrvTransparentBlt *PFN_DrvTransparentBlt;extern FN_DrvTransparentBlt DrvTransparentBlt;
typedef BOOL(APIENTRY FN_DrvUnloadFontFile)( _In_ ULONG_PTR iFile);typedef FN_DrvUnloadFontFile *PFN_DrvUnloadFontFile;extern FN_DrvUnloadFontFile DrvUnloadFontFile;
/* Direct draw */
typedef VOID(APIENTRY FN_DrvDisableDirectDraw)( _In_ DHPDEV dhpdev);typedef FN_DrvDisableDirectDraw *PFN_DrvDisableDirectDraw;extern FN_DrvDisableDirectDraw DrvDisableDirectDraw;
typedef BOOL(APIENTRY FN_DrvEnableDirectDraw)( _In_ DHPDEV dhpdev, _Out_ DD_CALLBACKS *pCallBacks, _Out_ DD_SURFACECALLBACKS *pSurfaceCallBacks, _Out_ DD_PALETTECALLBACKS *pPaletteCallBacks);typedef FN_DrvEnableDirectDraw *PFN_DrvEnableDirectDraw;extern FN_DrvEnableDirectDraw DrvEnableDirectDraw;
typedef BOOL(APIENTRY FN_DrvGetDirectDrawInfo)( _In_ DHPDEV dhpdev, _Out_ DD_HALINFO *pHalInfo, _Out_ DWORD *pdwNumHeaps, _Out_ VIDEOMEMORY *pvmList, _Out_ DWORD *pdwNumFourCCCodes, _Out_ DWORD *pdwFourCC);typedef FN_DrvGetDirectDrawInfo *PFN_DrvGetDirectDrawInfo;extern FN_DrvGetDirectDrawInfo DrvGetDirectDrawInfo;
typedef BOOL //DECLSPEC_DEPRECATED_DDK(APIENTRY FN_DrvQuerySpoolType)( _In_ DHPDEV dhpdev, _In_ LPWSTR pwchType);typedef FN_DrvQuerySpoolType *PFN_DrvQuerySpoolType;extern FN_DrvQuerySpoolType DrvQuerySpoolType;
typedef LONG(APIENTRY FN_DrvQueryTrueTypeSection)( ULONG, ULONG, ULONG, HANDLE *, PTRDIFF *);typedef FN_DrvQueryTrueTypeSection *PFN_DrvQueryTrueTypeSection;extern FN_DrvQueryTrueTypeSection DrvQueryTrueTypeSection;
DECLSPEC_DEPRECATED_DDKtypedef VOID(APIENTRY FN_DrvMovePanning)( _In_ LONG x, _In_ LONG y, _In_ FLONG fl);typedef FN_DrvMovePanning *PFN_DrvMovePanning;extern FN_DrvMovePanning DrvMovePanning;
#if (NTDDI_VERSION >= NTDDI_VISTA)
typedef LONG(APIENTRY FN_DrvRenderHint)( _In_ DHPDEV dhpdev, _In_ ULONG NotifyCode, _In_ SIZE_T Length, _In_reads_bytes_opt_(Length) PVOID Data);typedef FN_DrvRenderHint *PFN_DrvRenderHint;extern FN_DrvRenderHint DrvRenderHint;
typedef struct _DRH_APIBITMAPDATA{ SURFOBJ *pso; BOOL b;} DRH_APIBITMAPDATA, *PDRH_APIBITMAPDATA;
#define DRH_APIBITMAP 0x00000001
typedef HANDLE(APIENTRY FN_EngCreateRectRgn)( _In_ INT left, _In_ INT top, _In_ INT right, _In_ INT bottom);typedef FN_EngCreateRectRgn *PFN_EngCreateRectRgn;
typedef VOID(APIENTRY FN_EngDeleteRgn)( HANDLE hrgn);typedef FN_EngDeleteRgn *PFN_EngDeleteRgn;
typedef INT(APIENTRY FN_EngCombineRgn)( _In_ HANDLE hrgnTrg, _In_ HANDLE hrgnSrc1, _In_ HANDLE hrgnSrc2, _In_ INT iMode);typedef FN_EngCombineRgn *PFN_EngCombineRgn;
typedef INT(APIENTRY FN_EngCopyRgn)( _In_ HANDLE hrgnDst, _In_ HANDLE hrgnSrc);typedef FN_EngCopyRgn *PFN_EngCopyRgn;
typedef INT(APIENTRY FN_EngIntersectRgn)( _In_ HANDLE hrgnResult, _In_ HANDLE hRgnA, _In_ HANDLE hRgnB);typedef FN_EngIntersectRgn *PFN_EngIntersectRgn;
typedef INT(APIENTRY FN_EngSubtractRgn)( _In_ HANDLE hrgnResult, _In_ HANDLE hRgnA, _In_ HANDLE hRgnB);typedef FN_EngSubtractRgn *PFN_EngSubtractRgn;
typedef INT(APIENTRY FN_EngUnionRgn)( _In_ HANDLE hrgnResult, _In_ HANDLE hRgnA, _In_ HANDLE hRgnB);typedef FN_EngUnionRgn *PFN_EngUnionRgn;
typedef INT(APIENTRY FN_EngXorRgn)( _In_ HANDLE hrgnResult, _In_ HANDLE hRgnA, _In_ HANDLE hRgnB);typedef FN_EngXorRgn *PFN_EngXorRgn;
#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
#if (NTDDI_VERSION >= NTDDI_WIN7)
/* DrvCreateDeviceBitmapEx() flags */#define CDBEX_REDIRECTION 0x00000001#define CDBEX_DXINTEROP 0x00000002
typedef HBITMAP(APIENTRY FN_DrvCreateDeviceBitmapEx)( _In_ DHPDEV dhpdev, _In_ SIZEL sizl, _In_ ULONG iFormat, _In_ DWORD Flags, _In_ DHSURF dhsurfGroup, _In_ DWORD DxFormat,#if (NTDDI_VERSION >= NTDDI_WIN8) _In_ DWORD SubresourceIndex,#endif /* (NTDDI_VERSION >= NTDDI_WIN8) */ _Out_ HANDLE* phSharedSurface);typedef FN_DrvCreateDeviceBitmapEx *PFN_DrvCreateDeviceBitmapEx;extern FN_DrvCreateDeviceBitmapEx DrvCreateDeviceBitmapEx;
typedef VOID(APIENTRY FN_DrvDeleteDeviceBitmapEx)( _Inout_ DHSURF);typedef FN_DrvDeleteDeviceBitmapEx *PFN_DrvDeleteDeviceBitmapEx;extern FN_DrvDeleteDeviceBitmapEx DrvDeleteDeviceBitmapEx;
typedef BOOL(APIENTRY FN_DrvAssociateSharedSurface)( _In_ SURFOBJ* psoSurf, _In_ HANDLE hPhysicalSurface, _In_ HANDLE hLogicalSurface, _In_ SIZEL sizl);typedef FN_DrvAssociateSharedSurface *PFN_DrvAssociateSharedSurface;extern FN_DrvAssociateSharedSurface DrvAssociateSharedSurface;
typedef LONG(APIENTRY FN_DrvSynchronizeRedirectionBitmaps)( _In_ DHPDEV dhpdev, _Out_ UINT64* puiFenceID);typedef FN_DrvSynchronizeRedirectionBitmaps *PFN_DrvSynchronizeRedirectionBitmaps;extern FN_DrvSynchronizeRedirectionBitmaps DrvSynchronizeRedirectionBitmaps;
#define WINDDI_MAX_BROADCAST_CONTEXT 64typedef struct tagCDDDXGK_REDIRBITMAPPRESENTINFO{ UINT NumDirtyRects; PRECT DirtyRect; UINT NumContexts; HANDLE hContext[WINDDI_MAX_BROADCAST_CONTEXT+1];} CDDDXGK_REDIRBITMAPPRESENTINFO;
typedef BOOL(APIENTRY FN_DrvAccumulateD3DDirtyRect)( _In_ SURFOBJ* psoSurf, _In_ CDDDXGK_REDIRBITMAPPRESENTINFO* pDirty);typedef FN_DrvAccumulateD3DDirtyRect *PFN_DrvAccumulateD3DDirtyRect;extern FN_DrvAccumulateD3DDirtyRect DrvAccumulateD3DDirtyRect;
typedef BOOL(APIENTRY FN_DrvStartDxInterop)( _In_ SURFOBJ* psoSurf, _In_ BOOL bDiscard, _In_ PVOID KernelModeDeviceHandle);typedef FN_DrvStartDxInterop *PFN_DrvStartDxInterop;extern FN_DrvStartDxInterop DrvStartDxInterop;
typedef BOOL(APIENTRY FN_DrvEndDxInterop)( _In_ SURFOBJ* psoSurf, _In_ BOOL bDiscard, _Out_ BOOL* bDeviceLost, _In_ PVOID KernelModeDeviceHandle);typedef FN_DrvEndDxInterop *PFN_DrvEndDxInterop;extern FN_DrvEndDxInterop DrvEndDxInterop;
typedef VOID(APIENTRY FN_DrvLockDisplayArea)( _In_ DHPDEV dhpdev, _In_opt_ RECTL *prcl);typedef FN_DrvLockDisplayArea *PFN_DrvLockDisplayArea;extern FN_DrvLockDisplayArea DrvLockDisplayArea;
typedef VOID(APIENTRY FN_DrvUnlockDisplayArea)( _In_ DHPDEV dhpdev, _In_opt_ RECTL *prcl);typedef FN_DrvUnlockDisplayArea *PFN_DrvUnlockDisplayArea;extern FN_DrvUnlockDisplayArea DrvUnlockDisplayArea;
#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
#ifdef __cplusplus}#endif
#endif /* defined __VIDEO_H__ */
#endif /* _WINDDI_ */