Author: tkreuzer
Date: Tue Jan 10 14:47:43 2012
New Revision: 54900
URL:
http://svn.reactos.org/svn/reactos?rev=54900&view=rev
Log:
[PSDK]
- add annotations to winddi.h
- use function types for Drv* declarations
Modified:
trunk/reactos/include/psdk/winddi.h
Modified: trunk/reactos/include/psdk/winddi.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/winddi.h?rev=…
==============================================================================
--- trunk/reactos/include/psdk/winddi.h [iso-8859-1] (original)
+++ trunk/reactos/include/psdk/winddi.h [iso-8859-1] Tue Jan 10 14:47:43 2012
@@ -7,6 +7,7 @@
*
* Contributors:
* Created by Casper S. Hornstrup <chorns(a)users.sourceforge.net>
+ * Annotations by Timo Kreuzer <timo.kreuzer(a)reactos.org>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
@@ -29,6 +30,7 @@
#include <ddrawint.h>
#include <d3dnthal.h>
+#include <specstrings.h>
#ifdef __cplusplus
extern "C" {
@@ -322,7 +324,7 @@
typedef BOOL
(APIENTRY CALLBACK *FREEOBJPROC)(
- IN struct _DRIVEROBJ *pDriverObj);
+ _In_ struct _DRIVEROBJ *pDriverObj);
typedef struct _DRIVEROBJ {
PVOID pvObj;
@@ -1039,7 +1041,6 @@
} STROBJ;
-
/* SURFOBJ.iType constants */
#define STYPE_BITMAP 0L
#define STYPE_DEVICE 1L
@@ -1127,42 +1128,42 @@
#define WOC_SPRITE_NO_OVERLAP 0x00000100
typedef VOID (APIENTRY CALLBACK *WNDOBJCHANGEPROC)(
- IN WNDOBJ *pwo,
- IN FLONG fl);
+ _In_ WNDOBJ *pwo,
+ _In_ FLONG fl);
WIN32KAPI
HANDLE
APIENTRY
BRUSHOBJ_hGetColorTransform(
- IN BRUSHOBJ *pbo);
+ _In_ BRUSHOBJ *pbo);
WIN32KAPI
PVOID
APIENTRY
BRUSHOBJ_pvAllocRbrush(
- IN BRUSHOBJ *pbo,
- IN ULONG cj);
+ _In_ BRUSHOBJ *pbo,
+ _In_ ULONG cj);
WIN32KAPI
PVOID
APIENTRY
BRUSHOBJ_pvGetRbrush(
- IN BRUSHOBJ *pbo);
+ _In_ BRUSHOBJ *pbo);
WIN32KAPI
ULONG
APIENTRY
BRUSHOBJ_ulGetBrushColor(
- IN BRUSHOBJ *pbo);
+ _In_ BRUSHOBJ *pbo);
WIN32KAPI
BOOL
APIENTRY
CLIPOBJ_bEnum(
- IN CLIPOBJ *pco,
- IN ULONG cj,
- OUT ULONG *pv);
+ _In_ CLIPOBJ *pco,
+ _In_ ULONG cj,
+ _Out_bytecap_(cj) ULONG *pul);
/* CLIPOBJ_cEnumStart.iType constants */
#define CT_RECTANGLES 0L
@@ -1180,61 +1181,68 @@
ULONG
APIENTRY
CLIPOBJ_cEnumStart(
- IN CLIPOBJ *pco,
- IN BOOL bAll,
- IN ULONG iType,
- IN ULONG iDirection,
- IN ULONG cLimit);
+ _Inout_ CLIPOBJ *pco,
+ _In_ BOOL bAll,
+ _In_ ULONG iType,
+ _In_ ULONG iDirection,
+ _In_ ULONG cLimit);
WIN32KAPI
PATHOBJ*
APIENTRY
CLIPOBJ_ppoGetPath(
- IN CLIPOBJ *pco);
+ _In_ CLIPOBJ *pco);
WIN32KAPI
VOID
APIENTRY
EngAcquireSemaphore(
- IN HSEMAPHORE hsem);
+ _Inout_ HSEMAPHORE hsem);
#define FL_ZERO_MEMORY 0x00000001
#define FL_NONPAGED_MEMORY 0x00000002
+_Must_inspect_result_
+_When_(fl & FL_ZERO_MEMORY, _Ret_opt_bytecount_(cjMemSize))
+_When_(!(fl & FL_ZERO_MEMORY), _Ret_opt_bytecap_(cjMemSize))
WIN32KAPI
PVOID
APIENTRY
EngAllocMem(
- IN ULONG Flags,
- IN ULONG MemSize,
- IN ULONG Tag);
-
+ _In_ ULONG fl,
+ _In_ ULONG cjMemSize,
+ _In_ ULONG ulTag);
+
+_Must_inspect_result_
+_Ret_opt_bytecount_(cj)
WIN32KAPI
PVOID
APIENTRY
EngAllocPrivateUserMem(
- IN PDD_SURFACE_LOCAL psl,
- IN SIZE_T cj,
- IN ULONG tag);
-
+ _In_ PDD_SURFACE_LOCAL psl,
+ _In_ SIZE_T cjMemSize,
+ _In_ ULONG ulTag);
+
+_Must_inspect_result_
+_Ret_opt_bytecount_(cjMemSize)
WIN32KAPI
PVOID
APIENTRY
EngAllocUserMem(
- IN SIZE_T cj,
- IN ULONG tag);
+ _In_ SIZE_T cjMemSize,
+ _In_ ULONG ulTag);
WIN32KAPI
BOOL
APIENTRY
EngAlphaBlend(
- IN SURFOBJ *psoDest,
- IN SURFOBJ *psoSrc,
- IN CLIPOBJ *pco,
- IN XLATEOBJ *pxlo,
- IN RECTL *prclDest,
- IN RECTL *prclSrc,
- IN BLENDOBJ *pBlendObj);
+ _Inout_ SURFOBJ *psoDest,
+ _In_ SURFOBJ *psoSrc,
+ _In_ CLIPOBJ *pco,
+ _In_opt_ XLATEOBJ *pxlo,
+ _In_ RECTL *prclDest,
+ _In_ RECTL *prclSrc,
+ _In_ BLENDOBJ *pBlendObj);
/* EngAssociateSurface.flHooks constants */
#define HOOK_BITBLT 0x00000001
@@ -1260,45 +1268,45 @@
BOOL
APIENTRY
EngAssociateSurface(
- IN HSURF hsurf,
- IN HDEV hdev,
- IN FLONG flHooks);
+ _In_ HSURF hsurf,
+ _In_ HDEV hdev,
+ _In_ FLONG flHooks);
WIN32KAPI
BOOL
APIENTRY
EngBitBlt(
- IN SURFOBJ *psoTrg,
- IN SURFOBJ *psoSrc,
- IN SURFOBJ *psoMask,
- IN CLIPOBJ *pco,
- IN XLATEOBJ *pxlo,
- IN RECTL *prclTrg,
- IN POINTL *pptlSrc,
- IN POINTL *pptlMask,
- IN BRUSHOBJ *pbo,
- IN POINTL *pptlBrush,
- IN ROP4 rop4);
+ _Inout_ SURFOBJ *psoTrg,
+ _In_opt_ SURFOBJ *psoSrc,
+ _In_opt_ SURFOBJ *psoMask,
+ _In_ CLIPOBJ *pco,
+ _In_opt_ XLATEOBJ *pxlo,
+ _In_ RECTL *prclTrg,
+ _When_(psoSrc, _In_) POINTL *pptlSrc,
+ _When_(psoMask, _In_) POINTL *pptlMask,
+ _In_opt_ BRUSHOBJ *pbo,
+ _In_opt_ POINTL *pptlBrush,
+ _In_ ROP4 rop4);
WIN32KAPI
BOOL
APIENTRY
EngCheckAbort(
- IN SURFOBJ *pso);
+ _In_ SURFOBJ *pso);
WIN32KAPI
VOID
APIENTRY
EngClearEvent(
- IN PEVENT pEvent);
+ _In_ PEVENT pEvent);
WIN32KAPI
FD_GLYPHSET*
APIENTRY
EngComputeGlyphSet(
- IN INT nCodePage,
- IN INT nFirstChar,
- IN INT cChars);
+ _In_ INT nCodePage,
+ _In_ INT nFirstChar,
+ _In_ INT cChars);
/* EngControlSprites.fl constants */
#define ECS_TEARDOWN 0x00000001
@@ -1308,67 +1316,66 @@
BOOL
APIENTRY
EngControlSprites(
- IN WNDOBJ *pwo,
- IN FLONG fl);
+ _Inout_ WNDOBJ *pwo,
+ _In_ FLONG fl);
WIN32KAPI
BOOL
APIENTRY
EngCopyBits(
- OUT SURFOBJ *psoDest,
- IN SURFOBJ *psoSrc,
- IN CLIPOBJ *pco,
- IN XLATEOBJ *pxlo,
- IN RECTL *prclDest,
- IN POINTL *pptlSrc);
+ _In_ SURFOBJ *psoDest,
+ _In_ SURFOBJ *psoSrc,
+ _In_ CLIPOBJ *pco,
+ _In_ XLATEOBJ *pxlo,
+ _In_ RECTL *prclDest,
+ _In_ POINTL *pptlSrc);
WIN32KAPI
HBITMAP
APIENTRY
EngCreateBitmap(
- IN SIZEL sizl,
- IN LONG lWidth,
- IN ULONG iFormat,
- IN FLONG fl,
- IN PVOID pvBits);
+ _In_ SIZEL sizl,
+ _In_ LONG lWidth,
+ _In_ ULONG iFormat,
+ _In_ FLONG fl,
+ _In_ PVOID pvBits);
WIN32KAPI
CLIPOBJ*
APIENTRY
-EngCreateClip(
- VOID);
+EngCreateClip(VOID);
WIN32KAPI
HBITMAP
APIENTRY
EngCreateDeviceBitmap(
- IN DHSURF dhsurf,
- IN SIZEL sizl,
- IN ULONG iFormatCompat);
-
+ _In_ DHSURF dhsurf,
+ _In_ SIZEL sizl,
+ _In_ ULONG iFormatCompat);
+
+_Must_inspect_result_
WIN32KAPI
HSURF
APIENTRY
EngCreateDeviceSurface(
- DHSURF dhsurf,
- SIZEL sizl,
- ULONG iFormatCompat);
-
-#if 0
+ _In_ DHSURF dhsurf,
+ _In_ SIZEL sizl,
+ _In_ ULONG iFormatCompat);
+
+_Must_inspect_result_
WIN32KAPI
HDRVOBJ
APIENTRY
EngCreateDriverObj(
- PVOID pvObj,
- FREEOBJPROC pFreeObjProc,
- HDEV hdev);
-#endif
+ _In_ PVOID pvObj,
+ _In_opt_ FREEOBJPROC pFreeObjProc,
+ _In_ HDEV hdev);
WIN32KAPI
BOOL
APIENTRY
EngCreateEvent(
- OUT PEVENT *ppEvent);
+ _Deref_out_opt_ PEVENT *ppEvent);
/* EngCreatePalette.iMode constants */
#define PAL_INDEXED 0x00000001
@@ -1377,28 +1384,27 @@
#define PAL_BGR 0x00000008
#define PAL_CMYK 0x00000010
+_Must_inspect_result_
WIN32KAPI
HPALETTE
APIENTRY
EngCreatePalette(
- IN ULONG iMode,
- IN ULONG cColors,
- IN ULONG *pulColors,
- IN FLONG flRed,
- IN FLONG flGreen,
- IN FLONG flBlue);
+ _In_ ULONG iMode,
+ _In_ ULONG cColors,
+ _In_ ULONG *pulColors,
+ _In_ FLONG flRed,
+ _In_ FLONG flGreen,
+ _In_ FLONG flBlue);
WIN32KAPI
PATHOBJ*
APIENTRY
-EngCreatePath(
- VOID);
+EngCreatePath(VOID);
WIN32KAPI
HSEMAPHORE
APIENTRY
-EngCreateSemaphore(
- VOID);
+EngCreateSemaphore(VOID);
/* EngCreateWnd.fl constants */
#define WO_RGN_CLIENT_DELTA 0x00000001
@@ -1411,166 +1417,170 @@
#define WO_SPRITE_NOTIFY 0x00000080
#define WO_RGN_DESKTOP_COORD 0x00000100
+_Must_inspect_result_
WIN32KAPI
WNDOBJ*
APIENTRY
EngCreateWnd(
- SURFOBJ *pso,
- HWND hwnd,
- WNDOBJCHANGEPROC pfn,
- FLONG fl,
- int iPixelFormat);
-
-WIN32KAPI
-VOID
-APIENTRY
-EngDebugBreak(
- VOID);
+ _In_ SURFOBJ *pso,
+ _In_ HWND hwnd,
+ _In_ WNDOBJCHANGEPROC pfn,
+ _In_ FLONG fl,
+ _In_ INT iPixelFormat);
+
+WIN32KAPI
+VOID
+APIENTRY
+EngDebugBreak(VOID);
WIN32KAPI
VOID
APIENTRY
EngDebugPrint(
- IN PCHAR StandardPrefix,
- IN PCHAR DebugMessage,
- IN va_list ap);
+ _In_z_ PCHAR StandardPrefix,
+ _In_z_ PCHAR DebugMessage,
+ _In_ va_list ap);
WIN32KAPI
VOID
APIENTRY
EngDeleteClip(
- IN CLIPOBJ *pco);
+ _In_ CLIPOBJ *pco);
WIN32KAPI
BOOL
APIENTRY
EngDeleteDriverObj(
- IN HDRVOBJ hdo,
- IN BOOL bCallBack,
- IN BOOL bLocked);
+ _In_ HDRVOBJ hdo,
+ _In_ BOOL bCallBack,
+ _In_ BOOL bLocked);
WIN32KAPI
BOOL
APIENTRY
EngDeleteEvent(
- IN PEVENT pEvent);
+ _In_ PEVENT pEvent);
WIN32KAPI
BOOL
APIENTRY
EngDeleteFile(
- IN LPWSTR pwszFileName);
+ _In_ LPWSTR pwszFileName);
WIN32KAPI
BOOL
APIENTRY
EngDeletePalette(
- IN HPALETTE hpal);
+ _In_ HPALETTE hpal);
WIN32KAPI
VOID
APIENTRY
EngDeletePath(
- IN PATHOBJ *ppo);
+ _Inout_ PATHOBJ *ppo);
WIN32KAPI
VOID
APIENTRY
EngDeleteSafeSemaphore(
- IN OUT ENGSAFESEMAPHORE *pssem);
+ _Inout_ ENGSAFESEMAPHORE *pssem);
WIN32KAPI
VOID
APIENTRY
EngDeleteSemaphore(
- IN OUT HSEMAPHORE hsem);
+ _Inout_ HSEMAPHORE hsem);
WIN32KAPI
BOOL
APIENTRY
EngDeleteSurface(
- IN HSURF hsurf);
+ _In_ HSURF hsurf);
WIN32KAPI
VOID
APIENTRY
EngDeleteWnd(
- IN WNDOBJ *pwo);
+ _Inout_ WNDOBJ *pwo);
WIN32KAPI
DWORD
APIENTRY
EngDeviceIoControl(
- IN HANDLE hDevice,
- IN DWORD dwIoControlCode,
- IN LPVOID lpInBuffer,
- IN DWORD nInBufferSize,
- IN OUT LPVOID lpOutBuffer,
- IN DWORD nOutBufferSize,
- OUT LPDWORD lpBytesReturned);
+ _In_ HANDLE hDevice,
+ _In_ DWORD dwIoControlCode,
+ _In_opt_bytecount_(cjInBufferSize) LPVOID lpInBuffer,
+ _In_ DWORD cjInBufferSize,
+ _Out_opt_bytecap_(cjOutBufferSize) LPVOID lpOutBuffer,
+ _In_ DWORD cjOutBufferSize,
+ _Out_ LPDWORD lpBytesReturned);
WIN32KAPI
ULONG
APIENTRY
EngDitherColor(
- IN HDEV hdev,
- IN ULONG iMode,
- IN ULONG rgb,
- OUT ULONG *pul);
+ _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);
WIN32KAPI
BOOL
APIENTRY
EngEnumForms(
- IN HANDLE hPrinter,
- IN DWORD Level,
- OUT LPBYTE pForm,
- IN DWORD cbBuf,
- OUT LPDWORD pcbNeeded,
- OUT LPDWORD pcReturned);
+ _In_ HANDLE hPrinter,
+ _In_ DWORD Level,
+ _Out_writes_bytes_opt_(cbBuf) LPBYTE pForm,
+ _In_ DWORD cbBuf,
+ _Out_ LPDWORD pcbNeeded,
+ _Out_ LPDWORD pcReturned);
WIN32KAPI
BOOL
APIENTRY
EngEraseSurface(
- IN SURFOBJ *pso,
- IN RECTL *prcl,
- IN ULONG iColor);
+ _In_ SURFOBJ *pso,
+ _In_ RECTL *prcl,
+ _In_ ULONG iColor);
WIN32KAPI
BOOL
APIENTRY
EngFillPath(
- IN SURFOBJ *pso,
- IN PATHOBJ *ppo,
- IN CLIPOBJ *pco,
- IN BRUSHOBJ *pbo,
- IN POINTL *pptlBrushOrg,
- IN MIX mix,
- IN FLONG flOptions);
+ _Inout_ SURFOBJ *pso,
+ _In_ PATHOBJ *ppo,
+ _In_ CLIPOBJ *pco,
+ _In_ BRUSHOBJ *pbo,
+ _In_ POINTL *pptlBrushOrg,
+ _In_ MIX mix,
+ _In_ FLONG flOptions);
WIN32KAPI
PVOID
APIENTRY
EngFindImageProcAddress(
- IN HANDLE hModule,
- IN LPSTR lpProcName);
+ _In_ HANDLE hModule,
+ _In_ LPSTR lpProcName);
WIN32KAPI
PVOID
APIENTRY
EngFindResource(
- IN HANDLE h,
- IN int iName,
- IN int iType,
- OUT PULONG pulSize);
-
+ _In_ HANDLE h,
+ _In_ INT iName,
+ _In_ INT iType,
+ _Out_ PULONG pulSize);
+
+_Must_inspect_result_
+_Ret_opt_bytecap_(cjSize)
WIN32KAPI
PVOID
APIENTRY
EngFntCacheAlloc(
- IN ULONG FastCheckSum,
- IN ULONG ulSize);
+ _In_ ULONG ulFastCheckSum,
+ _In_ ULONG cjSize);
/* EngFntCacheFault.iFaultMode constants */
#define ENG_FNT_CACHE_READ_FAULT 0x00000001
@@ -1580,166 +1590,163 @@
VOID
APIENTRY
EngFntCacheFault(
- IN ULONG ulFastCheckSum,
- IN ULONG iFaultMode);
+ _In_ ULONG ulFastCheckSum,
+ _In_ ULONG iFaultMode);
WIN32KAPI
PVOID
APIENTRY
EngFntCacheLookUp(
- IN ULONG FastCheckSum,
- OUT ULONG *pulSize);
+ _In_ ULONG FastCheckSum,
+ _Out_ ULONG *pulSize);
WIN32KAPI
VOID
APIENTRY
EngFreeMem(
- IN PVOID Mem);
+ _In_ _Post_ptr_invalid_ PVOID pv);
WIN32KAPI
VOID
APIENTRY
EngFreeModule(
- IN HANDLE h);
+ _In_ HANDLE h);
WIN32KAPI
VOID
APIENTRY
EngFreePrivateUserMem(
- IN PDD_SURFACE_LOCAL psl,
- IN PVOID pv);
+ _In_ PDD_SURFACE_LOCAL psl,
+ _In_ _Post_ptr_invalid_ PVOID pv);
WIN32KAPI
VOID
APIENTRY
EngFreeUserMem(
- IN PVOID pv);
+ _In_ _Post_ptr_invalid_ PVOID pv);
WIN32KAPI
VOID
APIENTRY
EngGetCurrentCodePage(
- OUT PUSHORT OemCodePage,
- OUT PUSHORT AnsiCodePage);
+ _Out_ PUSHORT OemCodePage,
+ _Out_ PUSHORT AnsiCodePage);
WIN32KAPI
HANDLE
APIENTRY
-EngGetCurrentProcessId(
- VOID);
+EngGetCurrentProcessId(VOID);
WIN32KAPI
HANDLE
APIENTRY
-EngGetCurrentThreadId(
- VOID);
-
+EngGetCurrentThreadId(VOID);
+
+_Must_inspect_result_ _Ret_z_
WIN32KAPI
LPWSTR
APIENTRY
EngGetDriverName(
- IN HDEV hdev);
+ _In_ HDEV hdev);
WIN32KAPI
BOOL
APIENTRY
EngGetFileChangeTime(
- IN HANDLE h,
- OUT LARGE_INTEGER *pChangeTime);
+ _In_ HANDLE h,
+ _Out_ LARGE_INTEGER *pChangeTime);
WIN32KAPI
BOOL
APIENTRY
EngGetFilePath(
- IN HANDLE h,
- OUT WCHAR (*pDest)[MAX_PATH+1]);
+ _In_ HANDLE h,
+ _Out_ WCHAR (*pDest)[MAX_PATH+1]);
WIN32KAPI
BOOL
APIENTRY
EngGetForm(
- IN HANDLE hPrinter,
- IN LPWSTR pFormName,
- IN DWORD Level,
- OUT LPBYTE pForm,
- IN DWORD cbBuf,
- OUT LPDWORD pcbNeeded);
+ _In_ HANDLE hPrinter,
+ _In_ LPWSTR pFormName,
+ _In_ DWORD Level,
+ _In_reads_bytes_opt_(cbBuf) LPBYTE pForm,
+ _In_ DWORD cbBuf,
+ _Out_ LPDWORD pcbNeeded);
WIN32KAPI
ULONG
APIENTRY
-EngGetLastError(
- VOID);
+EngGetLastError(VOID);
WIN32KAPI
BOOL
APIENTRY
EngGetPrinter(
- IN HANDLE hPrinter,
- IN DWORD dwLevel,
- OUT LPBYTE pPrinter,
- IN DWORD cbBuf,
- OUT LPDWORD pcbNeeded);
+ _In_ HANDLE hPrinter,
+ _In_ DWORD dwLevel,
+ _Out_writes_bytes_opt_(cbBuf) LPBYTE pPrinter,
+ _In_ DWORD cbBuf,
+ _Out_ LPDWORD pcbNeeded);
WIN32KAPI
DWORD
APIENTRY
EngGetPrinterData(
- IN HANDLE hPrinter,
- IN LPWSTR pValueName,
- OUT LPDWORD pType,
- OUT LPBYTE pData,
- IN DWORD nSize,
- OUT LPDWORD pcbNeeded);
+ _In_ HANDLE hPrinter,
+ _In_ LPWSTR pValueName,
+ _Out_opt_ LPDWORD pType,
+ _Out_writes_bytes_opt_(cjSize) LPBYTE pData,
+ _In_ DWORD cjSize,
+ _Out_ LPDWORD pcjNeeded);
WIN32KAPI
LPWSTR
APIENTRY
EngGetPrinterDataFileName(
- IN HDEV hdev);
+ _In_ HDEV hdev);
WIN32KAPI
BOOL
APIENTRY
EngGetPrinterDriver(
- IN HANDLE hPrinter,
- IN LPWSTR pEnvironment,
- IN DWORD dwLevel,
- OUT BYTE *lpbDrvInfo,
- IN DWORD cbBuf,
- OUT DWORD *pcbNeeded);
+ _In_ HANDLE hPrinter,
+ _In_opt_ LPWSTR pEnvironment,
+ _In_ DWORD dwLevel,
+ _Out_writes_bytes_opt_(cjBufSize) BYTE *lpbDrvInfo,
+ _In_ DWORD cjBufSize,
+ _Out_ DWORD *pcjNeeded);
WIN32KAPI
HANDLE
APIENTRY
-EngGetProcessHandle(
- VOID);
+EngGetProcessHandle(VOID);
WIN32KAPI
BOOL
APIENTRY
EngGetType1FontList(
- IN HDEV hdev,
- OUT TYPE1_FONT *pType1Buffer,
- IN ULONG cjType1Buffer,
- OUT PULONG pulLocalFonts,
- OUT PULONG pulRemoteFonts,
- OUT LARGE_INTEGER *pLastModified);
+ _In_ HDEV hdev,
+ _Out_writes_bytes_opt_(cjType1Buffer) TYPE1_FONT *pType1Buffer,
+ _In_ ULONG cjType1Buffer,
+ _Out_ PULONG pulLocalFonts,
+ _Out_ PULONG pulRemoteFonts,
+ _Out_ LARGE_INTEGER *pLastModified);
WIN32KAPI
BOOL
APIENTRY
EngGradientFill(
- IN SURFOBJ *psoDest,
- IN CLIPOBJ *pco,
- IN XLATEOBJ *pxlo,
- IN TRIVERTEX *pVertex,
- IN ULONG nVertex,
- IN PVOID pMesh,
- IN ULONG nMesh,
- IN RECTL *prclExtents,
- IN POINTL *pptlDitherOrg,
- IN ULONG ulMode);
+ _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
@@ -1749,130 +1756,131 @@
ULONG
APIENTRY
EngHangNotification(
- IN HDEV hDev,
- IN PVOID Reserved);
+ _In_ HDEV hDev,
+ _Reserved_ PVOID Reserved);
WIN32KAPI
BOOL
APIENTRY
EngInitializeSafeSemaphore(
- OUT ENGSAFESEMAPHORE *pssem);
+ _Out_ ENGSAFESEMAPHORE *pssem);
WIN32KAPI
BOOL
APIENTRY
EngIsSemaphoreOwned(
- IN HSEMAPHORE hsem);
+ _In_ HSEMAPHORE hsem);
WIN32KAPI
BOOL
APIENTRY
EngIsSemaphoreOwnedByCurrentThread(
- IN HSEMAPHORE hsem);
+ _In_ HSEMAPHORE hsem);
WIN32KAPI
BOOL
APIENTRY
EngLineTo(
- SURFOBJ *pso,
- CLIPOBJ *pco,
- BRUSHOBJ *pbo,
- LONG x1,
- LONG y1,
- LONG x2,
- LONG y2,
- RECTL *prclBounds,
- MIX mix);
+ _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);
WIN32KAPI
HANDLE
APIENTRY
EngLoadImage(
- IN LPWSTR pwszDriver);
+ _In_ LPWSTR pwszDriver);
WIN32KAPI
HANDLE
APIENTRY
EngLoadModule(
- IN LPWSTR pwsz);
+ _In_ LPWSTR pwsz);
WIN32KAPI
HANDLE
APIENTRY
EngLoadModuleForWrite(
- IN LPWSTR pwsz,
- IN ULONG cjSizeOfModule);
+ _In_ LPWSTR pwsz,
+ _In_ ULONG cjSizeOfModule);
WIN32KAPI
PDD_SURFACE_LOCAL
APIENTRY
EngLockDirectDrawSurface(
- IN HANDLE hSurface);
+ _In_ HANDLE hSurface);
WIN32KAPI
DRIVEROBJ*
APIENTRY
EngLockDriverObj(
- IN HDRVOBJ hdo);
+ _In_ HDRVOBJ hdo);
WIN32KAPI
SURFOBJ*
APIENTRY
EngLockSurface(
- IN HSURF hsurf);
-
-WIN32KAPI
-BOOL
-APIENTRY
-EngLpkInstalled(
- VOID);
+ _In_ HSURF hsurf);
+
+WIN32KAPI
+BOOL
+APIENTRY
+EngLpkInstalled(VOID);
WIN32KAPI
PEVENT
APIENTRY
EngMapEvent(
- IN HDEV hDev,
- IN HANDLE hUserObject,
- IN PVOID Reserved1,
- IN PVOID Reserved2,
- IN PVOID Reserved3);
-
+ _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)))
WIN32KAPI
PVOID
APIENTRY
EngMapFile(
- IN LPWSTR pwsz,
- IN ULONG cjSize,
- OUT ULONG_PTR *piFile);
+ _In_ LPWSTR pwsz,
+ _In_ ULONG cjSize,
+ _Out_ ULONG_PTR *piFile);
WIN32KAPI
BOOL
APIENTRY
EngMapFontFile(
- ULONG_PTR iFile,
- PULONG *ppjBuf,
- ULONG *pcjBuf);
+ _In_ ULONG_PTR iFile,
+ _Outptr_result_bytebuffer_(*pcjBuf) PULONG *ppjBuf,
+ _Out_ ULONG *pcjBuf);
WIN32KAPI
BOOL
APIENTRY
EngMapFontFileFD(
- IN ULONG_PTR iFile,
- OUT PULONG *ppjBuf,
- OUT ULONG *pcjBuf);
+ _In_ ULONG_PTR iFile,
+ _Outptr_result_bytebuffer_(*pcjBuf) PULONG *ppjBuf,
+ _Out_ ULONG *pcjBuf);
WIN32KAPI
PVOID
APIENTRY
EngMapModule(
- IN HANDLE h,
- OUT PULONG pSize);
+ _In_ HANDLE h,
+ _Out_ PULONG pSize);
WIN32KAPI
BOOL
APIENTRY
EngMarkBandingSurface(
- IN HSURF hsurf);
+ _In_ HSURF hsurf);
/* EngModifySurface.flSurface constants */
#define MS_NOTSYSTEMMEMORY 0x00000001
@@ -1882,93 +1890,101 @@
BOOL
APIENTRY
EngModifySurface(
- IN HSURF hsurf,
- IN HDEV hdev,
- IN FLONG flHooks,
- IN FLONG flSurface,
- IN DHSURF dhsurf,
- IN VOID *pvScan0,
- IN LONG lDelta,
- IN VOID *pvReserved);
+ _In_ HSURF hsurf,
+ _In_ HDEV hdev,
+ _In_ FLONG flHooks,
+ _In_ FLONG flSurface,
+ _In_ DHSURF dhsurf,
+ _In_ PVOID pvScan0,
+ _In_ LONG lDelta,
+ _Reserved_ PVOID pvReserved);
WIN32KAPI
VOID
APIENTRY
EngMovePointer(
- IN SURFOBJ *pso,
- IN LONG x,
- IN LONG y,
- IN RECTL *prcl);
-
-WIN32KAPI
-int
+ _In_ SURFOBJ *pso,
+ _In_ LONG x,
+ _In_ LONG y,
+ _In_ RECTL *prcl);
+
+WIN32KAPI
+INT
APIENTRY
EngMulDiv(
- IN int a,
- IN int b,
- IN int c);
+ _In_ INT a,
+ _In_ INT b,
+ _In_ INT c);
WIN32KAPI
VOID
APIENTRY
EngMultiByteToUnicodeN(
- OUT LPWSTR UnicodeString,
- IN ULONG MaxBytesInUnicodeString,
- OUT PULONG BytesInUnicodeString,
- IN PCHAR MultiByteString,
- IN ULONG BytesInMultiByteString);
+ _Out_writes_bytes_to_(MaxBytesInUnicodeString, *BytesInUnicodeString) LPWSTR
UnicodeString,
+ _In_ ULONG MaxBytesInUnicodeString,
+ _Out_opt_ PULONG BytesInUnicodeString,
+ _In_reads_bytes_(BytesInMultiByteString) PCHAR MultiByteString,
+ _In_ ULONG BytesInMultiByteString);
WIN32KAPI
INT
APIENTRY
EngMultiByteToWideChar(
- IN UINT CodePage,
- OUT LPWSTR WideCharString,
- IN INT BytesInWideCharString,
- IN LPSTR MultiByteString,
- IN INT BytesInMultiByteString);
+ _In_ UINT CodePage,
+ _Out_writes_bytes_opt_(cjWideCharString) LPWSTR WideCharString,
+ _In_ INT cjWideCharString,
+ _In_reads_bytes_opt_(cjMultiByteString) LPSTR MultiByteString,
+ _In_ INT cjMultiByteString);
WIN32KAPI
BOOL
APIENTRY
EngPaint(
- IN SURFOBJ *pso,
- IN CLIPOBJ *pco,
- IN BRUSHOBJ *pbo,
- IN POINTL *pptlBrushOrg,
- IN MIX mix);
+ _In_ SURFOBJ *pso,
+ _In_ CLIPOBJ *pco,
+ _In_ BRUSHOBJ *pbo,
+ _In_ POINTL *pptlBrushOrg,
+ _In_ MIX mix);
WIN32KAPI
BOOL
APIENTRY
EngPlgBlt(
- IN SURFOBJ *psoTrg,
- IN SURFOBJ *psoSrc,
- IN SURFOBJ *psoMsk,
- IN CLIPOBJ *pco,
- IN XLATEOBJ *pxlo,
- IN COLORADJUSTMENT *pca,
- IN POINTL *pptlBrushOrg,
- IN POINTFIX *pptfx,
- IN RECTL *prcl,
- IN POINTL *pptl,
- IN ULONG iMode);
+ _In_ SURFOBJ *psoTrg,
+ _In_ SURFOBJ *psoSrc,
+ _In_opt_ SURFOBJ *psoMsk,
+ _In_ CLIPOBJ *pco,
+ _In_ XLATEOBJ *pxlo,
+ _In_ COLORADJUSTMENT *pca,
+ _In_ POINTL *pptlBrushOrg,
+ _In_ POINTFIX *pptfx,
+ _In_ RECTL *prcl,
+ _When_(psoMsk, _In_) POINTL *pptl,
+ _In_ ULONG iMode);
WIN32KAPI
VOID
APIENTRY
EngProbeForRead(
- IN PVOID Address,
- IN ULONG Length,
- IN ULONG Alignment);
+ _In_reads_bytes_(Length) PVOID Address,
+#if (NTDDI_VERSION <= NTDDI_WINXP)
+ _In_ ULONG Length,
+#else
+ _In_ SIZE_T Length,
+#endif
+ _In_ ULONG Alignment);
WIN32KAPI
VOID
APIENTRY
EngProbeForReadAndWrite(
- IN PVOID Address,
- IN ULONG Length,
- IN ULONG Alignment);
+ _Inout_updates_bytes_(Length) PVOID Address,
+#if (NTDDI_VERSION <= NTDDI_WINXP)
+ _In_ ULONG Length,
+#else
+ _In_ SIZE_T Length,
+#endif
+ _In_ ULONG Alignment);
typedef enum _ENG_DEVICE_ATTRIBUTE {
QDA_RESERVED = 0,
@@ -1979,45 +1995,45 @@
BOOL
APIENTRY
EngQueryDeviceAttribute(
- IN HDEV hdev,
- IN ENG_DEVICE_ATTRIBUTE devAttr,
- IN VOID *pvIn,
- IN ULONG ulInSize,
- OUT VOID *pvOut,
- OUT ULONG ulOutSize);
+ _In_ HDEV hdev,
+ _In_ ENG_DEVICE_ATTRIBUTE devAttr,
+ _In_reads_bytes_(cjInSize) PVOID pvIn,
+ _In_ ULONG cjInSize,
+ _Out_writes_bytes_(cjOutSize) PVOID pvOut,
+ _Out_ ULONG cjOutSize);
WIN32KAPI
LARGE_INTEGER
APIENTRY
EngQueryFileTimeStamp(
- IN LPWSTR pwsz);
+ _In_ LPWSTR pwsz);
WIN32KAPI
VOID
APIENTRY
EngQueryLocalTime(
- OUT PENG_TIME_FIELDS ptf);
+ _Out_ PENG_TIME_FIELDS ptf);
WIN32KAPI
ULONG
APIENTRY
EngQueryPalette(
- IN HPALETTE hPal,
- OUT ULONG *piMode,
- IN ULONG cColors,
- OUT ULONG *pulColors);
+ _In_ HPALETTE hPal,
+ _Out_ ULONG *piMode,
+ _In_ ULONG cColors,
+ _Out_writes_opt_(cColors) ULONG *pulColors);
WIN32KAPI
VOID
APIENTRY
EngQueryPerformanceCounter(
- OUT LONGLONG *pPerformanceCount);
+ _Out_ LONGLONG *pPerformanceCount);
WIN32KAPI
VOID
APIENTRY
EngQueryPerformanceFrequency(
- OUT LONGLONG *pFrequency);
+ _Out_ LONGLONG *pFrequency);
typedef enum _ENG_SYSTEM_ATTRIBUTE {
EngProcessorFeature = 1,
@@ -2034,87 +2050,87 @@
BOOL
APIENTRY
EngQuerySystemAttribute(
- IN ENG_SYSTEM_ATTRIBUTE CapNum,
- OUT PDWORD pCapability);
+ _In_ ENG_SYSTEM_ATTRIBUTE CapNum,
+ _Out_ PDWORD pCapability);
WIN32KAPI
LONG
APIENTRY
EngReadStateEvent(
- IN PEVENT pEvent);
+ _In_ PEVENT pEvent);
WIN32KAPI
VOID
APIENTRY
EngReleaseSemaphore(
- IN HSEMAPHORE hsem);
+ _In_ HSEMAPHORE hsem);
WIN32KAPI
BOOL
APIENTRY
EngRestoreFloatingPointState(
- IN VOID *pBuffer);
+ _In_ VOID *pBuffer);
WIN32KAPI
ULONG
APIENTRY
EngSaveFloatingPointState(
- OUT VOID *pBuffer,
- IN ULONG cjBufferSize);
+ _Out_ VOID *pBuffer,
+ _In_ ULONG cjBufferSize);
WIN32KAPI
HANDLE
APIENTRY
EngSecureMem(
- IN PVOID Address,
- IN ULONG Length);
+ _In_reads_bytes_(cjLength) PVOID Address,
+ _In_ ULONG cjLength);
WIN32KAPI
LONG
APIENTRY
EngSetEvent(
- IN PEVENT pEvent);
+ _In_ PEVENT pEvent);
WIN32KAPI
VOID
APIENTRY
EngSetLastError(
- IN ULONG iError);
+ _In_ ULONG iError);
WIN32KAPI
ULONG
APIENTRY
EngSetPointerShape(
- IN SURFOBJ *pso,
- IN SURFOBJ *psoMask,
- IN SURFOBJ *psoColor,
- IN XLATEOBJ *pxlo,
- IN LONG xHot,
- IN LONG yHot,
- IN LONG x,
- IN LONG y,
- IN RECTL *prcl,
- IN FLONG fl);
+ _In_ SURFOBJ *pso,
+ _In_ SURFOBJ *psoMask,
+ _In_ SURFOBJ *psoColor,
+ _In_ XLATEOBJ *pxlo,
+ _In_ LONG xHot,
+ _In_ LONG yHot,
+ _In_ LONG x,
+ _In_ LONG y,
+ _In_ RECTL *prcl,
+ _In_ FLONG fl);
WIN32KAPI
BOOL
APIENTRY
EngSetPointerTag(
- IN HDEV hdev,
- IN SURFOBJ *psoMask,
- IN SURFOBJ *psoColor,
- IN XLATEOBJ *pxlo,
- IN FLONG fl);
+ _In_ HDEV hdev,
+ _In_ SURFOBJ *psoMask,
+ _In_ SURFOBJ *psoColor,
+ _In_ XLATEOBJ *pxlo,
+ _In_ FLONG fl);
WIN32KAPI
DWORD
APIENTRY
EngSetPrinterData(
- IN HANDLE hPrinter,
- IN LPWSTR pType,
- IN DWORD dwType,
- IN LPBYTE lpbPrinterData,
- IN DWORD cjPrinterData);
+ _In_ HANDLE hPrinter,
+ _In_ LPWSTR pType,
+ _In_ DWORD dwType,
+ _In_reads_bytes_(cjPrinterData) LPBYTE lpbPrinterData,
+ _In_ DWORD cjPrinterData);
typedef int (CDECL *SORTCOMP)(const void *pv1, const void *pv2);
@@ -2122,349 +2138,349 @@
VOID
APIENTRY
EngSort(
- IN OUT PBYTE pjBuf,
- IN ULONG c,
- IN ULONG cjElem,
- IN SORTCOMP pfnComp);
+ _Inout_updates_bytes_(c * cjElem) PBYTE pjBuf,
+ _In_ ULONG c,
+ _In_ ULONG cjElem,
+ _In_ SORTCOMP pfnComp);
WIN32KAPI
BOOL
APIENTRY
EngStretchBlt(
- IN SURFOBJ *psoDest,
- IN SURFOBJ *psoSrc,
- IN SURFOBJ *psoMask,
- IN CLIPOBJ *pco,
- IN XLATEOBJ *pxlo,
- IN COLORADJUSTMENT *pca,
- IN POINTL *pptlHTOrg,
- IN RECTL *prclDest,
- IN RECTL *prclSrc,
- IN POINTL *pptlMask,
- IN ULONG iMode);
+ _In_ SURFOBJ *psoDest,
+ _In_ SURFOBJ *psoSrc,
+ _In_opt_ SURFOBJ *psoMask,
+ _In_ CLIPOBJ *pco,
+ _In_ XLATEOBJ *pxlo,
+ _In_ COLORADJUSTMENT *pca,
+ _In_ POINTL *pptlHTOrg,
+ _In_ RECTL *prclDest,
+ _In_ RECTL *prclSrc,
+ _When_(psoMask, _In_) POINTL *pptlMask,
+ _In_ ULONG iMode);
WIN32KAPI
BOOL
APIENTRY
EngStretchBltROP(
- IN SURFOBJ *psoDest,
- IN SURFOBJ *psoSrc,
- IN SURFOBJ *psoMask,
- IN CLIPOBJ *pco,
- IN XLATEOBJ *pxlo,
- IN COLORADJUSTMENT *pca,
- IN POINTL *pptlHTOrg,
- IN RECTL *prclDest,
- IN RECTL *prclSrc,
- IN POINTL *pptlMask,
- IN ULONG iMode,
- IN BRUSHOBJ *pbo,
- IN DWORD rop4);
+ _In_ SURFOBJ *psoDest,
+ _In_ SURFOBJ *psoSrc,
+ _In_opt_ SURFOBJ *psoMask,
+ _In_ CLIPOBJ *pco,
+ _In_ XLATEOBJ *pxlo,
+ _In_ 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);
WIN32KAPI
BOOL
APIENTRY
EngStrokeAndFillPath(
- IN SURFOBJ *pso,
- IN PATHOBJ *ppo,
- IN CLIPOBJ *pco,
- IN XFORMOBJ *pxo,
- IN BRUSHOBJ *pboStroke,
- IN LINEATTRS *plineattrs,
- IN BRUSHOBJ *pboFill,
- IN POINTL *pptlBrushOrg,
- IN MIX mixFill,
- IN FLONG flOptions);
+ _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_ MIX mixFill,
+ _In_ FLONG flOptions);
WIN32KAPI
BOOL
APIENTRY
EngStrokePath(
- IN SURFOBJ *pso,
- IN PATHOBJ *ppo,
- IN CLIPOBJ *pco,
- IN XFORMOBJ *pxo,
- IN BRUSHOBJ *pbo,
- IN POINTL *pptlBrushOrg,
- IN LINEATTRS *plineattrs,
- IN MIX mix);
+ _In_ SURFOBJ *pso,
+ _In_ PATHOBJ *ppo,
+ _In_ CLIPOBJ *pco,
+ _In_ XFORMOBJ *pxo,
+ _In_ BRUSHOBJ *pbo,
+ _In_ POINTL *pptlBrushOrg,
+ _In_ LINEATTRS *plineattrs,
+ _In_ MIX mix);
WIN32KAPI
BOOL
APIENTRY
EngTextOut(
- IN SURFOBJ *pso,
- IN STROBJ *pstro,
- IN FONTOBJ *pfo,
- IN CLIPOBJ *pco,
- IN RECTL *prclExtra,
- IN RECTL *prclOpaque,
- IN BRUSHOBJ *pboFore,
- IN BRUSHOBJ *pboOpaque,
- IN POINTL *pptlOrg,
- IN MIX mix);
+ _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);
WIN32KAPI
BOOL
APIENTRY
EngTransparentBlt(
- IN SURFOBJ *psoDst,
- IN SURFOBJ *psoSrc,
- IN CLIPOBJ *pco,
- IN XLATEOBJ *pxlo,
- IN RECTL *prclDst,
- IN RECTL *prclSrc,
- IN ULONG iTransColor,
- IN ULONG ulReserved);
+ _In_ SURFOBJ *psoDst,
+ _In_ SURFOBJ *psoSrc,
+ _In_ CLIPOBJ *pco,
+ _In_ XLATEOBJ *pxlo,
+ _In_ RECTL *prclDst,
+ _In_ RECTL *prclSrc,
+ _In_ ULONG iTransColor,
+ _In_ ULONG ulReserved);
WIN32KAPI
VOID
APIENTRY
EngUnicodeToMultiByteN(
- OUT PCHAR MultiByteString,
- IN ULONG MaxBytesInMultiByteString,
- OUT PULONG BytesInMultiByteString,
- IN PWSTR UnicodeString,
- IN ULONG BytesInUnicodeString);
+ _Out_writes_bytes_to_(cjMultiByteBuf, *pcjMultiByteString) PCHAR pchMultiByteString,
+ _In_ ULONG cjMultiByteBuf,
+ _Out_opt_ PULONG pcjMultiByteString,
+ _In_reads_bytes_(cjUnicodeString) PWSTR pwszUnicodeString,
+ _In_ ULONG cjUnicodeString);
WIN32KAPI
VOID
APIENTRY
EngUnloadImage(
- IN HANDLE hModule);
+ _In_ HANDLE hModule);
WIN32KAPI
BOOL
APIENTRY
EngUnlockDirectDrawSurface(
- IN PDD_SURFACE_LOCAL pSurface);
+ _In_ PDD_SURFACE_LOCAL pSurface);
WIN32KAPI
BOOL
APIENTRY
EngUnlockDriverObj(
- IN HDRVOBJ hdo);
+ _In_ HDRVOBJ hdo);
WIN32KAPI
VOID
APIENTRY
EngUnlockSurface(
- IN SURFOBJ *pso);
+ _In_ SURFOBJ *pso);
WIN32KAPI
BOOL
APIENTRY
EngUnmapEvent(
- IN PEVENT pEvent);
+ _In_ PEVENT pEvent);
WIN32KAPI
BOOL
APIENTRY
EngUnmapFile(
- IN ULONG_PTR iFile);
+ _In_ ULONG_PTR iFile);
WIN32KAPI
VOID
APIENTRY
EngUnmapFontFile(
- ULONG_PTR iFile);
+ _In_ ULONG_PTR iFile);
WIN32KAPI
VOID
APIENTRY
EngUnmapFontFileFD(
- IN ULONG_PTR iFile);
+ _In_ ULONG_PTR iFile);
WIN32KAPI
VOID
APIENTRY
EngUnsecureMem(
- IN HANDLE hSecure);
+ _In_ HANDLE hSecure);
WIN32KAPI
BOOL
APIENTRY
EngWaitForSingleObject(
- IN PEVENT pEvent,
- IN PLARGE_INTEGER pTimeOut);
+ _In_ PEVENT pEvent,
+ _In_ PLARGE_INTEGER pTimeOut);
WIN32KAPI
INT
APIENTRY
EngWideCharToMultiByte(
- IN UINT CodePage,
- IN LPWSTR WideCharString,
- IN INT BytesInWideCharString,
- OUT LPSTR MultiByteString,
- IN INT BytesInMultiByteString);
+ _In_ UINT CodePage,
+ _In_reads_bytes_opt_(cjWideCharString) LPWSTR pwszWideCharString,
+ _In_ INT cjWideCharString,
+ _Out_z_bytecap_(cjMultiByteString) LPSTR pszMultiByteString,
+ _In_ INT cjMultiByteString);
WIN32KAPI
BOOL
APIENTRY
EngWritePrinter(
- IN HANDLE hPrinter,
- IN LPVOID pBuf,
- IN DWORD cbBuf,
- OUT LPDWORD pcWritten);
+ _In_ HANDLE hPrinter,
+ _In_reads_bytes_(cjBuf) LPVOID pvBuf,
+ _In_ DWORD cjBuf,
+ _Out_ LPDWORD pcWritten);
#if defined(_X86_) && !defined(USERMODE_DRIVER)
WIN32KAPI
VOID
APIENTRY
FLOATOBJ_Add(
- IN OUT PFLOATOBJ pf,
- IN PFLOATOBJ pf1);
+ _Inout_ PFLOATOBJ pf,
+ _In_ PFLOATOBJ pf1);
WIN32KAPI
VOID
APIENTRY
FLOATOBJ_AddFloat(
- IN OUT PFLOATOBJ pf,
- IN FLOATL f);
+ _Inout_ PFLOATOBJ pf,
+ _In_ FLOATL f);
WIN32KAPI
VOID
APIENTRY
FLOATOBJ_AddLong(
- IN OUT PFLOATOBJ pf,
- IN LONG l);
+ _Inout_ PFLOATOBJ pf,
+ _In_ LONG l);
WIN32KAPI
VOID
APIENTRY
FLOATOBJ_Div(
- IN OUT PFLOATOBJ pf,
- IN PFLOATOBJ pf1);
+ _Inout_ PFLOATOBJ pf,
+ _In_ PFLOATOBJ pf1);
WIN32KAPI
VOID
APIENTRY
FLOATOBJ_DivFloat(
- IN OUT PFLOATOBJ pf,
- IN FLOATL f);
+ _Inout_ PFLOATOBJ pf,
+ _In_ FLOATL f);
WIN32KAPI
VOID
APIENTRY
FLOATOBJ_DivLong(
- IN OUT PFLOATOBJ pf,
- IN LONG l);
+ _Inout_ PFLOATOBJ pf,
+ _In_ LONG l);
WIN32KAPI
BOOL
APIENTRY
FLOATOBJ_Equal(
- IN PFLOATOBJ pf,
- IN PFLOATOBJ pf1);
+ _In_ PFLOATOBJ pf,
+ _In_ PFLOATOBJ pf1);
WIN32KAPI
BOOL
APIENTRY
FLOATOBJ_EqualLong(
- IN PFLOATOBJ pf,
- IN LONG l);
+ _In_ PFLOATOBJ pf,
+ _In_ LONG l);
WIN32KAPI
LONG
APIENTRY
FLOATOBJ_GetFloat(
- IN PFLOATOBJ pf);
+ _In_ PFLOATOBJ pf);
WIN32KAPI
LONG
APIENTRY
FLOATOBJ_GetLong(
- IN PFLOATOBJ pf);
+ _In_ PFLOATOBJ pf);
WIN32KAPI
BOOL
APIENTRY
FLOATOBJ_GreaterThan(
- IN PFLOATOBJ pf,
- IN PFLOATOBJ pf1);
+ _In_ PFLOATOBJ pf,
+ _In_ PFLOATOBJ pf1);
WIN32KAPI
BOOL
APIENTRY
FLOATOBJ_GreaterThanLong(
- IN PFLOATOBJ pf,
- IN LONG l);
+ _In_ PFLOATOBJ pf,
+ _In_ LONG l);
WIN32KAPI
BOOL
APIENTRY
FLOATOBJ_LessThan(
- IN PFLOATOBJ pf,
- IN PFLOATOBJ pf1);
+ _In_ PFLOATOBJ pf,
+ _In_ PFLOATOBJ pf1);
WIN32KAPI
BOOL
APIENTRY
FLOATOBJ_LessThanLong(
- IN PFLOATOBJ pf,
- IN LONG l);
+ _In_ PFLOATOBJ pf,
+ _In_ LONG l);
WIN32KAPI
VOID
APIENTRY
FLOATOBJ_Mul(
- IN OUT PFLOATOBJ pf,
- IN PFLOATOBJ pf1);
+ _Inout_ PFLOATOBJ pf,
+ _In_ PFLOATOBJ pf1);
WIN32KAPI
VOID
APIENTRY
FLOATOBJ_MulFloat(
- IN OUT PFLOATOBJ pf,
- IN FLOATL f);
+ _Inout_ PFLOATOBJ pf,
+ _In_ FLOATL f);
WIN32KAPI
VOID
APIENTRY
FLOATOBJ_MulLong(
- IN OUT PFLOATOBJ pf,
- IN LONG l);
+ _Inout_ PFLOATOBJ pf,
+ _In_ LONG l);
WIN32KAPI
VOID
APIENTRY
FLOATOBJ_Neg(
- IN OUT PFLOATOBJ pf);
+ _Inout_ PFLOATOBJ pf);
WIN32KAPI
VOID
APIENTRY
FLOATOBJ_SetFloat(
- OUT PFLOATOBJ pf,
- IN FLOATL f);
+ _Out_ PFLOATOBJ pf,
+ _In_ FLOATL f);
WIN32KAPI
VOID
APIENTRY
FLOATOBJ_SetLong(
- OUT PFLOATOBJ pf,
- IN LONG l);
+ _Out_ PFLOATOBJ pf,
+ _In_ LONG l);
WIN32KAPI
VOID
APIENTRY
FLOATOBJ_Sub(
- IN OUT PFLOATOBJ pf,
- IN PFLOATOBJ pf1);
+ _Inout_ PFLOATOBJ pf,
+ _In_ PFLOATOBJ pf1);
WIN32KAPI
VOID
APIENTRY
FLOATOBJ_SubFloat(
- IN OUT PFLOATOBJ pf,
- IN FLOATL f);
+ _Inout_ PFLOATOBJ pf,
+ _In_ FLOATL f);
WIN32KAPI
VOID
APIENTRY
FLOATOBJ_SubLong(
- IN OUT PFLOATOBJ pf,
- IN LONG l);
+ _Inout_ PFLOATOBJ pf,
+ _In_ LONG l);
#else
@@ -2498,73 +2514,75 @@
ULONG
APIENTRY
FONTOBJ_cGetAllGlyphHandles(
- IN FONTOBJ *pfo,
- OUT HGLYPH *phg);
+ _In_ FONTOBJ *pfo,
+ _Out_opt_bytecap_(return) HGLYPH *phg);
WIN32KAPI
ULONG
APIENTRY
FONTOBJ_cGetGlyphs(
- IN FONTOBJ *pfo,
- IN ULONG iMode,
- IN ULONG cGlyph,
- IN HGLYPH *phg,
- OUT PVOID *ppvGlyph);
+ _In_ FONTOBJ *pfo,
+ _In_ ULONG iMode,
+ _In_ ULONG cGlyph,
+ _In_count_(cGlyph) HGLYPH *phg,
+ _Out_ PVOID *ppvGlyph);
WIN32KAPI
FD_GLYPHSET*
APIENTRY
FONTOBJ_pfdg(
- IN FONTOBJ *pfo);
+ _In_ FONTOBJ *pfo);
WIN32KAPI
IFIMETRICS*
APIENTRY
FONTOBJ_pifi(
- IN FONTOBJ *pfo);
-
+ _In_ FONTOBJ *pfo);
+
+_Ret_opt_bytecount_(*pcjTable)
WIN32KAPI
PBYTE
APIENTRY
FONTOBJ_pjOpenTypeTablePointer(
- IN FONTOBJ *pfo,
- IN ULONG ulTag,
- OUT ULONG *pcjTable);
+ _In_ FONTOBJ *pfo,
+ _In_ ULONG ulTag,
+ _Out_ ULONG *pcjTable);
WIN32KAPI
PFD_GLYPHATTR
APIENTRY
FONTOBJ_pQueryGlyphAttrs(
- IN FONTOBJ *pfo,
- IN ULONG iMode);
-
+ _In_ FONTOBJ *pfo,
+ _In_ ULONG iMode);
+
+_Ret_opt_bytecount_(*pcjFile)
WIN32KAPI
PVOID
APIENTRY
FONTOBJ_pvTrueTypeFontFile(
- IN FONTOBJ *pfo,
- OUT ULONG *pcjFile);
+ _In_ FONTOBJ *pfo,
+ _Out_ ULONG *pcjFile);
WIN32KAPI
LPWSTR
APIENTRY
FONTOBJ_pwszFontFilePaths(
- IN FONTOBJ *pfo,
- OUT ULONG *pcwc);
+ _In_ FONTOBJ *pfo,
+ _Out_ ULONG *pcwc);
WIN32KAPI
XFORMOBJ*
APIENTRY
FONTOBJ_pxoGetXform(
- IN FONTOBJ *pfo);
+ _In_ FONTOBJ *pfo);
WIN32KAPI
VOID
APIENTRY
FONTOBJ_vGetInfo(
- IN FONTOBJ *pfo,
- IN ULONG cjSize,
- OUT FONTINFO *pfi);
+ _In_ FONTOBJ *pfo,
+ _In_ ULONG cjSize,
+ _Out_bytecap_(cjSize) FONTINFO *pfi);
@@ -2572,187 +2590,187 @@
LONG
APIENTRY
HT_ComputeRGBGammaTable(
- IN USHORT GammaTableEntries,
- IN USHORT GammaTableType,
- IN USHORT RedGamma,
- IN USHORT GreenGamma,
- IN USHORT BlueGamma,
- OUT LPBYTE pGammaTable);
+ _In_ USHORT GammaTableEntries,
+ _In_ USHORT GammaTableType,
+ _In_ USHORT RedGamma,
+ _In_ USHORT GreenGamma,
+ _In_ USHORT BlueGamma,
+ _Out_writes_bytes_(GammaTableEntries * 3) LPBYTE pGammaTable);
WIN32KAPI
LONG
APIENTRY
HT_Get8BPPFormatPalette(
- OUT LPPALETTEENTRY pPaletteEntry,
- IN USHORT RedGamma,
- IN USHORT GreenGamma,
- IN USHORT BlueGamma);
+ _Out_opt_ LPPALETTEENTRY pPaletteEntry,
+ _In_ USHORT RedGamma,
+ _In_ USHORT GreenGamma,
+ _In_ USHORT BlueGamma);
WIN32KAPI
LONG
APIENTRY
HT_Get8BPPMaskPalette(
- IN OUT LPPALETTEENTRY pPaletteEntry,
- IN BOOL Use8BPPMaskPal,
- IN BYTE CMYMask,
- IN USHORT RedGamma,
- IN USHORT GreenGamma,
- IN USHORT BlueGamma);
+ _Out_opt_ LPPALETTEENTRY pPaletteEntry,
+ _In_ BOOL Use8BPPMaskPal,
+ _In_ BYTE CMYMask,
+ _In_ USHORT RedGamma,
+ _In_ USHORT GreenGamma,
+ _In_ USHORT BlueGamma);
WIN32KAPI
LONG
APIENTRY
HTUI_DeviceColorAdjustment(
- IN LPSTR pDeviceName,
- OUT PDEVHTADJDATA pDevHTAdjData);
+ _In_ LPSTR pDeviceName,
+ _Out_ PDEVHTADJDATA pDevHTAdjData);
WIN32KAPI
ULONG
APIENTRY
PALOBJ_cGetColors(
- IN PALOBJ *ppalo,
- IN ULONG iStart,
- IN ULONG cColors,
- OUT ULONG *pulColors);
+ _In_ PALOBJ *ppalo,
+ _In_ ULONG iStart,
+ _In_ ULONG cColors,
+ _Out_writes_(cColors) ULONG *pulColors);
WIN32KAPI
BOOL
APIENTRY
PATHOBJ_bCloseFigure(
- IN PATHOBJ *ppo);
+ _In_ PATHOBJ *ppo);
WIN32KAPI
BOOL
APIENTRY
PATHOBJ_bEnum(
- IN PATHOBJ *ppo,
- OUT PATHDATA *ppd);
+ _In_ PATHOBJ *ppo,
+ _Out_ PATHDATA *ppd);
WIN32KAPI
BOOL
APIENTRY
PATHOBJ_bEnumClipLines(
- IN PATHOBJ *ppo,
- IN ULONG cb,
- OUT CLIPLINE *pcl);
+ _In_ PATHOBJ *ppo,
+ _In_ ULONG cj,
+ _Out_bytecap_(cj) CLIPLINE *pcl);
WIN32KAPI
BOOL
APIENTRY
PATHOBJ_bMoveTo(
- IN PATHOBJ *ppo,
- IN POINTFIX ptfx);
+ _In_ PATHOBJ *ppo,
+ _In_ POINTFIX ptfx);
WIN32KAPI
BOOL
APIENTRY
PATHOBJ_bPolyBezierTo(
- IN PATHOBJ *ppo,
- IN POINTFIX *pptfx,
- IN ULONG cptfx);
+ _In_ PATHOBJ *ppo,
+ _In_ POINTFIX *pptfx,
+ _In_ ULONG cptfx);
WIN32KAPI
BOOL
APIENTRY
PATHOBJ_bPolyLineTo(
- IN PATHOBJ *ppo,
- IN POINTFIX *pptfx,
- IN ULONG cptfx);
+ _In_ PATHOBJ *ppo,
+ _In_ POINTFIX *pptfx,
+ _In_ ULONG cptfx);
WIN32KAPI
VOID
APIENTRY
PATHOBJ_vEnumStart(
- IN PATHOBJ *ppo);
+ _Inout_ PATHOBJ *ppo);
WIN32KAPI
VOID
APIENTRY
PATHOBJ_vEnumStartClipLines(
- IN PATHOBJ *ppo,
- IN CLIPOBJ *pco,
- IN SURFOBJ *pso,
- IN LINEATTRS *pla);
+ _Inout_ PATHOBJ *ppo,
+ _In_ CLIPOBJ *pco,
+ _In_ SURFOBJ *pso,
+ _In_ LINEATTRS *pla);
WIN32KAPI
VOID
APIENTRY
PATHOBJ_vGetBounds(
- IN PATHOBJ *ppo,
- OUT PRECTFX prectfx);
+ _In_ PATHOBJ *ppo,
+ _Out_ PRECTFX prectfx);
WIN32KAPI
BOOL
APIENTRY
STROBJ_bEnum(
- IN STROBJ *pstro,
- OUT ULONG *pc,
- OUT PGLYPHPOS *ppgpos);
+ _Inout_ STROBJ *pstro,
+ _Out_ ULONG *pc,
+ _Out_ PGLYPHPOS *ppgpos); // FIXME_ size?
WIN32KAPI
BOOL
APIENTRY
STROBJ_bEnumPositionsOnly(
- IN STROBJ *pstro,
- OUT ULONG *pc,
- OUT PGLYPHPOS *ppgpos);
+ _In_ STROBJ *pstro,
+ _Out_ ULONG *pc,
+ _Out_ PGLYPHPOS *ppgpos); // FIXME_ size?
WIN32KAPI
BOOL
APIENTRY
STROBJ_bGetAdvanceWidths(
- IN STROBJ *pso,
- IN ULONG iFirst,
- IN ULONG c,
- OUT POINTQF *pptqD);
+ _In_ STROBJ *pso,
+ _In_ ULONG iFirst,
+ _In_ ULONG c,
+ _Out_cap_(c) POINTQF *pptqD);
WIN32KAPI
DWORD
APIENTRY
STROBJ_dwGetCodePage(
- IN STROBJ *pstro);
+ _In_ STROBJ *pstro);
WIN32KAPI
FIX
APIENTRY
STROBJ_fxBreakExtra(
- IN STROBJ *pstro);
+ _In_ STROBJ *pstro);
WIN32KAPI
FIX
APIENTRY
STROBJ_fxCharacterExtra(
- IN STROBJ *pstro);
+ _In_ STROBJ *pstro);
WIN32KAPI
VOID
APIENTRY
STROBJ_vEnumStart(
- IN STROBJ *pstro);
+ _In_ STROBJ *pstro);
WIN32KAPI
BOOL
APIENTRY
WNDOBJ_bEnum(
- IN WNDOBJ *pwo,
- IN ULONG cj,
- OUT ULONG *pul);
+ _Inout_ WNDOBJ *pwo,
+ _In_ ULONG cj,
+ _Out_bytecap_(cj) ULONG *pul);
WIN32KAPI
ULONG
APIENTRY
WNDOBJ_cEnumStart(
- IN WNDOBJ *pwo,
- IN ULONG iType,
- IN ULONG iDirection,
- IN ULONG cLimit);
+ _Inout_ WNDOBJ *pwo,
+ _In_ ULONG iType,
+ _In_ ULONG iDirection,
+ _In_ ULONG cLimit);
WIN32KAPI
VOID
APIENTRY
WNDOBJ_vSetConsumer(
- IN WNDOBJ *pwo,
- IN PVOID pvConsumer);
+ _Inout_ WNDOBJ *pwo,
+ _In_ PVOID pvConsumer);
/* XFORMOBJ_bApplyXform.iMode constants */
#define XF_LTOL 0L
@@ -2764,25 +2782,25 @@
BOOL
APIENTRY
XFORMOBJ_bApplyXform(
- IN XFORMOBJ *pxo,
- IN ULONG iMode,
- IN ULONG cPoints,
- IN PVOID pvIn,
- OUT PVOID pvOut);
+ _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);
WIN32KAPI
ULONG
APIENTRY
XFORMOBJ_iGetFloatObjXform(
- IN XFORMOBJ *pxo,
- OUT FLOATOBJ_XFORM *pxfo);
+ _In_ XFORMOBJ *pxo,
+ _Out_ FLOATOBJ_XFORM *pxfo);
WIN32KAPI
ULONG
APIENTRY
XFORMOBJ_iGetXform(
- IN XFORMOBJ *pxo,
- OUT XFORML *pxform);
+ _In_ XFORMOBJ *pxo,
+ _Out_ XFORML *pxform);
/* XLATEOBJ_cGetPalette.iPal constants */
#define XO_SRCPALETTE 1
@@ -2795,424 +2813,465 @@
ULONG
APIENTRY
XLATEOBJ_cGetPalette(
- IN XLATEOBJ *pxlo,
- IN ULONG iPal,
- IN ULONG cPal,
- OUT ULONG *pPal);
+ _In_ XLATEOBJ *pxlo,
+ _In_ ULONG iPal,
+ _In_ ULONG cPal,
+ _Out_cap_(cPal) ULONG *pPal);
WIN32KAPI
HANDLE
APIENTRY
XLATEOBJ_hGetColorTransform(
- IN XLATEOBJ *pxlo);
+ _In_ XLATEOBJ *pxlo);
WIN32KAPI
ULONG
APIENTRY
XLATEOBJ_iXlate(
- IN XLATEOBJ *pxlo,
- IN ULONG iColor);
+ _In_ XLATEOBJ *pxlo,
+ _In_ ULONG iColor);
WIN32KAPI
ULONG*
APIENTRY
XLATEOBJ_piVector(
- IN XLATEOBJ *pxlo);
-
+ _In_ XLATEOBJ *pxlo);
/* Graphics Driver Functions */
-BOOL
-APIENTRY
-DrvAlphaBlend(
- IN SURFOBJ *psoDest,
- IN SURFOBJ *psoSrc,
- IN CLIPOBJ *pco,
- IN XLATEOBJ *pxlo,
- IN RECTL *prclDest,
- IN RECTL *prclSrc,
- IN BLENDOBJ *pBlendObj);
-
-BOOL
-APIENTRY
-DrvAssertMode(
- IN DHPDEV dhpdev,
- IN BOOL bEnable);
-
-BOOL
-APIENTRY
-DrvBitBlt(
- IN SURFOBJ *psoTrg,
- IN SURFOBJ *psoSrc,
- IN SURFOBJ *psoMask,
- IN CLIPOBJ *pco,
- IN XLATEOBJ *pxlo,
- IN RECTL *prclTrg,
- IN POINTL *pptlSrc,
- IN POINTL *pptlMask,
- IN BRUSHOBJ *pbo,
- IN POINTL *pptlBrush,
- IN ROP4 rop4);
-
-VOID
-APIENTRY
-DrvCompletePDEV(
- IN DHPDEV dhpdev,
- IN HDEV hdev);
-
-BOOL
-APIENTRY
-DrvCopyBits(
- IN SURFOBJ *psoDest,
- IN SURFOBJ *psoSrc,
- IN CLIPOBJ *pco,
- IN XLATEOBJ *pxlo,
- IN RECTL *prclDest,
- IN POINTL *pptlSrc);
-
-HBITMAP
-APIENTRY
-DrvCreateDeviceBitmap(
- IN DHPDEV dhpdev,
- IN SIZEL sizl,
- IN ULONG iFormat);
-
-VOID
-APIENTRY
-DrvDeleteDeviceBitmap(
- IN DHSURF dhsurf);
-
-HBITMAP
-APIENTRY
-DrvDeriveSurface(
- DD_DIRECTDRAW_GLOBAL *pDirectDraw,
- DD_SURFACE_LOCAL *pSurface);
-
-LONG
-APIENTRY
-DrvDescribePixelFormat(
- IN DHPDEV dhpdev,
- IN LONG iPixelFormat,
- IN ULONG cjpfd,
- OUT PIXELFORMATDESCRIPTOR *ppfd);
-
-VOID
-APIENTRY
-DrvDestroyFont(
- IN FONTOBJ *pfo);
-
-VOID
-APIENTRY
-DrvDisableDriver(
- VOID);
-
-VOID
-APIENTRY
-DrvDisablePDEV(
- IN DHPDEV dhpdev);
-
-VOID
-APIENTRY
-DrvDisableSurface(
- IN DHPDEV dhpdev);
+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_ 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_ 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_ 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;
#define DM_DEFAULT 0x00000001
#define DM_MONOCHROME 0x00000002
-ULONG
-APIENTRY
-DrvDitherColor(
- IN DHPDEV dhpdev,
- IN ULONG iMode,
- IN ULONG rgb,
- OUT ULONG *pul);
-
-ULONG
-APIENTRY
-DrvDrawEscape(
- IN SURFOBJ *pso,
- IN ULONG iEsc,
- IN CLIPOBJ *pco,
- IN RECTL *prcl,
- IN ULONG cjIn,
- IN PVOID pvIn);
-
-BOOL
-APIENTRY
-DrvEnableDriver(
- IN ULONG iEngineVersion,
- IN ULONG cj,
- OUT DRVENABLEDATA *pded);
-
-DHPDEV
-APIENTRY
-DrvEnablePDEV(
- IN DEVMODEW *pdm,
- IN LPWSTR pwszLogAddress,
- IN ULONG cPat,
- OUT HSURF *phsurfPatterns,
- IN ULONG cjCaps,
- OUT ULONG *pdevcaps,
- IN ULONG cjDevInfo,
- OUT DEVINFO *pdi,
- IN HDEV hdev,
- IN LPWSTR pwszDeviceName,
- IN HANDLE hDriver);
-
-HSURF
-APIENTRY
-DrvEnableSurface(
- IN DHPDEV dhpdev);
+typedef ULONG
+(APIENTRY FN_DrvDitherColor)(
+ _In_ DHPDEV dhpdev,
+ _In_ ULONG iMode,
+ _In_ ULONG rgb,
+ _Inout_updates_(8 * 8) ULONG *pul); // FIXME: compare EngDitherColor
+typedef 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 initialized
+typedef 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
-BOOL
-APIENTRY
-DrvEndDoc(
- IN SURFOBJ *pso,
- IN FLONG fl);
-
-ULONG
-APIENTRY
-DrvEscape(
- IN SURFOBJ *pso,
- IN ULONG iEsc,
- IN ULONG cjIn,
- IN PVOID pvIn,
- IN ULONG cjOut,
- OUT PVOID pvOut);
-
-BOOL
-APIENTRY
-DrvFillPath(
- IN SURFOBJ *pso,
- IN PATHOBJ *ppo,
- IN CLIPOBJ *pco,
- IN BRUSHOBJ *pbo,
- IN POINTL *pptlBrushOrg,
- IN MIX mix,
- IN FLONG flOptions);
-
-ULONG
-APIENTRY
-DrvFontManagement(
- IN SURFOBJ *pso,
- IN FONTOBJ *pfo,
- IN ULONG iMode,
- IN ULONG cjIn,
- IN PVOID pvIn,
- IN ULONG cjOut,
- OUT PVOID pvOut);
-
-VOID
-APIENTRY
-DrvFree(
- IN PVOID pv,
- IN ULONG_PTR id);
+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
-ULONG
-APIENTRY
-DrvGetGlyphMode(
- IN DHPDEV dhpdev,
- IN FONTOBJ *pfo);
-
-ULONG
-APIENTRY
-DrvGetModes(
- IN HANDLE hDriver,
- IN ULONG cjSize,
- OUT DEVMODEW *pdm);
-
-PVOID
-APIENTRY
-DrvGetTrueTypeFile(
- IN ULONG_PTR iFile,
- IN ULONG *pcj);
-
-BOOL
-APIENTRY
-DrvGradientFill(
- IN SURFOBJ *psoDest,
- IN CLIPOBJ *pco,
- IN XLATEOBJ *pxlo,
- IN TRIVERTEX *pVertex,
- IN ULONG nVertex,
- IN PVOID pMesh,
- IN ULONG nMesh,
- IN RECTL *prclExtents,
- IN POINTL *pptlDitherOrg,
- IN ULONG ulMode);
-
-BOOL
-APIENTRY
-DrvIcmCheckBitmapBits(
- IN DHPDEV dhpdev,
- IN HANDLE hColorTransform,
- IN SURFOBJ *pso,
- OUT PBYTE paResults);
-
-HANDLE
-APIENTRY
-DrvIcmCreateColorTransform(
- IN DHPDEV dhpdev,
- IN LPLOGCOLORSPACEW pLogColorSpace,
- IN PVOID pvSourceProfile,
- IN ULONG cjSourceProfile,
- IN PVOID pvDestProfile,
- IN ULONG cjDestProfile,
- IN PVOID pvTargetProfile,
- IN ULONG cjTargetProfile,
- IN DWORD dwReserved);
-
-BOOL
-APIENTRY
-DrvIcmDeleteColorTransform(
- IN DHPDEV dhpdev,
- IN HANDLE hcmXform);
+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
-BOOL
-APIENTRY
-DrvIcmSetDeviceGammaRamp(
- IN DHPDEV dhpdev,
- IN ULONG iFormat,
- IN LPVOID lpRamp);
-
-BOOL
-APIENTRY
-DrvLineTo(
- SURFOBJ *pso,
- CLIPOBJ *pco,
- BRUSHOBJ *pbo,
- LONG x1,
- LONG y1,
- LONG x2,
- LONG y2,
- RECTL *prclBounds,
- MIX mix);
-
-ULONG_PTR
-APIENTRY
-DrvLoadFontFile(
- ULONG cFiles,
- ULONG_PTR *piFile,
- PVOID *ppvView,
- ULONG *pcjView,
- DESIGNVECTOR *pdv,
- ULONG ulLangID,
- ULONG ulFastCheckSum);
-
-VOID
-APIENTRY
-DrvMovePointer(
- IN SURFOBJ *pso,
- IN LONG x,
- IN LONG y,
- IN RECTL *prcl);
-
-BOOL
-APIENTRY
-DrvNextBand(
- IN SURFOBJ *pso,
- IN POINTL *pptl);
-
-VOID
-APIENTRY
-DrvNotify(
- IN SURFOBJ *pso,
- IN ULONG iType,
- IN PVOID pvData);
-
-BOOL
-APIENTRY
-DrvOffset(
- IN SURFOBJ *pso,
- IN LONG x,
- IN LONG y,
- IN FLONG flReserved);
-
-BOOL
-APIENTRY
-DrvPaint(
- IN SURFOBJ *pso,
- IN CLIPOBJ *pco,
- IN BRUSHOBJ *pbo,
- IN POINTL *pptlBrushOrg,
- IN MIX mix);
-
-BOOL
-APIENTRY
-DrvPlgBlt(
- IN SURFOBJ *psoTrg,
- IN SURFOBJ *psoSrc,
- IN SURFOBJ *psoMsk,
- IN CLIPOBJ *pco,
- IN XLATEOBJ *pxlo,
- IN COLORADJUSTMENT *pca,
- IN POINTL *pptlBrushOrg,
- IN POINTFIX *pptfx,
- IN RECTL *prcl,
- IN POINTL *pptl,
- IN ULONG iMode);
+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
-BOOL
-APIENTRY
-DrvQueryAdvanceWidths(
- IN DHPDEV dhpdev,
- IN FONTOBJ *pfo,
- IN ULONG iMode,
- IN HGLYPH *phg,
- OUT PVOID pvWidths,
- IN ULONG cGlyphs);
+typedef BOOL
+(APIENTRY FN_DrvQueryAdvanceWidths)(
+ _In_ DHPDEV dhpdev,
+ _In_ FONTOBJ *pfo,
+ _In_ ULONG iMode,
+ _In_count_(cGlyphs) HGLYPH *phg,
+ _Out_bytecap_(cGlyphs * sizeof(USHORT)) PVOID pvWidths, // CHECKME
+ _In_ ULONG cGlyphs);
+typedef FN_DrvQueryAdvanceWidths *PFN_DrvQueryAdvanceWidths;
+extern FN_DrvQueryAdvanceWidths DrvQueryAdvanceWidths;
/* DrvQueryDeviceSupport.iType constants */
#define QDS_CHECKJPEGFORMAT 0x00000000
#define QDS_CHECKPNGFORMAT 0x00000001
-BOOL
-APIENTRY
-DrvQueryDeviceSupport(
- SURFOBJ *pso,
- XLATEOBJ *pxlo,
- XFORMOBJ *pxo,
- ULONG iType,
- ULONG cjIn,
- PVOID pvIn,
- ULONG cjOut,
- PVOID pvOut);
+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
-BOOL
-APIENTRY
-DrvQueryDriverInfo(
- DWORD dwMode,
- PVOID pBuffer,
- DWORD cbBuf,
- PDWORD pcbNeeded);
-
-PIFIMETRICS
-APIENTRY
-DrvQueryFont(
- IN DHPDEV dhpdev,
- IN ULONG_PTR iFile,
- IN ULONG iFace,
- IN ULONG_PTR *pid);
+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
@@ -3221,11 +3280,12 @@
#define QC_FONTDRIVERCAPS (QC_OUTLINES | QC_1BIT | QC_4BIT)
-LONG
-APIENTRY
-DrvQueryFontCaps(
- IN ULONG culCaps,
- OUT ULONG *pulCaps);
+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
@@ -3239,28 +3299,30 @@
#define QFD_TT_MONO_BITMAP QFD_TT_GRAY1_BITMAP
-LONG
-APIENTRY
-DrvQueryFontData(
- IN DHPDEV dhpdev,
- IN FONTOBJ *pfo,
- IN ULONG iMode,
- IN HGLYPH hg,
- IN OUT GLYPHDATA *pgd,
- IN OUT PVOID pv,
- IN ULONG cjSize);
+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
-LONG
-APIENTRY
-DrvQueryFontFile(
- IN ULONG_PTR iFile,
- IN ULONG ulMode,
- IN ULONG cjBuf,
- IN ULONG *pulBuf);
+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
@@ -3268,119 +3330,135 @@
#define QFT_KERNPAIRS 2L
#define QFT_GLYPHSET 3L
-PVOID
-APIENTRY
-DrvQueryFontTree(
- IN DHPDEV dhpdev,
- IN ULONG_PTR iFile,
- IN ULONG iFace,
- IN ULONG iMode,
- IN ULONG_PTR *pid);
-
-PFD_GLYPHATTR
-APIENTRY
-DrvQueryGlyphAttrs(
- IN FONTOBJ *pfo,
- IN ULONG iMode);
-
-ULONG
-APIENTRY
-DrvQueryPerBandInfo(
- IN SURFOBJ *pso,
- IN OUT PERBANDINFO *pbi);
+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
-LONG
-APIENTRY
-DrvQueryTrueTypeOutline(
- IN DHPDEV dhpdev,
- IN FONTOBJ *pfo,
- IN HGLYPH hglyph,
- IN BOOL bMetricsOnly,
- IN GLYPHDATA *pgldt,
- IN ULONG cjBuf,
- OUT TTPOLYGONHEADER *ppoly);
-
-LONG
-APIENTRY
-DrvQueryTrueTypeTable(
- IN ULONG_PTR iFile,
- IN ULONG ulFont,
- IN ULONG ulTag,
- IN PTRDIFF dpStart,
- IN ULONG cjBuf,
- OUT BYTE *pjBuf,
- OUT PBYTE *ppjTable,
- OUT ULONG *pcjTable);
+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,
+ _Out_opt_ 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
-BOOL
-APIENTRY
-DrvRealizeBrush(
- IN BRUSHOBJ *pbo,
- IN SURFOBJ *psoTarget,
- IN SURFOBJ *psoPattern,
- IN SURFOBJ *psoMask,
- IN XLATEOBJ *pxlo,
- IN ULONG iHatch);
+typedef BOOL
+(APIENTRY FN_DrvRealizeBrush)(
+ _In_ BRUSHOBJ *pbo,
+ _Inout_ SURFOBJ *psoTarget, // CHECKME
+ _In_ SURFOBJ *psoPattern,
+ _In_ SURFOBJ *psoMask,
+ _In_ 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
-ULONG
-APIENTRY
-DrvResetDevice(
- IN DHPDEV dhpdev,
- IN PVOID Reserved);
-
-BOOL
-APIENTRY
-DrvResetPDEV(
- DHPDEV dhpdevOld,
- DHPDEV dhpdevNew);
+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
-ULONG_PTR
-APIENTRY
-DrvSaveScreenBits(
- IN SURFOBJ *pso,
- IN ULONG iMode,
- IN ULONG_PTR ident,
- IN RECTL *prcl);
-
-BOOL
-APIENTRY
-DrvSendPage(
- IN SURFOBJ *pso);
-
-BOOL
-APIENTRY
-DrvSetPalette(
- IN DHPDEV dhpdev,
- IN PALOBJ *ppalo,
- IN FLONG fl,
- IN ULONG iStart,
- IN ULONG cColors);
-
-BOOL
-APIENTRY
-DrvSetPixelFormat(
- IN SURFOBJ *pso,
- IN LONG iPixelFormat,
- IN HWND hwnd);
+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
@@ -3398,761 +3476,198 @@
#define SPS_LENGTHMASK 0x00000F00L
#define SPS_FREQMASK 0x000FF000L
-ULONG
-APIENTRY
-DrvSetPointerShape(
- IN SURFOBJ *pso,
- IN SURFOBJ *psoMask,
- IN SURFOBJ *psoColor,
- IN XLATEOBJ *pxlo,
- IN LONG xHot,
- IN LONG yHot,
- IN LONG x,
- IN LONG y,
- IN RECTL *prcl,
- IN FLONG fl);
-
-BOOL
-APIENTRY
-DrvStartBanding(
- IN SURFOBJ *pso,
- IN POINTL *pptl);
-
-BOOL
-APIENTRY
-DrvStartDoc(
- IN SURFOBJ *pso,
- IN LPWSTR pwszDocName,
- IN DWORD dwJobId);
-
-BOOL
-APIENTRY
-DrvStartPage(
- IN SURFOBJ *pso);
-
-BOOL
-APIENTRY
-DrvStretchBlt(
- IN SURFOBJ *psoDest,
- IN SURFOBJ *psoSrc,
- IN SURFOBJ *psoMask,
- IN CLIPOBJ *pco,
- IN XLATEOBJ *pxlo,
- IN COLORADJUSTMENT *pca,
- IN POINTL *pptlHTOrg,
- IN RECTL *prclDest,
- IN RECTL *prclSrc,
- IN POINTL *pptlMask,
- IN ULONG iMode);
-
-BOOL
-APIENTRY
-DrvStretchBltROP(
- IN SURFOBJ *psoDest,
- IN SURFOBJ *psoSrc,
- IN SURFOBJ *psoMask,
- IN CLIPOBJ *pco,
- IN XLATEOBJ *pxlo,
- IN COLORADJUSTMENT *pca,
- IN POINTL *pptlHTOrg,
- IN RECTL *prclDest,
- IN RECTL *prclSrc,
- IN POINTL *pptlMask,
- IN ULONG iMode,
- IN BRUSHOBJ *pbo,
- IN DWORD rop4);
-
-BOOL
-APIENTRY
-DrvStrokeAndFillPath(
- IN SURFOBJ *pso,
- IN PATHOBJ *ppo,
- IN CLIPOBJ *pco,
- IN XFORMOBJ *pxo,
- IN BRUSHOBJ *pboStroke,
- IN LINEATTRS *plineattrs,
- IN BRUSHOBJ *pboFill,
- IN POINTL *pptlBrushOrg,
- IN MIX mixFill,
- IN FLONG flOptions);
-
-BOOL
-APIENTRY
-DrvStrokePath(
- IN SURFOBJ *pso,
- IN PATHOBJ *ppo,
- IN CLIPOBJ *pco,
- IN XFORMOBJ *pxo,
- IN BRUSHOBJ *pbo,
- IN POINTL *pptlBrushOrg,
- IN LINEATTRS *plineattrs,
- IN MIX mix);
-
-BOOL
-APIENTRY
-DrvSwapBuffers(
- IN SURFOBJ *pso,
- IN WNDOBJ *pwo);
-
-VOID
-APIENTRY
-DrvSynchronize(
- IN DHPDEV dhpdev,
- IN RECTL *prcl);
+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 ignored
+typedef FN_DrvSynchronize *PFN_DrvSynchronize;
+extern FN_DrvSynchronize DrvSynchronize;
/* DrvSynchronizeSurface.fl constants */
#define DSS_TIMER_EVENT 0x00000001
#define DSS_FLUSH_EVENT 0x00000002
-VOID
-APIENTRY
-DrvSynchronizeSurface(
- IN SURFOBJ *pso,
- IN RECTL *prcl,
- IN FLONG fl);
-
-BOOL
-APIENTRY
-DrvTextOut(
- IN SURFOBJ *pso,
- IN STROBJ *pstro,
- IN FONTOBJ *pfo,
- IN CLIPOBJ *pco,
- IN RECTL *prclExtra,
- IN RECTL *prclOpaque,
- IN BRUSHOBJ *pboFore,
- IN BRUSHOBJ *pboOpaque,
- IN POINTL *pptlOrg,
- IN MIX mix);
-
-BOOL
-APIENTRY
-DrvTransparentBlt(
- IN SURFOBJ *psoDst,
- IN SURFOBJ *psoSrc,
- IN CLIPOBJ *pco,
- IN XLATEOBJ *pxlo,
- IN RECTL *prclDst,
- IN RECTL *prclSrc,
- IN ULONG iTransColor,
- IN ULONG ulReserved);
-
-BOOL
-APIENTRY
-DrvUnloadFontFile(
- IN ULONG_PTR iFile);
-
-typedef BOOL
-(APIENTRY *PFN_DrvAlphaBlend)(
- IN SURFOBJ *psoDest,
- IN SURFOBJ *psoSrc,
- IN CLIPOBJ *pco,
- IN XLATEOBJ *pxlo,
- IN RECTL *prclDest,
- IN RECTL *prclSrc,
- IN BLENDOBJ *pBlendObj);
-
-typedef BOOL
-(APIENTRY *PFN_DrvAssertMode)(
- IN DHPDEV dhpdev,
- IN BOOL bEnable);
-
-typedef BOOL
-(APIENTRY *PFN_DrvBitBlt)(
- IN SURFOBJ *psoTrg,
- IN SURFOBJ *psoSrc,
- IN SURFOBJ *psoMask,
- IN CLIPOBJ *pco,
- IN XLATEOBJ *pxlo,
- IN RECTL *prclTrg,
- IN POINTL *pptlSrc,
- IN POINTL *pptlMask,
- IN BRUSHOBJ *pbo,
- IN POINTL *pptlBrush,
- IN ROP4 rop4);
-
typedef VOID
-(APIENTRY *PFN_DrvCompletePDEV)(
- IN DHPDEV dhpdev,
- IN HDEV hdev);
-
-typedef BOOL
-(APIENTRY *PFN_DrvCopyBits)(
- IN SURFOBJ *psoDest,
- IN SURFOBJ *psoSrc,
- IN CLIPOBJ *pco,
- IN XLATEOBJ *pxlo,
- IN RECTL *prclDest,
- IN POINTL *pptlSrc);
-
-typedef HBITMAP
-(APIENTRY *PFN_DrvCreateDeviceBitmap)(
- IN DHPDEV dhpdev,
- IN SIZEL sizl,
- IN ULONG iFormat);
+(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 *PFN_DrvDeleteDeviceBitmap)(
- IN DHSURF dhsurf);
-
-typedef HBITMAP
-(APIENTRY *PFN_DrvDeriveSurface)(
- DD_DIRECTDRAW_GLOBAL *pDirectDraw,
- DD_SURFACE_LOCAL *pSurface);
-
-typedef LONG
-(APIENTRY *PFN_DrvDescribePixelFormat)(
- IN DHPDEV dhpdev,
- IN LONG iPixelFormat,
- IN ULONG cjpfd,
- OUT PIXELFORMATDESCRIPTOR *ppfd);
-
-typedef VOID
-(APIENTRY *PFN_DrvDestroyFont)(
- IN FONTOBJ *pfo);
-
-typedef VOID
-(APIENTRY *PFN_DrvDisableDriver)(
- VOID);
-
-typedef VOID
-(APIENTRY *PFN_DrvDisablePDEV)(
- IN DHPDEV dhpdev);
-
-typedef VOID
-(APIENTRY *PFN_DrvDisableSurface)(
- IN DHPDEV dhpdev);
-
-typedef ULONG
-(APIENTRY *PFN_DrvDitherColor)(
- IN DHPDEV dhpdev,
- IN ULONG iMode,
- IN ULONG rgb,
- OUT ULONG *pul);
-
-typedef ULONG
-(APIENTRY *PFN_DrvDrawEscape)(
- IN SURFOBJ *pso,
- IN ULONG iEsc,
- IN CLIPOBJ *pco,
- IN RECTL *prcl,
- IN ULONG cjIn,
- IN PVOID pvIn);
-
-typedef BOOL
-(APIENTRY *PFN_DrvEnableDriver)(
- IN ULONG iEngineVersion,
- IN ULONG cj,
- OUT DRVENABLEDATA *pded);
-
-typedef DHPDEV
-(APIENTRY *PFN_DrvEnablePDEV)(
- IN DEVMODEW *pdm,
- IN LPWSTR pwszLogAddress,
- IN ULONG cPat,
- OUT HSURF *phsurfPatterns,
- IN ULONG cjCaps,
- GDIINFO *pdevcaps,
- IN ULONG cjDevInfo,
- OUT DEVINFO *pdi,
- IN HDEV hdev,
- IN LPWSTR pwszDeviceName,
- IN HANDLE hDriver);
-
-typedef HSURF
-(APIENTRY *PFN_DrvEnableSurface)(
- IN DHPDEV dhpdev);
-
-typedef BOOL
-(APIENTRY *PFN_DrvEndDoc)(
- IN SURFOBJ *pso,
- IN FLONG fl);
-
-typedef ULONG
-(APIENTRY *PFN_DrvEscape)(
- IN SURFOBJ *pso,
- IN ULONG iEsc,
- IN ULONG cjIn,
- IN PVOID pvIn,
- IN ULONG cjOut,
- OUT PVOID pvOut);
-
-typedef BOOL
-(APIENTRY *PFN_DrvFillPath)(
- IN SURFOBJ *pso,
- IN PATHOBJ *ppo,
- IN CLIPOBJ *pco,
- IN BRUSHOBJ *pbo,
- IN POINTL *pptlBrushOrg,
- IN MIX mix,
- IN FLONG flOptions);
-
-typedef ULONG
-(APIENTRY *PFN_DrvFontManagement)(
- IN SURFOBJ *pso,
- IN FONTOBJ *pfo,
- IN ULONG iMode,
- IN ULONG cjIn,
- IN PVOID pvIn,
- IN ULONG cjOut,
- OUT PVOID pvOut);
-
-typedef VOID
-(APIENTRY *PFN_DrvFree)(
- IN PVOID pv,
- IN ULONG_PTR id);
-
-typedef ULONG
-(APIENTRY *PFN_DrvGetGlyphMode)(
- IN DHPDEV dhpdev,
- IN FONTOBJ *pfo);
-
-typedef ULONG
-(APIENTRY *PFN_DrvGetModes)(
- IN HANDLE hDriver,
- IN ULONG cjSize,
- OUT DEVMODEW *pdm);
-
-typedef PVOID
-(APIENTRY *PFN_DrvGetTrueTypeFile)(
- IN ULONG_PTR iFile,
- IN ULONG *pcj);
-
-typedef BOOL
-(APIENTRY *PFN_DrvGradientFill)(
- IN SURFOBJ *psoDest,
- IN CLIPOBJ *pco,
- IN XLATEOBJ *pxlo,
- IN TRIVERTEX *pVertex,
- IN ULONG nVertex,
- IN PVOID pMesh,
- IN ULONG nMesh,
- IN RECTL *prclExtents,
- IN POINTL *pptlDitherOrg,
- IN ULONG ulMode);
-
-typedef BOOL
-(APIENTRY *PFN_DrvIcmCheckBitmapBits)(
- IN DHPDEV dhpdev,
- IN HANDLE hColorTransform,
- IN SURFOBJ *pso,
- OUT PBYTE paResults);
-
-typedef HANDLE
-(APIENTRY *PFN_DrvIcmCreateColorTransform)(
- IN DHPDEV dhpdev,
- IN LPLOGCOLORSPACEW pLogColorSpace,
- IN PVOID pvSourceProfile,
- IN ULONG cjSourceProfile,
- IN PVOID pvDestProfile,
- IN ULONG cjDestProfile,
- IN PVOID pvTargetProfile,
- IN ULONG cjTargetProfile,
- IN DWORD dwReserved);
-
-typedef BOOL
-(APIENTRY *PFN_DrvIcmDeleteColorTransform)(
- IN DHPDEV dhpdev,
- IN HANDLE hcmXform);
-
-typedef BOOL
-(APIENTRY *PFN_DrvIcmSetDeviceGammaRamp)(
- IN DHPDEV dhpdev,
- IN ULONG iFormat,
- IN LPVOID lpRamp);
-
-typedef BOOL
-(APIENTRY *PFN_DrvLineTo)(
- SURFOBJ *pso,
- CLIPOBJ *pco,
- BRUSHOBJ *pbo,
- LONG x1,
- LONG y1,
- LONG x2,
- LONG y2,
- RECTL *prclBounds,
- MIX mix);
-
-typedef ULONG_PTR
-(APIENTRY *PFN_DrvLoadFontFile)(
- ULONG cFiles,
- ULONG_PTR *piFile,
- PVOID *ppvView,
- ULONG *pcjView,
- DESIGNVECTOR *pdv,
- ULONG ulLangID,
- ULONG ulFastCheckSum);
-
-typedef VOID
-(APIENTRY *PFN_DrvMovePointer)(
- IN SURFOBJ *pso,
- IN LONG x,
- IN LONG y,
- IN RECTL *prcl);
-
-typedef BOOL
-(APIENTRY *PFN_DrvNextBand)(
- IN SURFOBJ *pso,
- IN POINTL *pptl);
-
-typedef VOID
-(APIENTRY *PFN_DrvNotify)(
- IN SURFOBJ *pso,
- IN ULONG iType,
- IN PVOID pvData);
-
-typedef BOOL
-(APIENTRY *PFN_DrvOffset)(
- IN SURFOBJ *pso,
- IN LONG x,
- IN LONG y,
- IN FLONG flReserved);
-
-typedef BOOL
-(APIENTRY *PFN_DrvPaint)(
- IN SURFOBJ *pso,
- IN CLIPOBJ *pco,
- IN BRUSHOBJ *pbo,
- IN POINTL *pptlBrushOrg,
- IN MIX mix);
-
-typedef BOOL
-(APIENTRY *PFN_DrvPlgBlt)(
- IN SURFOBJ *psoTrg,
- IN SURFOBJ *psoSrc,
- IN SURFOBJ *psoMsk,
- IN CLIPOBJ *pco,
- IN XLATEOBJ *pxlo,
- IN COLORADJUSTMENT *pca,
- IN POINTL *pptlBrushOrg,
- IN POINTFIX *pptfx,
- IN RECTL *prcl,
- IN POINTL *pptl,
- IN ULONG iMode);
-
-typedef BOOL
-(APIENTRY *PFN_DrvQueryAdvanceWidths)(
- IN DHPDEV dhpdev,
- IN FONTOBJ *pfo,
- IN ULONG iMode,
- IN HGLYPH *phg,
- OUT PVOID pvWidths,
- IN ULONG cGlyphs);
-
-typedef BOOL
-(APIENTRY *PFN_DrvQueryDeviceSupport)(
- SURFOBJ *pso,
- XLATEOBJ *pxlo,
- XFORMOBJ *pxo,
- ULONG iType,
- ULONG cjIn,
- PVOID pvIn,
- ULONG cjOut,
- PVOID pvOut);
-
-typedef BOOL
-(APIENTRY *PFN_DrvQueryDriverInfo)(
- DWORD dwMode,
- PVOID pBuffer,
- DWORD cbBuf,
- PDWORD pcbNeeded);
-
-typedef PIFIMETRICS
-(APIENTRY *PFN_DrvQueryFont)(
- IN DHPDEV dhpdev,
- IN ULONG_PTR iFile,
- IN ULONG iFace,
- IN ULONG_PTR *pid);
-
-typedef LONG
-(APIENTRY *PFN_DrvQueryFontCaps)(
- IN ULONG culCaps,
- OUT ULONG *pulCaps);
-
-typedef LONG
-(APIENTRY *PFN_DrvQueryFontData)(
- IN DHPDEV dhpdev,
- IN FONTOBJ *pfo,
- IN ULONG iMode,
- IN HGLYPH hg,
- IN OUT GLYPHDATA *pgd,
- IN OUT PVOID pv,
- IN ULONG cjSize);
-
-typedef LONG
-(APIENTRY *PFN_DrvQueryFontFile)(
- IN ULONG_PTR iFile,
- IN ULONG ulMode,
- IN ULONG cjBuf,
- IN ULONG *pulBuf);
-
-typedef PVOID
-(APIENTRY *PFN_DrvQueryFontTree)(
- IN DHPDEV dhpdev,
- IN ULONG_PTR iFile,
- IN ULONG iFace,
- IN ULONG iMode,
- IN ULONG_PTR *pid);
-
-typedef PFD_GLYPHATTR
-(APIENTRY *PFN_DrvQueryGlyphAttrs)(
- IN FONTOBJ *pfo,
- IN ULONG iMode);
-
-typedef ULONG
-(APIENTRY *PFN_DrvQueryPerBandInfo)(
- IN SURFOBJ *pso,
- IN OUT PERBANDINFO *pbi);
-
-typedef LONG
-(APIENTRY *PFN_DrvQueryTrueTypeOutline)(
- IN DHPDEV dhpdev,
- IN FONTOBJ *pfo,
- IN HGLYPH hglyph,
- IN BOOL bMetricsOnly,
- IN GLYPHDATA *pgldt,
- IN ULONG cjBuf,
- OUT TTPOLYGONHEADER *ppoly);
-
-typedef LONG
-(APIENTRY *PFN_DrvQueryTrueTypeTable)(
- IN ULONG_PTR iFile,
- IN ULONG ulFont,
- IN ULONG ulTag,
- IN PTRDIFF dpStart,
- IN ULONG cjBuf,
- OUT BYTE *pjBuf,
- OUT PBYTE *ppjTable,
- OUT ULONG *pcjTable);
-
-typedef BOOL
-(APIENTRY *PFN_DrvRealizeBrush)(
- IN BRUSHOBJ *pbo,
- IN SURFOBJ *psoTarget,
- IN SURFOBJ *psoPattern,
- IN SURFOBJ *psoMask,
- IN XLATEOBJ *pxlo,
- IN ULONG iHatch);
-
-typedef ULONG
-(APIENTRY *PFN_DrvResetDevice)(
- IN DHPDEV dhpdev,
- IN PVOID Reserved);
-
-typedef BOOL
-(APIENTRY *PFN_DrvResetPDEV)(
- DHPDEV dhpdevOld,
- DHPDEV dhpdevNew);
-
-typedef ULONG_PTR
-(APIENTRY *PFN_DrvSaveScreenBits)(
- IN SURFOBJ *pso,
- IN ULONG iMode,
- IN ULONG_PTR ident,
- IN RECTL *prcl);
-
-typedef BOOL
-(APIENTRY *PFN_DrvSendPage)(
- IN SURFOBJ *pso);
-
-typedef BOOL
-(APIENTRY *PFN_DrvSetPalette)(
- IN DHPDEV dhpdev,
- IN PALOBJ *ppalo,
- IN FLONG fl,
- IN ULONG iStart,
- IN ULONG cColors);
-
-typedef BOOL
-(APIENTRY *PFN_DrvSetPixelFormat)(
- IN SURFOBJ *pso,
- IN LONG iPixelFormat,
- IN HWND hwnd);
-
-typedef ULONG
-(APIENTRY *PFN_DrvSetPointerShape)(
- IN SURFOBJ *pso,
- IN SURFOBJ *psoMask,
- IN SURFOBJ *psoColor,
- IN XLATEOBJ *pxlo,
- IN LONG xHot,
- IN LONG yHot,
- IN LONG x,
- IN LONG y,
- IN RECTL *prcl,
- IN FLONG fl);
-
-typedef BOOL
-(APIENTRY *PFN_DrvStartBanding)(
- IN SURFOBJ *pso,
- IN POINTL *pptl);
-
-typedef BOOL
-(APIENTRY *PFN_DrvStartDoc)(
- IN SURFOBJ *pso,
- IN LPWSTR pwszDocName,
- IN DWORD dwJobId);
-
-typedef BOOL
-(APIENTRY *PFN_DrvStartPage)(
- IN SURFOBJ *pso);
-
-typedef BOOL
-(APIENTRY *PFN_DrvStretchBlt)(
- IN SURFOBJ *psoDest,
- IN SURFOBJ *psoSrc,
- IN SURFOBJ *psoMask,
- IN CLIPOBJ *pco,
- IN XLATEOBJ *pxlo,
- IN COLORADJUSTMENT *pca,
- IN POINTL *pptlHTOrg,
- IN RECTL *prclDest,
- IN RECTL *prclSrc,
- IN POINTL *pptlMask,
- IN ULONG iMode);
-
-typedef BOOL
-(APIENTRY *PFN_DrvStretchBltROP)(
- IN SURFOBJ *psoDest,
- IN SURFOBJ *psoSrc,
- IN SURFOBJ *psoMask,
- IN CLIPOBJ *pco,
- IN XLATEOBJ *pxlo,
- IN COLORADJUSTMENT *pca,
- IN POINTL *pptlHTOrg,
- IN RECTL *prclDest,
- IN RECTL *prclSrc,
- IN POINTL *pptlMask,
- IN ULONG iMode,
- IN BRUSHOBJ *pbo,
- IN DWORD rop4);
-
-typedef BOOL
-(APIENTRY *PFN_DrvStrokeAndFillPath)(
- IN SURFOBJ *pso,
- IN PATHOBJ *ppo,
- IN CLIPOBJ *pco,
- IN XFORMOBJ *pxo,
- IN BRUSHOBJ *pboStroke,
- IN LINEATTRS *plineattrs,
- IN BRUSHOBJ *pboFill,
- IN POINTL *pptlBrushOrg,
- IN MIX mixFill,
- IN FLONG flOptions);
-
-typedef BOOL
-(APIENTRY *PFN_DrvStrokePath)(
- IN SURFOBJ *pso,
- IN PATHOBJ *ppo,
- IN CLIPOBJ *pco,
- IN XFORMOBJ *pxo,
- IN BRUSHOBJ *pbo,
- IN POINTL *pptlBrushOrg,
- IN LINEATTRS *plineattrs,
- IN MIX mix);
-
-typedef BOOL
-(APIENTRY *PFN_DrvSwapBuffers)(
- IN SURFOBJ *pso,
- IN WNDOBJ *pwo);
-
-typedef VOID
-(APIENTRY *PFN_DrvSynchronize)(
- IN DHPDEV dhpdev,
- IN RECTL *prcl);
-
-typedef VOID
-(APIENTRY *PFN_DrvSynchronizeSurface)(
- IN SURFOBJ *pso,
- IN RECTL *prcl,
- IN FLONG fl);
-
-typedef BOOL
-(APIENTRY *PFN_DrvTextOut)(
- IN SURFOBJ *pso,
- IN STROBJ *pstro,
- IN FONTOBJ *pfo,
- IN CLIPOBJ *pco,
- IN RECTL *prclExtra,
- IN RECTL *prclOpaque,
- IN BRUSHOBJ *pboFore,
- IN BRUSHOBJ *pboOpaque,
- IN POINTL *pptlOrg,
- IN MIX mix);
-
-typedef BOOL
-(APIENTRY *PFN_DrvTransparentBlt)(
- IN SURFOBJ *psoDst,
- IN SURFOBJ *psoSrc,
- IN CLIPOBJ *pco,
- IN XLATEOBJ *pxlo,
- IN RECTL *prclDst,
- IN RECTL *prclSrc,
- IN ULONG iTransColor,
- IN ULONG ulReserved);
-
-typedef BOOL
-(APIENTRY *PFN_DrvUnloadFontFile)(
- IN ULONG_PTR iFile);
-
-
-WIN32KAPI
-VOID
-APIENTRY
-DrvDisableDirectDraw(
- IN DHPDEV dhpdev);
-
-typedef VOID
-(APIENTRY *PFN_DrvDisableDirectDraw)(
- IN DHPDEV dhpdev);
-
-WIN32KAPI
-BOOL
-APIENTRY
-DrvEnableDirectDraw(
- IN DHPDEV dhpdev,
- OUT DD_CALLBACKS *pCallBacks,
- OUT DD_SURFACECALLBACKS *pSurfaceCallBacks,
- OUT DD_PALETTECALLBACKS *pPaletteCallBacks);
-
-typedef BOOL
-(APIENTRY *PFN_DrvEnableDirectDraw)(
- IN DHPDEV dhpdev,
- OUT DD_CALLBACKS *pCallBacks,
- OUT DD_SURFACECALLBACKS *pSurfaceCallBacks,
- OUT DD_PALETTECALLBACKS *pPaletteCallBacks);
-
-WIN32KAPI
-BOOL
-APIENTRY
-DrvGetDirectDrawInfo(
- IN DHPDEV dhpdev,
- OUT DD_HALINFO *pHalInfo,
- OUT DWORD *pdwNumHeaps,
- OUT VIDEOMEMORY *pvmList,
- OUT DWORD *pdwNumFourCCCodes,
- OUT DWORD *pdwFourCC);
-
-typedef BOOL
-(APIENTRY *PFN_DrvGetDirectDrawInfo)(
- IN DHPDEV dhpdev,
- OUT DD_HALINFO *pHalInfo,
- OUT DWORD *pdwNumHeaps,
- OUT VIDEOMEMORY *pvmList,
- OUT DWORD *pdwNumFourCCCodes,
- OUT DWORD *pdwFourCC);
-
-//DECLSPEC_DEPRECATED_DDK
-BOOL
-APIENTRY
-DrvQuerySpoolType(
- IN DHPDEV dhpdev,
- IN LPWSTR pwchType);
-
-typedef BOOL
-(APIENTRY *PFN_DrvQuerySpoolType)(
- IN DHPDEV dhpdev,
- IN LPWSTR pwchType);
+(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;
#ifdef __cplusplus