Changed the calling convention used by the video miniport/port driver interface and the display driver/win32k interface (DrvXxx functions) to STDCALL.

The EngXxx and other funtions will be changed in a second step.

svn path=/trunk/; revision=3095
This commit is contained in:
Eric Kohl 2002-06-15 14:58:25 +00:00
parent 8dd702a72b
commit 37c39cc09a
12 changed files with 735 additions and 589 deletions

View file

@ -1,9 +1,9 @@
/*
* entry.c
*
* $Revision: 1.17 $
* $Author: chorns $
* $Date: 2002/02/08 02:57:09 $
* $Revision: 1.18 $
* $Author: ekohl $
* $Date: 2002/06/15 14:57:26 $
*
*/
@ -13,62 +13,23 @@
#define DBG_PREFIX "VGADDI: "
VOID VGADDIAssertMode(IN DHPDEV DPev,
IN BOOL Enable);
VOID VGADDICompletePDEV(IN DHPDEV PDev,
IN HDEV Dev);
VOID VGADDIDisablePDEV(IN DHPDEV PDev);
VOID VGADDIDisableSurface(IN DHPDEV PDev);
DHPDEV VGADDIEnablePDEV(IN DEVMODEW *DM,
IN LPWSTR LogAddress,
IN ULONG PatternCount,
OUT HSURF *SurfPatterns,
IN ULONG CapsSize,
OUT ULONG *DevCaps,
IN ULONG DevInfoSize,
OUT DEVINFO *DI,
IN LPWSTR DevDataFile,
IN LPWSTR DeviceName,
IN HANDLE Driver);
HSURF VGADDIEnableSurface(IN DHPDEV PDev);
ULONG VGADDIGetModes(IN HANDLE Driver,
IN ULONG DataSize,
OUT PDEVMODEW DM);
BOOL VGADDILineTo(SURFOBJ *Surface, CLIPOBJ *Clip, BRUSHOBJ *Brush,
LONG x1, LONG y1, LONG x2, LONG y2,
RECTL *RectBounds, MIX mix);
BOOL VGADDIPaint(IN SURFOBJ *Surface, IN CLIPOBJ *ClipRegion,
IN BRUSHOBJ *Brush, IN POINTL *BrushOrigin,
IN MIX Mix);
BOOL VGADDIBitBlt(SURFOBJ *Dest, SURFOBJ *Source, SURFOBJ *Mask,
CLIPOBJ *Clip, XLATEOBJ *ColorTranslation,
RECTL *DestRect, POINTL *SourcePoint, POINTL *MaskPoint,
BRUSHOBJ *Brush, POINTL *BrushPoint, ROP4 rop4);
VOID VGADDIMovePointer(PSURFOBJ pso, LONG x, LONG y, PRECTL prcl);
ULONG VGADDISetPointerShape(PSURFOBJ pso, PSURFOBJ psoMask, PSURFOBJ psoColor, PXLATEOBJ pxlo,
LONG xHot, LONG yHot, LONG x, LONG y,
PRECTL prcl, ULONG fl);
BOOL VGADDITransparentBlt(PSURFOBJ Dest, PSURFOBJ Source,
PCLIPOBJ Clip, PXLATEOBJ ColorTranslation,
PRECTL DestRect, PRECTL SourceRect,
ULONG TransparentColor, ULONG Reserved);
DRVFN FuncList[] =
{
/* Required Display driver fuctions */
{INDEX_DrvAssertMode, (PFN) VGADDIAssertMode},
{INDEX_DrvCompletePDEV, (PFN) VGADDICompletePDEV},
{INDEX_DrvDisablePDEV, (PFN) VGADDIDisablePDEV},
{INDEX_DrvDisableSurface, (PFN) VGADDIDisableSurface},
{INDEX_DrvEnablePDEV, (PFN) VGADDIEnablePDEV},
{INDEX_DrvEnableSurface, (PFN) VGADDIEnableSurface},
{INDEX_DrvGetModes, (PFN) VGADDIGetModes},
{INDEX_DrvLineTo, (PFN) VGADDILineTo},
{INDEX_DrvPaint, (PFN) VGADDIPaint},
{INDEX_DrvBitBlt, (PFN) VGADDIBitBlt},
{INDEX_DrvTransparentBlt, (PFN) VGADDITransparentBlt},
{INDEX_DrvMovePointer, (PFN) VGADDIMovePointer},
{INDEX_DrvSetPointerShape, (PFN) VGADDISetPointerShape},
{INDEX_DrvAssertMode, (PFN) DrvAssertMode},
{INDEX_DrvCompletePDEV, (PFN) DrvCompletePDEV},
{INDEX_DrvDisablePDEV, (PFN) DrvDisablePDEV},
{INDEX_DrvDisableSurface, (PFN) DrvDisableSurface},
{INDEX_DrvEnablePDEV, (PFN) DrvEnablePDEV},
{INDEX_DrvEnableSurface, (PFN) DrvEnableSurface},
{INDEX_DrvGetModes, (PFN) DrvGetModes},
{INDEX_DrvLineTo, (PFN) DrvLineTo},
{INDEX_DrvPaint, (PFN) DrvPaint},
{INDEX_DrvBitBlt, (PFN) DrvBitBlt},
{INDEX_DrvTransparentBlt, (PFN) DrvTransparentBlt},
{INDEX_DrvMovePointer, (PFN) DrvMovePointer},
{INDEX_DrvSetPointerShape, (PFN) DrvSetPointerShape},
#if 0
/* Optional Display driver functions */
@ -98,10 +59,10 @@ DRVFN FuncList[] =
};
BOOL
DrvEnableDriver(IN ULONG EngineVersion,
IN ULONG SizeOfDED,
OUT PDRVENABLEDATA DriveEnableData)
BOOL STDCALL
DrvEnableDriver(IN ULONG EngineVersion,
IN ULONG SizeOfDED,
OUT PDRVENABLEDATA DriveEnableData)
{
EngDebugPrint("VGADDI", "DrvEnableDriver called...\n", 0);
@ -125,7 +86,8 @@ DrvEnableDriver(IN ULONG EngineVersion,
// RETURNS:
// NONE
VOID DrvDisableDriver(VOID)
VOID STDCALL
DrvDisableDriver(VOID)
{
return;
}
@ -153,26 +115,27 @@ VOID DrvDisableDriver(VOID)
// RETURNS:
// DHPDEV a handle to a DPev object
DHPDEV VGADDIEnablePDEV(IN DEVMODEW *DM,
IN LPWSTR LogAddress,
IN ULONG PatternCount,
OUT HSURF *SurfPatterns,
IN ULONG CapsSize,
OUT ULONG *DevCaps,
IN ULONG DevInfoSize,
OUT DEVINFO *DI,
IN LPWSTR DevDataFile,
IN LPWSTR DeviceName,
IN HANDLE Driver)
DHPDEV STDCALL
DrvEnablePDEV(IN DEVMODEW *DM,
IN LPWSTR LogAddress,
IN ULONG PatternCount,
OUT HSURF *SurfPatterns,
IN ULONG CapsSize,
OUT ULONG *DevCaps,
IN ULONG DevInfoSize,
OUT DEVINFO *DI,
IN LPWSTR DevDataFile,
IN LPWSTR DeviceName,
IN HANDLE Driver)
{
PPDEV PDev;
PDev = EngAllocMem(FL_ZERO_MEMORY, sizeof(PDEV), ALLOC_TAG);
if (PDev == NULL)
{
EngDebugPrint(DBG_PREFIX, "EngAllocMem failed for PDEV\n", 0);
return NULL;
}
{
EngDebugPrint(DBG_PREFIX, "EngAllocMem failed for PDEV\n", 0);
return(NULL);
}
PDev->KMDriver = Driver;
DPRINT( "PDev: %x, Driver: %x\n", PDev, PDev->KMDriver );
PDev->xyCursor.x = 320;
@ -184,28 +147,31 @@ DHPDEV VGADDIEnablePDEV(IN DEVMODEW *DM,
// FIXME: fill out DevCaps
// FIXME: full out DevInfo
devinfoVGA.hpalDefault = EngCreatePalette(PAL_INDEXED, 16, (PULONG)(VGApalette.PaletteEntry), 0, 0, 0);
devinfoVGA.hpalDefault = EngCreatePalette(PAL_INDEXED, 16, (PULONG *)VGApalette.PaletteEntry, 0, 0, 0);
DPRINT("Palette from Driver: %u\n", devinfoVGA.hpalDefault);
*DI = devinfoVGA;
DPRINT("Palette from Driver 2: %u and DI is %08x\n", DI->hpalDefault, DI);
return PDev;
return(PDev);
}
// DrvEnablePDEV
// DrvCompletePDEV
// DESCRIPTION
// Called after initialization of PDEV is complete. Supplies
// a reference to the GDI handle for the PDEV.
VOID VGADDICompletePDEV(IN DHPDEV PDev,
IN HDEV Dev)
VOID STDCALL
DrvCompletePDEV(IN DHPDEV PDev,
IN HDEV Dev)
{
((PPDEV) PDev)->GDIDevHandle = Dev; // Handle to the DC
}
VOID VGADDIAssertMode(IN DHPDEV DPev,
IN BOOL Enable)
BOOL STDCALL
DrvAssertMode(IN DHPDEV DPev,
IN BOOL Enable)
{
PPDEV ppdev = (PPDEV)DPev;
ULONG returnedDataLength;
@ -238,7 +204,9 @@ VOID VGADDIAssertMode(IN DHPDEV DPev,
}
}
VOID VGADDIDisablePDEV(IN DHPDEV PDev)
VOID STDCALL
DrvDisablePDEV(IN DHPDEV PDev)
{
PPDEV ppdev = (PPDEV)PDev;
@ -256,7 +224,9 @@ VOID VGADDIDisablePDEV(IN DHPDEV PDev)
EngFreeMem(PDev);
}
VOID VGADDIDisableSurface(IN DHPDEV PDev)
VOID STDCALL
DrvDisableSurface(IN DHPDEV PDev)
{
PPDEV ppdev = (PPDEV)PDev;
PDEVSURF pdsurf = ppdev->AssociatedSurf;
@ -296,7 +266,9 @@ VOID VGADDIDisableSurface(IN DHPDEV PDev)
// EngFreeMem(pdsurf); // free the surface
}
VOID InitSavedBits(PPDEV ppdev)
static VOID
InitSavedBits(PPDEV ppdev)
{
if (!(ppdev->fl & DRIVER_OFFSCREEN_REFRESHED))
{
@ -338,18 +310,23 @@ VOID InitSavedBits(PPDEV ppdev)
return;
}
HSURF VGADDIEnableSurface(IN DHPDEV PDev)
HSURF STDCALL
DrvEnableSurface(IN DHPDEV PDev)
{
PPDEV ppdev = (PPDEV)PDev;
PDEVSURF pdsurf;
DHSURF dhsurf;
HSURF hsurf;
DPRINT1("DrvEnableSurface() called\n");
// Initialize the VGA
if (!InitVGA(ppdev, TRUE))
{
goto error_done;
}
CHECKPOINT1;
// dhsurf is of type DEVSURF, which is the drivers specialized surface type
dhsurf = (DHSURF)EngAllocMem(0, sizeof(DEVSURF), ALLOC_TAG);
@ -416,9 +393,11 @@ error_done:
return((HSURF)0);
}
ULONG VGADDIGetModes(IN HANDLE Driver,
IN ULONG DataSize,
OUT PDEVMODEW DM)
ULONG STDCALL
DrvGetModes(IN HANDLE Driver,
IN ULONG DataSize,
OUT PDEVMODEW DM)
{
DWORD NumModes;
DWORD ModeSize;
@ -487,4 +466,3 @@ ULONG VGADDIGetModes(IN HANDLE Driver,
}
/* EOF */

View file

@ -200,10 +200,19 @@ BOOL VGAtoVGA(
return TRUE;
}
BOOL VGADDIBitBlt(SURFOBJ *Dest, SURFOBJ *Source, SURFOBJ *Mask,
CLIPOBJ *Clip, XLATEOBJ *ColorTranslation,
RECTL *DestRect, POINTL *SourcePoint, POINTL *MaskPoint,
BRUSHOBJ *Brush, POINTL *BrushPoint, ROP4 rop4)
BOOL STDCALL
DrvBitBlt(SURFOBJ *Dest,
SURFOBJ *Source,
SURFOBJ *Mask,
CLIPOBJ *Clip,
XLATEOBJ *ColorTranslation,
RECTL *DestRect,
POINTL *SourcePoint,
POINTL *MaskPoint,
BRUSHOBJ *Brush,
POINTL *BrushPoint,
ROP4 rop4)
{
RECT_ENUM RectEnum;
BOOL EnumMore;

View file

@ -2,9 +2,16 @@
#include "../vgavideo/vgavideo.h"
BOOL VGADDILineTo(SURFOBJ *Surface, CLIPOBJ *Clip, BRUSHOBJ *Brush,
LONG x1, LONG y1, LONG x2, LONG y2,
RECTL *RectBounds, MIX mix)
BOOL STDCALL
DrvLineTo(SURFOBJ *Surface,
CLIPOBJ *Clip,
BRUSHOBJ *Brush,
LONG x1,
LONG y1,
LONG x2,
LONG y2,
RECTL *RectBounds,
MIX mix)
// FIXME: Use ClipObj and RectBounds to clip the line where required
// FIXME: Use Mix to perform ROPs

View file

@ -102,9 +102,13 @@ BOOL VGADDIPaintRgn(SURFOBJ *Surface, CLIPOBJ *ClipRegion, ULONG iColor, MIX Mix
}
}
BOOL VGADDIPaint(IN SURFOBJ *Surface, IN CLIPOBJ *ClipRegion,
IN BRUSHOBJ *Brush, IN POINTL *BrushOrigin,
IN MIX Mix)
BOOL STDCALL
DrvPaint(IN SURFOBJ *Surface,
IN CLIPOBJ *ClipRegion,
IN BRUSHOBJ *Brush,
IN POINTL *BrushOrigin,
IN MIX Mix)
{
ULONG iSolidColor;

View file

@ -33,7 +33,12 @@ BOOL InitPointer(PPDEV ppdev)
return TRUE;
}
VOID VGADDIMovePointer(PSURFOBJ pso, LONG x, LONG y, PRECTL prcl)
VOID STDCALL
DrvMovePointer(IN PSURFOBJ pso,
IN LONG x,
IN LONG y,
IN PRECTL prcl)
{
PPDEV ppdev = (PPDEV)pso->dhpdev;
@ -53,9 +58,18 @@ VOID VGADDIMovePointer(PSURFOBJ pso, LONG x, LONG y, PRECTL prcl)
// if (prcl != NULL) ComputePointerRect(ppdev, prcl);
}
ULONG VGADDISetPointerShape(PSURFOBJ pso, PSURFOBJ psoMask, PSURFOBJ psoColor, PXLATEOBJ pxlo,
LONG xHot, LONG yHot, LONG x, LONG y,
PRECTL prcl, ULONG fl)
ULONG STDCALL
DrvSetPointerShape(PSURFOBJ pso,
PSURFOBJ psoMask,
PSURFOBJ psoColor,
PXLATEOBJ pxlo,
LONG xHot,
LONG yHot,
LONG x,
LONG y,
PRECTL prcl,
ULONG fl)
{
PPDEV ppdev = (PPDEV)pso->dhpdev;
PCHAR DFBTmp;

View file

@ -6,10 +6,15 @@
#include "brush.h"
#include "bitblt.h"
BOOL VGADDITransparentBlt(PSURFOBJ Dest, PSURFOBJ Source,
PCLIPOBJ Clip, PXLATEOBJ ColorTranslation,
PRECTL DestRect, PRECTL SourceRect,
ULONG TransparentColor, ULONG Reserved)
BOOL STDCALL
DrvTransparentBlt(PSURFOBJ Dest,
PSURFOBJ Source,
PCLIPOBJ Clip,
PXLATEOBJ ColorTranslation,
PRECTL DestRect,
PRECTL SourceRect,
ULONG TransparentColor,
ULONG Reserved)
{
LONG dx, dy, sx, sy;

View file

@ -1,4 +1,4 @@
; $Id: vgaddi.def,v 1.1 2000/03/10 12:45:44 jfilby Exp $
; $Id: vgaddi.def,v 1.2 2002/06/15 14:56:53 ekohl Exp $
;
; vgaddi.def
;
@ -8,4 +8,4 @@
;
LIBRARY vgaddi.dll
EXPORTS
DrvEnableDriver
DrvEnableDriver@12

View file

@ -1,4 +1,4 @@
; $Id: vgaddi.edf,v 1.1 2000/03/10 12:45:44 jfilby Exp $
; $Id: vgaddi.edf,v 1.2 2002/06/15 14:56:53 ekohl Exp $
;
; vgaddi.def
;
@ -8,4 +8,4 @@
;
LIBRARY vgaddi.dll
EXPORTS
DrvEnableDriver=DrvEnableDriver
DrvEnableDriver=DrvEnableDriver@12

View file

@ -11,20 +11,26 @@
#define VERSION "0.0.0"
// ---------------------------------------------------- Forward Declarations
static VP_STATUS VGAFindAdapter(PVOID DeviceExtension,
PVOID Context,
PWSTR ArgumentString,
PVIDEO_PORT_CONFIG_INFO ConfigInfo,
PUCHAR Again);
static BOOLEAN VGAInitialize(PVOID DeviceExtension);
static BOOLEAN VGAStartIO(PVOID DeviceExtension,
PVIDEO_REQUEST_PACKET RequestPacket);
static VP_STATUS STDCALL
VGAFindAdapter(PVOID DeviceExtension,
PVOID Context,
PWSTR ArgumentString,
PVIDEO_PORT_CONFIG_INFO ConfigInfo,
PUCHAR Again);
static BOOLEAN STDCALL
VGAInitialize(PVOID DeviceExtension);
static BOOLEAN STDCALL
VGAStartIO(PVOID DeviceExtension,
PVIDEO_REQUEST_PACKET RequestPacket);
/*
static BOOLEAN VGAInterrupt(PVOID DeviceExtension);
static BOOLEAN VGAResetHw(PVOID DeviceExtension,
ULONG Columns,
ULONG Rows);
static VOID VGATimer(PVOID DeviceExtension);
static BOOLEAN STDCALL
VGAInterrupt(PVOID DeviceExtension);
static BOOLEAN STDCALL
VGAResetHw(PVOID DeviceExtension,
ULONG Columns,
ULONG Rows);
static VOID STDCALL
VGATimer(PVOID DeviceExtension);
*/
/* Mandatory IoControl routines */
@ -69,8 +75,8 @@ VOID VGAUnshareVideoMemory(IN PVIDEO_MEMORY MemoryToUnshare,
// VP_STATUS
VP_STATUS STDCALL
DriverEntry(IN PVOID Context1,
IN PVOID Context2)
DriverEntry(IN PVOID Context1,
IN PVOID Context2)
{
VIDEO_HW_INITIALIZATION_DATA InitData;
@ -116,12 +122,12 @@ DriverEntry(IN PVOID Context1,
// RETURNS:
// VP_STATUS
static VP_STATUS
VGAFindAdapter(PVOID DeviceExtension,
PVOID Context,
PWSTR ArgumentString,
PVIDEO_PORT_CONFIG_INFO ConfigInfo,
PUCHAR Again)
static VP_STATUS STDCALL
VGAFindAdapter(PVOID DeviceExtension,
PVOID Context,
PWSTR ArgumentString,
PVIDEO_PORT_CONFIG_INFO ConfigInfo,
PUCHAR Again)
{
/* FIXME: Determine if the adapter is present */
*Again = FALSE;
@ -148,8 +154,8 @@ VGAFindAdapter(PVOID DeviceExtension,
// PVOID DeviceExtension
// RETURNS:
// BOOLEAN Success or failure
static BOOLEAN
VGAInitialize(PVOID DeviceExtension)
static BOOLEAN STDCALL
VGAInitialize(PVOID DeviceExtension)
{
return FALSE;
}
@ -205,9 +211,9 @@ VGAInitialize(PVOID DeviceExtension)
// BOOLEAN This function must return TRUE, and complete the work or
// set an error status in the VRP.
static BOOLEAN
VGAStartIO(PVOID DeviceExtension,
PVIDEO_REQUEST_PACKET RequestPacket)
static BOOLEAN STDCALL
VGAStartIO(PVOID DeviceExtension,
PVIDEO_REQUEST_PACKET RequestPacket)
{
switch (RequestPacket->IoControlCode)
{
@ -328,7 +334,11 @@ VGAStartIO(PVOID DeviceExtension,
// RETURNS:
// BOOLEAN TRUE if the interrupt was handled by the routine
static BOOLEAN VGAInterrupt(PVOID DeviceExtension);
static BOOLEAN STDCALL
VGAInterrupt(PVOID DeviceExtension)
{
return(TRUE);
}
// VGAResetHw
//
@ -347,9 +357,13 @@ static BOOLEAN VGAInterrupt(PVOID DeviceExtension);
// BOOLEAN TRUE if no further action is necessary, FALSE if the system
// needs to still do a BOIS int 10 reset.
static BOOLEAN VGAResetHw(PVOID DeviceExtension,
ULONG Columns,
ULONG Rows);
static BOOLEAN STDCALL
VGAResetHw(PVOID DeviceExtension,
ULONG Columns,
ULONG Rows)
{
return(TRUE);
}
// VGATimer
//
@ -364,7 +378,10 @@ static BOOLEAN VGAResetHw(PVOID DeviceExtension,
// RETURNS:
// VOID
static VOID VGATimer(PVOID DeviceExtension);
static VOID STDCALL
VGATimer(PVOID DeviceExtension)
{
}
#endif

View file

@ -40,85 +40,92 @@ typedef LONG VP_STATUS, *PVP_STATUS;
#define VIDEO_MEMORY_SPACE_DENSE 0x04
#define VIDEO_MEMORY_SPACE_P6CACHE 0x08
typedef struct _VIDEO_POINTER_CAPABILITIES {
ULONG Flags;
ULONG MaxWidth;
ULONG MaxHeight;
ULONG HWPtrBitmapStart;
ULONG HWPtrBitmapEnd;
typedef struct _VIDEO_POINTER_CAPABILITIES
{
ULONG Flags;
ULONG MaxWidth;
ULONG MaxHeight;
ULONG HWPtrBitmapStart;
ULONG HWPtrBitmapEnd;
} VIDEO_POINTER_CAPABILITIES, *PVIDEO_POINTER_CAPABILITIES;
typedef struct _VIDEO_POINTER_ATTRIBUTES {
ULONG Flags;
ULONG Width;
ULONG Height;
ULONG WidthInBytes;
ULONG Enable;
SHORT Column;
SHORT Row;
UCHAR Pixels[1];
typedef struct _VIDEO_POINTER_ATTRIBUTES
{
ULONG Flags;
ULONG Width;
ULONG Height;
ULONG WidthInBytes;
ULONG Enable;
SHORT Column;
SHORT Row;
UCHAR Pixels[1];
} VIDEO_POINTER_ATTRIBUTES, *PVIDEO_POINTER_ATTRIBUTES;
typedef enum _VIDEO_BANK_TYPE {
VideoNotBanked = 0,
VideoBanked1RW,
VideoBanked1R1W,
VideoBanked2RW,
NumVideoBankTypes
typedef enum _VIDEO_BANK_TYPE
{
VideoNotBanked = 0,
VideoBanked1RW,
VideoBanked1R1W,
VideoBanked2RW,
NumVideoBankTypes
} VIDEO_BANK_TYPE, *PVIDEO_BANK_TYPE;
typedef struct _VIDEO_BANK_SELECT {
ULONG Length;
ULONG Size;
ULONG BankingFlags;
ULONG BankingType;
ULONG PlanarHCBankingType;
ULONG BitmapWidthInBytes;
ULONG BitmapSize;
ULONG Granularity;
ULONG PlanarHCGranularity;
ULONG CodeOffset;
ULONG PlanarHCBankCodeOffset;
ULONG PlanarHCEnableCodeOffset;
ULONG PlanarHCDisableCodeOffset;
typedef struct _VIDEO_BANK_SELECT
{
ULONG Length;
ULONG Size;
ULONG BankingFlags;
ULONG BankingType;
ULONG PlanarHCBankingType;
ULONG BitmapWidthInBytes;
ULONG BitmapSize;
ULONG Granularity;
ULONG PlanarHCGranularity;
ULONG CodeOffset;
ULONG PlanarHCBankCodeOffset;
ULONG PlanarHCEnableCodeOffset;
ULONG PlanarHCDisableCodeOffset;
} VIDEO_BANK_SELECT, *PVIDEO_BANK_SELECT;
typedef struct _VIDEO_CLUTDATA {
UCHAR Red;
UCHAR Green;
UCHAR Blue;
UCHAR Unused;
typedef struct _VIDEO_CLUTDATA
{
UCHAR Red;
UCHAR Green;
UCHAR Blue;
UCHAR Unused;
} VIDEO_CLUTDATA, *PVIDEO_CLUTDATA;
typedef struct _VIDEO_NUM_MODES {
ULONG NumModes;
ULONG ModeInformationLength;
typedef struct _VIDEO_NUM_MODES
{
ULONG NumModes;
ULONG ModeInformationLength;
} VIDEO_NUM_MODES, *PVIDEO_NUM_MODES;
typedef struct _VIDEO_MODE_INFORMATION {
ULONG Length;
ULONG ModeIndex;
ULONG VisScreenWidth;
ULONG VisScreenHeight;
ULONG ScreenStride;
ULONG NumberOfPlanes;
ULONG BitsPerPlane;
ULONG Frequency;
ULONG XMillimeter;
ULONG YMillimeter;
ULONG NumberRedBits;
ULONG NumberGreenBits;
ULONG NumberBlueBits;
ULONG RedMask;
ULONG GreenMask;
ULONG BlueMask;
ULONG AttributeFlags;
ULONG VideoMemoryBitmapWidth;
ULONG VideoMemoryBitmapHeight;
ULONG DriverSpecificAttributeFlags;
typedef struct _VIDEO_MODE_INFORMATION
{
ULONG Length;
ULONG ModeIndex;
ULONG VisScreenWidth;
ULONG VisScreenHeight;
ULONG ScreenStride;
ULONG NumberOfPlanes;
ULONG BitsPerPlane;
ULONG Frequency;
ULONG XMillimeter;
ULONG YMillimeter;
ULONG NumberRedBits;
ULONG NumberGreenBits;
ULONG NumberBlueBits;
ULONG RedMask;
ULONG GreenMask;
ULONG BlueMask;
ULONG AttributeFlags;
ULONG VideoMemoryBitmapWidth;
ULONG VideoMemoryBitmapHeight;
ULONG DriverSpecificAttributeFlags;
} VIDEO_MODE_INFORMATION, *PVIDEO_MODE_INFORMATION;
typedef enum _VIDEO_DEVICE_DATA_TYPE
typedef enum _VIDEO_DEVICE_DATA_TYPE
{
VpMachineData,
VpCmosData,
@ -127,20 +134,20 @@ typedef enum _VIDEO_DEVICE_DATA_TYPE
VpMonitorData
} VIDEO_DEVICE_DATA_TYPE, *PVIDEO_DEVICE_DATA_TYPE;
typedef enum _VIDEO_SYNCHRONIZE_PRIORITY
typedef enum _VIDEO_SYNCHRONIZE_PRIORITY
{
VpLowPriority,
VpMediumPriority,
VpHighPriority
} VIDEO_SYNCHRONIZE_PRIORITY, *PVIDEO_SYNCHRONIZE_PRIORITY;
typedef struct _STATUS_BLOCK
typedef struct _STATUS_BLOCK
{
VP_STATUS Status;
ULONG Information;
} STATUS_BLOCK, *PSTATUS_BLOCK;
typedef struct _VIDEO_REQUEST_PACKET
typedef struct _VIDEO_REQUEST_PACKET
{
ULONG IoControlCode;
PSTATUS_BLOCK StatusBlock;
@ -184,7 +191,7 @@ typedef struct _VIDEO_REQUEST_PACKET
#define IOCTL_VIDEO_SET_PALETTE_REGISTERS CTL_CODE(FILE_DEVICE_VIDEO, 31, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_LOAD_AND_SET_FONT CTL_CODE(FILE_DEVICE_VIDEO, 32, METHOD_BUFFERED, FILE_ANY_ACCESS)
typedef struct _VIDEO_PORT_CONFIG_INFO
typedef struct _VIDEO_PORT_CONFIG_INFO
{
ULONG Length;
ULONG SystemIoBusNumber;
@ -204,21 +211,32 @@ typedef struct _VIDEO_PORT_CONFIG_INFO
UCHAR InterruptShareable;
} VIDEO_PORT_CONFIG_INFO, *PVIDEO_PORT_CONFIG_INFO;
typedef VP_STATUS (*PVIDEO_HW_FIND_ADAPTER) (PVOID HwDeviceExtension,
PVOID HwContext,
PWSTR ArgumentString,
PVIDEO_PORT_CONFIG_INFO ConfigInfo,
PUCHAR Again);
typedef BOOLEAN (*PVIDEO_HW_INITIALIZE)(PVOID HwDeviceExtension);
typedef BOOLEAN (*PVIDEO_HW_INTERRUPT)(PVOID HwDeviceExtension);
typedef BOOLEAN (*PVIDEO_HW_START_IO)(PVOID HwDeviceExtension,
PVIDEO_REQUEST_PACKET RequestPacket);
typedef BOOLEAN (*PVIDEO_HW_RESET_HW)(PVOID HwDeviceExtension,
ULONG Columns,
ULONG Rows);
typedef VOID (*PVIDEO_HW_TIMER)(PVOID HwDeviceExtension);
typedef VP_STATUS STDCALL
(*PVIDEO_HW_FIND_ADAPTER)(PVOID HwDeviceExtension,
PVOID HwContext,
PWSTR ArgumentString,
PVIDEO_PORT_CONFIG_INFO ConfigInfo,
PUCHAR Again);
typedef struct _VIDEO_HW_INITIALIZATION_DATA
typedef BOOLEAN STDCALL
(*PVIDEO_HW_INITIALIZE)(PVOID HwDeviceExtension);
typedef BOOLEAN STDCALL
(*PVIDEO_HW_INTERRUPT)(PVOID HwDeviceExtension);
typedef BOOLEAN STDCALL
(*PVIDEO_HW_START_IO)(PVOID HwDeviceExtension,
PVIDEO_REQUEST_PACKET RequestPacket);
typedef BOOLEAN STDCALL
(*PVIDEO_HW_RESET_HW)(PVOID HwDeviceExtension,
ULONG Columns,
ULONG Rows);
typedef VOID STDCALL
(*PVIDEO_HW_TIMER)(PVOID HwDeviceExtension);
typedef struct _VIDEO_HW_INITIALIZATION_DATA
{
ULONG HwInitDataSize;
INTERFACE_TYPE AdapterInterfaceType;
@ -232,23 +250,28 @@ typedef struct _VIDEO_HW_INITIALIZATION_DATA
PVIDEO_HW_TIMER HwTimer;
} VIDEO_HW_INITIALIZATION_DATA, *PVIDEO_HW_INITIALIZATION_DATA;
typedef VP_STATUS (*PMINIPORT_GET_REGISTRY_ROUTINE)(PVOID HwDeviceExtension,
PVOID Context,
PWSTR ValueName,
PVOID ValueData,
ULONG ValueLength);
typedef VP_STATUS (*PMINIPORT_QUERY_DEVICE_ROUTINE)(PVOID HwDeviceExtension,
PVOID Context,
VIDEO_DEVICE_DATA_TYPE DeviceDataType,
PVOID Identifier,
ULONG IdentiferLength,
PVOID ConfigurationData,
ULONG ConfigurationDataLength,
PVOID ComponentInformation,
ULONG ComponentInformationLength);
typedef BOOLEAN (*PMINIPORT_SYNCHRONIZE_ROUTINE)(PVOID Context);
typedef VP_STATUS STDCALL
(*PMINIPORT_GET_REGISTRY_ROUTINE)(PVOID HwDeviceExtension,
PVOID Context,
PWSTR ValueName,
PVOID ValueData,
ULONG ValueLength);
typedef struct _VIDEO_ACCESS_RANGE
typedef VP_STATUS STDCALL
(*PMINIPORT_QUERY_DEVICE_ROUTINE)(PVOID HwDeviceExtension,
PVOID Context,
VIDEO_DEVICE_DATA_TYPE DeviceDataType,
PVOID Identifier,
ULONG IdentiferLength,
PVOID ConfigurationData,
ULONG ConfigurationDataLength,
PVOID ComponentInformation,
ULONG ComponentInformationLength);
typedef BOOLEAN STDCALL
(*PMINIPORT_SYNCHRONIZE_ROUTINE)(PVOID Context);
typedef struct _VIDEO_ACCESS_RANGE
{
PHYSICAL_ADDRESS RangeStart;
ULONG RangeLength;
@ -257,7 +280,7 @@ typedef struct _VIDEO_ACCESS_RANGE
UCHAR RangeShareable;
} VIDEO_ACCESS_RANGE, *PVIDEO_ACCESS_RANGE;
typedef struct _VIDEO_X86_BIOS_ARGUMENTS
typedef struct _VIDEO_X86_BIOS_ARGUMENTS
{
ULONG Eax;
ULONG Ebx;
@ -268,23 +291,28 @@ typedef struct _VIDEO_X86_BIOS_ARGUMENTS
ULONG Ebp;
} VIDEO_X86_BIOS_ARGUMENTS, *PVIDEO_X86_BIOS_ARGUMENTS;
typedef VOID (*PBANKED_SECTION_ROUTINE)(IN ULONG ReadBank, IN ULONG WriteBank, IN PVOID Context);
typedef VOID STDCALL
(*PBANKED_SECTION_ROUTINE)(IN ULONG ReadBank,
IN ULONG WriteBank,
IN PVOID Context);
typedef struct {
USHORT NumEntries;
USHORT FirstEntry;
union {
VIDEO_CLUTDATA RgbArray;
ULONG RgbLong;
typedef struct
{
USHORT NumEntries;
USHORT FirstEntry;
union
{
VIDEO_CLUTDATA RgbArray;
ULONG RgbLong;
} LookupTable[1];
} VIDEO_CLUT, *PVIDEO_CLUT;
typedef struct _VIDEO_MEMORY
typedef struct _VIDEO_MEMORY
{
PVOID RequestedVirtualAddress;
PVOID RequestedVirtualAddress;
} VIDEO_MEMORY, *PVIDEO_MEMORY;
typedef struct _VIDEO_MEMORY_INFORMATION
typedef struct _VIDEO_MEMORY_INFORMATION
{
PVOID VideoRamBase;
ULONG VideoRamLength;
@ -292,12 +320,12 @@ typedef struct _VIDEO_MEMORY_INFORMATION
ULONG FrameBufferLength;
} VIDEO_MEMORY_INFORMATION, *PVIDEO_MEMORY_INFORMATION;
typedef struct _VIDEO_MODE
typedef struct _VIDEO_MODE
{
ULONG RequestedMode;
} VIDEO_MODE, *PVIDEO_MODE;
typedef struct _VIDEO_SHARE_MEMORY
typedef struct _VIDEO_SHARE_MEMORY
{
HANDLE ProcessHandle;
ULONG ViewOffset;

View file

@ -679,207 +679,257 @@ typedef struct _XFORMOBJ
*/
/* GDI --> DDI calls */
BOOL DrvAssertMode(IN DHPDEV PDev,
IN BOOL ShouldEnable);
BOOL DrvBitBlt(IN PSURFOBJ DestSurface,
IN PSURFOBJ SrcSurface,
IN PSURFOBJ MaskSurface,
IN PCLIPOBJ ClipObj,
IN PXLATEOBJ XLateObj,
IN PRECTL DestRectL,
IN PPOINTL SrcPointL,
IN PPOINTL MaskPointL,
IN PBRUSHOBJ BrushObj,
IN PPOINTL BrushPointL,
IN ROP4 RasterOp);
VOID DrvCompletePDEV(IN DHPDEV PDev,
IN HDEV Dev);
BOOL DrvCopyBits(OUT PSURFOBJ DestSurface,
IN PSURFOBJ SrcSurface,
IN PCLIPOBJ ClipObj,
IN PXLATEOBJ XLateObj,
IN PRECTL DestRectL,
IN PPOINTL SrcPointL);
HBITMAP DrvCreateDeviceBitmap(IN DHPDEV DPev,
IN SIZEL SizeL,
IN ULONG Format);
VOID DrvDeleteDeviceBitmap(IN DHSURF Surface);
LONG DrvDescribePixelFormat(IN DHPDEV DPev,
IN LONG PixelFormat,
IN ULONG DescriptorSize,
OUT PPIXELFORMATDESCRIPTOR PFD);
VOID DrvDestroyFont(IN PFONTOBJ FontObj);
VOID DrvDisableDirectDraw(IN DHPDEV PDev);
VOID DrvDisableDriver(VOID);
VOID DrvDisablePDEV(IN DHPDEV PDev);
VOID DrvDisableSurface(IN DHPDEV PDev);
ULONG DrvDitherColor(IN DHPDEV DPev,
IN ULONG Mode,
IN ULONG RGB,
OUT PULONG DitherBits);
ULONG DrvDrawEscape(IN PSURFOBJ SurfObj,
IN ULONG EscCode,
IN PCLIPOBJ ClipObj,
IN PRECTL RectL,
IN ULONG InputSize,
IN PVOID *InputData);
BOOL DrvEnableDirectDraw(IN DHPDEV PDev,
IN PDD_CALLBACKS Callbacks,
IN PDD_SURFACECALLBACKS SurfaceCallbacks,
IN PDD_PALETTECALLBACKS PaletteCallbacks);
BOOL DrvEnableDriver(IN ULONG Version,
IN ULONG DEDSize,
OUT PDRVENABLEDATA DED);
DHPDEV DrvEnablePDEV(IN DEVMODEW *DM,
IN LPWSTR LogAddress,
IN ULONG PatternCount,
OUT HSURF *SurfPatterns,
IN ULONG CapsSize,
OUT ULONG *DevCaps,
IN ULONG DevInfoSize,
OUT DEVINFO *DI,
IN LPWSTR DevDataFile,
IN LPWSTR DeviceName,
IN HANDLE Driver);
HSURF DrvEnableSurface(IN DHPDEV PDev);
BOOL DrvEndDoc(IN PSURFOBJ SurfObj,
IN ULONG Flags);
ULONG DrvEscape(IN PSURFOBJ SurfObj,
IN ULONG EscCode,
IN ULONG InputSize,
IN PVOID *InputData,
IN ULONG OutputSize,
OUT PVOID *OutputData);
BOOL DrvFillPath(IN PSURFOBJ SurfObj,
IN PPATHOBJ PathObj,
IN PCLIPOBJ ClipObj,
IN PBRUSHOBJ BrushObj,
IN PPOINTL BrushOrg,
IN MIX Mix,
IN ULONG Options);
ULONG DrvFontManagement(IN PSURFOBJ SurfObj,
IN PFONTOBJ FontObj,
IN ULONG Mode,
IN ULONG InputSize,
IN PVOID InputData,
IN ULONG OutputSize,
OUT PVOID OutputData);
VOID DrvFree(IN PVOID Obj,
IN ULONG ID);
BOOL DrvGetDirectDrawInfo(IN DHPDEV PDev,
IN PDD_HALINFO HalInfo,
IN PDWORD NumHeaps,
IN PVIDEOMEMORY List,
IN PDWORD NumFourCCCodes,
IN PDWORD FourCC);
ULONG DrvGetGlyphMode(IN DHPDEV DPev,
IN PFONTOBJ FontObj);
ULONG DrvGetModes(IN HANDLE Driver,
IN ULONG DataSize,
OUT PDEVMODEW DM);
PVOID DrvGetTrueTypeFile(IN ULONG FileNumber,
IN PULONG Size);
BOOL DrvLineTo(IN PSURFOBJ SurfObj,
IN PCLIPOBJ ClipObj,
IN PBRUSHOBJ BrushObj,
IN LONG x1,
IN LONG y1,
IN LONG x2,
IN LONG y2,
IN PRECTL Bounds,
IN MIX Mix);
ULONG DrvLoadFontFile(IN ULONG FileNumber,
IN PVOID ViewData,
IN ULONG ViewSize,
IN ULONG LangID);
VOID DrvMovePointer(IN PSURFOBJ SurfObj,
IN LONG x,
IN LONG y,
IN PRECTL RectL);
BOOL DrvNextBand(IN PSURFOBJ SurfObj,
OUT PPOINTL PointL);
BOOL DrvPaint(IN PSURFOBJ SurfObj,
IN PCLIPOBJ ClipObj,
IN PBRUSHOBJ BrushObj,
IN PPOINTL BrushOrg,
IN MIX Mix);
BOOL DrvQueryAdvanceWidths(IN DHPDEV DPev,
IN PFONTOBJ FontObj,
IN ULONG Mode,
IN HGLYPH Glyph,
OUT PVOID *Widths,
IN ULONG NumGlyphs);
PIFIMETRICS DrvQueryFont(IN DHPDEV PDev,
IN ULONG FileNumber,
IN ULONG FaceIndex,
IN PULONG Identifier);
LONG DrvQueryFontCaps(IN ULONG CapsSize,
OUT PULONG CapsData);
LONG DrvQueryFontData(IN DHPDEV DPev,
IN PFONTOBJ FontObj,
IN ULONG Mode,
IN HGLYPH Glyph,
IN PGLYPHDATA GlyphData,
IN PVOID DataBuffer,
IN ULONG BufferSize);
LONG DrvQueryFontFile(IN ULONG FileNumber,
IN ULONG Mode,
IN ULONG BufSize,
OUT PULONG Buf);
PVOID DrvQueryFontTree(IN DHPDEV PDev,
IN ULONG FileNumber,
IN ULONG FaceIndex,
IN ULONG Mode,
OUT ULONG *ID);
BOOL DrvQuerySpoolType(DHPDEV PDev,
LPWSTR SpoolType);
LONG DrvQueryTrueTypeOutline(IN DHPDEV PDev,
IN PFONTOBJ FontObj,
IN HGLYPH Glyph,
IN BOOL MetricsOnly,
IN PGLYPHDATA GlyphData,
IN ULONG BufSize,
OUT PTTPOLYGONHEADER Polygons);
LONG DrvQueryTrueTypeTable(IN ULONG FileNumber,
IN ULONG Font,
IN ULONG Tag,
IN PTRDIFF Start,
IN ULONG BufSize,
OUT BYTE *Buf);
BOOL DrvRealizeBrush(IN PBRUSHOBJ BrushObj,
IN PSURFOBJ TargetSurface,
IN PSURFOBJ PatternSurface,
IN PSURFOBJ MaskSurface,
IN PXLATEOBJ XLateObj,
IN ULONG iHatch);
BOOL DrvResetPDEV(IN DHPDEV PDevOld,
IN DHPDEV PDevNew);
ULONG DrvSaveScreenBits(IN PSURFOBJ SurfObj,
IN ULONG Mode,
IN ULONG ID,
IN PRECTL RectL);
BOOL DrvSendPage(IN PSURFOBJ SurfObj);
BOOL DrvSetPalette(IN DHPDEV PDev,
IN PPALOBJ PaletteObj,
IN ULONG Flags,
IN ULONG Start,
IN ULONG NumColors);
ULONG DrvSetPointerShape(IN PSURFOBJ SurfObj,
IN PSURFOBJ MaskSurface,
IN PSURFOBJ ColorSurface,
IN PXLATEOBJ XLateObj,
IN LONG xHot,
IN LONG yHot,
IN LONG x,
IN LONG y,
IN PRECTL RectL,
IN ULONG Flags);
BOOL DrvStartBanding(IN PSURFOBJ SurfObj,
IN PPOINTL PointL);
BOOL DrvStartDoc(IN PSURFOBJ SurfObj,
IN LPWSTR DocName,
IN DWORD JobID);
BOOL DrvStartPage(IN PSURFOBJ SurfObj);
BOOL STDCALL
DrvAssertMode(IN DHPDEV PDev,
IN BOOL ShouldEnable);
BOOL STDCALL
DrvBitBlt(IN PSURFOBJ DestSurface,
IN PSURFOBJ SrcSurface,
IN PSURFOBJ MaskSurface,
IN PCLIPOBJ ClipObj,
IN PXLATEOBJ XLateObj,
IN PRECTL DestRectL,
IN PPOINTL SrcPointL,
IN PPOINTL MaskPointL,
IN PBRUSHOBJ BrushObj,
IN PPOINTL BrushPointL,
IN ROP4 RasterOp);
VOID STDCALL
DrvCompletePDEV(IN DHPDEV PDev,
IN HDEV Dev);
BOOL STDCALL
DrvCopyBits(OUT PSURFOBJ DestSurface,
IN PSURFOBJ SrcSurface,
IN PCLIPOBJ ClipObj,
IN PXLATEOBJ XLateObj,
IN PRECTL DestRectL,
IN PPOINTL SrcPointL);
HBITMAP STDCALL
DrvCreateDeviceBitmap(IN DHPDEV DPev,
IN SIZEL SizeL,
IN ULONG Format);
VOID STDCALL
DrvDeleteDeviceBitmap(IN DHSURF Surface);
LONG STDCALL
DrvDescribePixelFormat(IN DHPDEV DPev,
IN LONG PixelFormat,
IN ULONG DescriptorSize,
OUT PPIXELFORMATDESCRIPTOR PFD);
VOID STDCALL
DrvDestroyFont(IN PFONTOBJ FontObj);
VOID STDCALL
DrvDisableDirectDraw(IN DHPDEV PDev);
VOID STDCALL
DrvDisableDriver(VOID);
VOID STDCALL
DrvDisablePDEV(IN DHPDEV PDev);
VOID STDCALL
DrvDisableSurface(IN DHPDEV PDev);
ULONG STDCALL
DrvDitherColor(IN DHPDEV DPev,
IN ULONG Mode,
IN ULONG RGB,
OUT PULONG DitherBits);
ULONG STDCALL
DrvDrawEscape(IN PSURFOBJ SurfObj,
IN ULONG EscCode,
IN PCLIPOBJ ClipObj,
IN PRECTL RectL,
IN ULONG InputSize,
IN PVOID *InputData);
BOOL STDCALL
DrvEnableDirectDraw(IN DHPDEV PDev,
IN PDD_CALLBACKS Callbacks,
IN PDD_SURFACECALLBACKS SurfaceCallbacks,
IN PDD_PALETTECALLBACKS PaletteCallbacks);
BOOL STDCALL
DrvEnableDriver(IN ULONG Version,
IN ULONG DEDSize,
OUT PDRVENABLEDATA DED);
DHPDEV STDCALL
DrvEnablePDEV(IN DEVMODEW *DM,
IN LPWSTR LogAddress,
IN ULONG PatternCount,
OUT HSURF *SurfPatterns,
IN ULONG CapsSize,
OUT ULONG *DevCaps,
IN ULONG DevInfoSize,
OUT DEVINFO *DI,
IN LPWSTR DevDataFile,
IN LPWSTR DeviceName,
IN HANDLE Driver);
HSURF STDCALL
DrvEnableSurface(IN DHPDEV PDev);
BOOL STDCALL
DrvEndDoc(IN PSURFOBJ SurfObj,
IN ULONG Flags);
ULONG STDCALL
DrvEscape(IN PSURFOBJ SurfObj,
IN ULONG EscCode,
IN ULONG InputSize,
IN PVOID *InputData,
IN ULONG OutputSize,
OUT PVOID *OutputData);
BOOL STDCALL
DrvFillPath(IN PSURFOBJ SurfObj,
IN PPATHOBJ PathObj,
IN PCLIPOBJ ClipObj,
IN PBRUSHOBJ BrushObj,
IN PPOINTL BrushOrg,
IN MIX Mix,
IN ULONG Options);
ULONG STDCALL
DrvFontManagement(IN PSURFOBJ SurfObj,
IN PFONTOBJ FontObj,
IN ULONG Mode,
IN ULONG InputSize,
IN PVOID InputData,
IN ULONG OutputSize,
OUT PVOID OutputData);
VOID STDCALL
DrvFree(IN PVOID Obj,
IN ULONG ID);
BOOL STDCALL
DrvGetDirectDrawInfo(IN DHPDEV PDev,
IN PDD_HALINFO HalInfo,
IN PDWORD NumHeaps,
IN PVIDEOMEMORY List,
IN PDWORD NumFourCCCodes,
IN PDWORD FourCC);
ULONG STDCALL
DrvGetGlyphMode(IN DHPDEV DPev,
IN PFONTOBJ FontObj);
ULONG STDCALL
DrvGetModes(IN HANDLE Driver,
IN ULONG DataSize,
OUT PDEVMODEW DM);
PVOID STDCALL
DrvGetTrueTypeFile(IN ULONG FileNumber,
IN PULONG Size);
BOOL STDCALL
DrvLineTo(IN PSURFOBJ SurfObj,
IN PCLIPOBJ ClipObj,
IN PBRUSHOBJ BrushObj,
IN LONG x1,
IN LONG y1,
IN LONG x2,
IN LONG y2,
IN PRECTL Bounds,
IN MIX Mix);
ULONG STDCALL
DrvLoadFontFile(IN ULONG FileNumber,
IN PVOID ViewData,
IN ULONG ViewSize,
IN ULONG LangID);
VOID STDCALL
DrvMovePointer(IN PSURFOBJ SurfObj,
IN LONG x,
IN LONG y,
IN PRECTL RectL);
BOOL STDCALL
DrvNextBand(IN PSURFOBJ SurfObj,
OUT PPOINTL PointL);
BOOL STDCALL
DrvPaint(IN PSURFOBJ SurfObj,
IN PCLIPOBJ ClipObj,
IN PBRUSHOBJ BrushObj,
IN PPOINTL BrushOrg,
IN MIX Mix);
BOOL STDCALL
DrvQueryAdvanceWidths(IN DHPDEV DPev,
IN PFONTOBJ FontObj,
IN ULONG Mode,
IN HGLYPH Glyph,
OUT PVOID *Widths,
IN ULONG NumGlyphs);
PIFIMETRICS STDCALL
DrvQueryFont(IN DHPDEV PDev,
IN ULONG FileNumber,
IN ULONG FaceIndex,
IN PULONG Identifier);
LONG STDCALL
DrvQueryFontCaps(IN ULONG CapsSize,
OUT PULONG CapsData);
LONG STDCALL
DrvQueryFontData(IN DHPDEV DPev,
IN PFONTOBJ FontObj,
IN ULONG Mode,
IN HGLYPH Glyph,
IN PGLYPHDATA GlyphData,
IN PVOID DataBuffer,
IN ULONG BufferSize);
LONG STDCALL
DrvQueryFontFile(IN ULONG FileNumber,
IN ULONG Mode,
IN ULONG BufSize,
OUT PULONG Buf);
PVOID STDCALL
DrvQueryFontTree(IN DHPDEV PDev,
IN ULONG FileNumber,
IN ULONG FaceIndex,
IN ULONG Mode,
OUT ULONG *ID);
BOOL STDCALL
DrvQuerySpoolType(DHPDEV PDev,
LPWSTR SpoolType);
LONG STDCALL
DrvQueryTrueTypeOutline(IN DHPDEV PDev,
IN PFONTOBJ FontObj,
IN HGLYPH Glyph,
IN BOOL MetricsOnly,
IN PGLYPHDATA GlyphData,
IN ULONG BufSize,
OUT PTTPOLYGONHEADER Polygons);
LONG STDCALL
DrvQueryTrueTypeTable(IN ULONG FileNumber,
IN ULONG Font,
IN ULONG Tag,
IN PTRDIFF Start,
IN ULONG BufSize,
OUT BYTE *Buf);
BOOL STDCALL
DrvRealizeBrush(IN PBRUSHOBJ BrushObj,
IN PSURFOBJ TargetSurface,
IN PSURFOBJ PatternSurface,
IN PSURFOBJ MaskSurface,
IN PXLATEOBJ XLateObj,
IN ULONG iHatch);
BOOL STDCALL
DrvResetPDEV(IN DHPDEV PDevOld,
IN DHPDEV PDevNew);
ULONG STDCALL
DrvSaveScreenBits(IN PSURFOBJ SurfObj,
IN ULONG Mode,
IN ULONG ID,
IN PRECTL RectL);
BOOL STDCALL
DrvSendPage(IN PSURFOBJ SurfObj);
BOOL STDCALL
DrvSetPalette(IN DHPDEV PDev,
IN PPALOBJ PaletteObj,
IN ULONG Flags,
IN ULONG Start,
IN ULONG NumColors);
ULONG STDCALL
DrvSetPointerShape(IN PSURFOBJ SurfObj,
IN PSURFOBJ MaskSurface,
IN PSURFOBJ ColorSurface,
IN PXLATEOBJ XLateObj,
IN LONG xHot,
IN LONG yHot,
IN LONG x,
IN LONG y,
IN PRECTL RectL,
IN ULONG Flags);
BOOL STDCALL
DrvStartBanding(IN PSURFOBJ SurfObj,
IN PPOINTL PointL);
BOOL STDCALL
DrvStartDoc(IN PSURFOBJ SurfObj,
IN LPWSTR DocName,
IN DWORD JobID);
BOOL STDCALL
DrvStartPage(IN PSURFOBJ SurfObj);
BOOL DrvStretchBlt(IN PSURFOBJ DestSurface,
IN PSURFOBJ SrcSurface,
IN PSURFOBJ MaskSurface,
@ -891,37 +941,51 @@ BOOL DrvStretchBlt(IN PSURFOBJ DestSurface,
IN PRECTL Src,
IN PPOINTL Mask,
IN ULONG Mode);
BOOL DrvStrokeAndFillPath(IN PSURFOBJ SurfObj,
IN PPATHOBJ PathObj,
IN PCLIPOBJ ClipObj,
IN PXFORMOBJ XFormObj,
IN PBRUSHOBJ StrokeBrush,
IN PLINEATTRS LineAttrs,
IN PBRUSHOBJ FillBrush,
IN PPOINTL BrushOrg,
IN MIX MixFill,
IN ULONG Options);
BOOL DrvStrokePath(IN PSURFOBJ SurfObj,
IN PPATHOBJ PathObj,
IN PCLIPOBJ PClipObj,
IN PXFORMOBJ XFormObj,
IN PBRUSHOBJ BrushObj,
IN PPOINTL BrushOrg,
IN PLINEATTRS LineAttrs,
IN MIX Mix);
VOID DrvSynchronize(IN DHPDEV PDev,
IN PRECTL RectL);
BOOL DrvTextOut(IN PSURFOBJ SurfObj,
IN PSTROBJ StrObj,
IN PFONTOBJ FontObj,
IN PCLIPOBJ ClipObj,
IN PRECTL ExtraRect,
IN PRECTL OpaqueRect,
IN PBRUSHOBJ ForegroundBrush,
IN PBRUSHOBJ OpaqueBrush,
IN PPOINTL OrgPoint,
IN MIX Mix);
BOOL DrvUnloadFontFile(IN ULONG FileNumber);
BOOL STDCALL
DrvStrokeAndFillPath(IN PSURFOBJ SurfObj,
IN PPATHOBJ PathObj,
IN PCLIPOBJ ClipObj,
IN PXFORMOBJ XFormObj,
IN PBRUSHOBJ StrokeBrush,
IN PLINEATTRS LineAttrs,
IN PBRUSHOBJ FillBrush,
IN PPOINTL BrushOrg,
IN MIX MixFill,
IN ULONG Options);
BOOL STDCALL
DrvStrokePath(IN PSURFOBJ SurfObj,
IN PPATHOBJ PathObj,
IN PCLIPOBJ PClipObj,
IN PXFORMOBJ XFormObj,
IN PBRUSHOBJ BrushObj,
IN PPOINTL BrushOrg,
IN PLINEATTRS LineAttrs,
IN MIX Mix);
VOID STDCALL
DrvSynchronize(IN DHPDEV PDev,
IN PRECTL RectL);
BOOL STDCALL
DrvTextOut(IN PSURFOBJ SurfObj,
IN PSTROBJ StrObj,
IN PFONTOBJ FontObj,
IN PCLIPOBJ ClipObj,
IN PRECTL ExtraRect,
IN PRECTL OpaqueRect,
IN PBRUSHOBJ ForegroundBrush,
IN PBRUSHOBJ OpaqueBrush,
IN PPOINTL OrgPoint,
IN MIX Mix);
BOOL STDCALL
DrvTransparentBlt(PSURFOBJ Dest,
PSURFOBJ Source,
PCLIPOBJ Clip,
PXLATEOBJ ColorTranslation,
PRECTL DestRect,
PRECTL SourceRect,
ULONG TransparentColor,
ULONG Reserved);
BOOL STDCALL
DrvUnloadFontFile(IN ULONG FileNumber);
/* DDI --> GDI calls */
PVOID BRUSHOBJ_pvAllocRbrush(IN PBRUSHOBJ BrushObj,
@ -944,16 +1008,19 @@ EngAcquireSemaphore
/* FIXME: find correct defines for following symbols */
#define FL_ZERO_MEMORY 1
PVOID APIENTRY EngAllocMem(ULONG Flags,
ULONG MemSize,
ULONG Tag);
PVOID STDCALL
EngAllocMem(ULONG Flags,
ULONG MemSize,
ULONG Tag);
PVOID STDCALL EngAllocUserMem(ULONG cj,
ULONG tag);
PVOID STDCALL
EngAllocUserMem(ULONG cj,
ULONG tag);
BOOL EngAssociateSurface(IN HSURF Surface,
IN HDEV Dev,
IN ULONG Hooks);
BOOL
EngAssociateSurface(IN HSURF Surface,
IN HDEV Dev,
IN ULONG Hooks);
/*
EngBitBlt
@ -962,32 +1029,36 @@ EngComputeGlyphSet
EngCopyBits
*/
HBITMAP EngCreateBitmap(IN SIZEL Size,
IN LONG Width,
IN ULONG Format,
IN ULONG Flags,
IN PVOID Bits);
HBITMAP
EngCreateBitmap(IN SIZEL Size,
IN LONG Width,
IN ULONG Format,
IN ULONG Flags,
IN PVOID Bits);
/*
EngCreateClip
EngCreateDeviceBitmap
*/
HSURF EngCreateDeviceSurface(IN DHSURF Surface,
IN SIZEL Size,
IN ULONG FormatVersion);
HSURF
EngCreateDeviceSurface(IN DHSURF Surface,
IN SIZEL Size,
IN ULONG FormatVersion);
/*
EngCreateDriverObj
EngCreateEvent
*/
HPALETTE EngCreatePalette(IN ULONG Mode,
IN ULONG NumColors,
IN PULONG *Colors,
IN ULONG Red,
IN ULONG Green,
IN ULONG Blue);
HPALETTE
EngCreatePalette(IN ULONG Mode,
IN ULONG NumColors,
IN PULONG *Colors,
IN ULONG Red,
IN ULONG Green,
IN ULONG Blue);
/*
EngCreatePath
EngCreateSemaphore
@ -995,24 +1066,10 @@ EngCreateWnd
EngDebugBreak = NTOSKRNL.DbgBreakPoint
*/
VOID APIENTRY EngDebugPrint(PCHAR StandardPrefix,
PCHAR DebugMessage,
va_list ArgList);
HANDLE STDCALL EngLoadImage(LPWSTR DriverName);
DWORD APIENTRY EngDeviceIoControl(
HANDLE hDevice,
DWORD dwIoControlCode,
LPVOID lpInBuffer,
DWORD nInBufferSize,
LPVOID lpOutBuffer,
DWORD nOutBufferSize,
DWORD *lpBytesReturned);
VOID STDCALL EngFreeMem(PVOID Mem);
VOID STDCALL EngFreeUserMem(PVOID pv);
VOID APIENTRY
EngDebugPrint(PCHAR StandardPrefix,
PCHAR DebugMessage,
va_list ArgList);
/*
EngDeleteClip
@ -1023,11 +1080,33 @@ EngDeletePath
EngDeleteSemaphore
EngDeleteSurface
EngDeleteWnd
*/
DWORD APIENTRY
EngDeviceIoControl(HANDLE hDevice,
DWORD dwIoControlCode,
LPVOID lpInBuffer,
DWORD nInBufferSize,
LPVOID lpOutBuffer,
DWORD nOutBufferSize,
DWORD *lpBytesReturned);
/*
EngEnumForms
EngEraseSurface
EngFillPath
EngFindImageProcAddress
EngFindResource
*/
VOID STDCALL
EngFreeMem(PVOID Mem);
VOID STDCALL
EngFreeUserMem(PVOID pv);
/*
EngFreeModule
EngGetCurrentCodePage
EngGetDriverName
@ -1041,7 +1120,12 @@ EngGetPrinterDataFileName
EngGetProcessHandle
EngGetType1FontList
EngLineTo
EngLoadImage
*/
HANDLE STDCALL
EngLoadImage(LPWSTR DriverName);
/*
EngLoadModule
EngLoadModuleForWrite
EngLockDriverObj

View file

@ -4,8 +4,8 @@
#include <ddk/winddi.h>
typedef BOOL (*PGD_ENABLEDRIVER)(ULONG, ULONG, PDRVENABLEDATA);
typedef DHPDEV (*PGD_ENABLEPDEV)(DEVMODEW *,
typedef BOOL STDCALL (*PGD_ENABLEDRIVER)(ULONG, ULONG, PDRVENABLEDATA);
typedef DHPDEV STDCALL (*PGD_ENABLEPDEV)(DEVMODEW *,
LPWSTR,
ULONG,
HSURF *,
@ -16,79 +16,79 @@ typedef DHPDEV (*PGD_ENABLEPDEV)(DEVMODEW *,
LPWSTR,
LPWSTR,
HANDLE);
typedef VOID (*PGD_COMPLETEPDEV)(DHPDEV, HDEV);
typedef VOID (*PGD_DISABLEPDEV)(DHPDEV);
typedef HSURF (*PGD_ENABLESURFACE)(DHPDEV);
typedef VOID (*PGD_DISABLESURFACE)(DHPDEV);
typedef VOID (*PGD_ASSERTMODE)(DHPDEV, BOOL);
typedef BOOL (*PGD_RESETPDEV)(DHPDEV, DHPDEV);
typedef HBITMAP (*PGD_CREATEDEVICEBITMAP)(DHPDEV, SIZEL, ULONG);
typedef VOID (*PGD_DELETEDEVICEBITMAP)(DHSURF);
typedef BOOL (*PGD_REALIZEBRUSH)(PBRUSHOBJ, PSURFOBJ, PSURFOBJ, PSURFOBJ,
typedef VOID STDCALL (*PGD_COMPLETEPDEV)(DHPDEV, HDEV);
typedef VOID STDCALL (*PGD_DISABLEPDEV)(DHPDEV);
typedef HSURF STDCALL (*PGD_ENABLESURFACE)(DHPDEV);
typedef VOID STDCALL (*PGD_DISABLESURFACE)(DHPDEV);
typedef BOOL STDCALL (*PGD_ASSERTMODE)(DHPDEV, BOOL);
typedef BOOL STDCALL (*PGD_RESETPDEV)(DHPDEV, DHPDEV);
typedef HBITMAP STDCALL (*PGD_CREATEDEVICEBITMAP)(DHPDEV, SIZEL, ULONG);
typedef VOID STDCALL (*PGD_DELETEDEVICEBITMAP)(DHSURF);
typedef BOOL STDCALL (*PGD_REALIZEBRUSH)(PBRUSHOBJ, PSURFOBJ, PSURFOBJ, PSURFOBJ,
PXLATEOBJ, ULONG);
typedef ULONG (*PGD_DITHERCOLOR)(DHPDEV, ULONG, ULONG, PULONG);
typedef BOOL (*PGD_STROKEPATH)(PSURFOBJ, PPATHOBJ, PCLIPOBJ, PXFORMOBJ,
typedef ULONG STDCALL (*PGD_DITHERCOLOR)(DHPDEV, ULONG, ULONG, PULONG);
typedef BOOL STDCALL (*PGD_STROKEPATH)(PSURFOBJ, PPATHOBJ, PCLIPOBJ, PXFORMOBJ,
PBRUSHOBJ, PPOINTL, PLINEATTRS, MIX);
typedef BOOL (*PGD_FILLPATH)(PSURFOBJ, PPATHOBJ, PCLIPOBJ, PBRUSHOBJ,
typedef BOOL STDCALL (*PGD_FILLPATH)(PSURFOBJ, PPATHOBJ, PCLIPOBJ, PBRUSHOBJ,
PPOINTL, MIX, ULONG);
typedef BOOL (*PGD_STROKEANDFILLPATH)(PSURFOBJ, PPATHOBJ, PCLIPOBJ,
typedef BOOL STDCALL (*PGD_STROKEANDFILLPATH)(PSURFOBJ, PPATHOBJ, PCLIPOBJ,
PXFORMOBJ, PBRUSHOBJ, PLINEATTRS,
PBRUSHOBJ, PPOINTL, MIX, ULONG);
typedef BOOL (*PGD_PAINT)(PSURFOBJ, PCLIPOBJ, PBRUSHOBJ, PPOINTL, MIX);
typedef BOOL (*PGD_BITBLT)(PSURFOBJ, PSURFOBJ, PSURFOBJ, PCLIPOBJ,
typedef BOOL STDCALL (*PGD_PAINT)(PSURFOBJ, PCLIPOBJ, PBRUSHOBJ, PPOINTL, MIX);
typedef BOOL STDCALL (*PGD_BITBLT)(PSURFOBJ, PSURFOBJ, PSURFOBJ, PCLIPOBJ,
PXLATEOBJ, PRECTL, PPOINTL, PPOINTL, PBRUSHOBJ,
PPOINTL, ROP4);
typedef BOOL (*PGD_TRANSPARENTBLT)(PSURFOBJ, PSURFOBJ, PCLIPOBJ, PXLATEOBJ, PRECTL, PRECTL, ULONG, ULONG);
typedef BOOL (*PGD_COPYBITS)(PSURFOBJ, PSURFOBJ, PCLIPOBJ, PXLATEOBJ,
typedef BOOL STDCALL (*PGD_TRANSPARENTBLT)(PSURFOBJ, PSURFOBJ, PCLIPOBJ, PXLATEOBJ, PRECTL, PRECTL, ULONG, ULONG);
typedef BOOL STDCALL (*PGD_COPYBITS)(PSURFOBJ, PSURFOBJ, PCLIPOBJ, PXLATEOBJ,
PRECTL, PPOINTL);
typedef BOOL (*PGD_STRETCHBLT)(PSURFOBJ, PSURFOBJ, PSURFOBJ, PCLIPOBJ,
typedef BOOL STDCALL (*PGD_STRETCHBLT)(PSURFOBJ, PSURFOBJ, PSURFOBJ, PCLIPOBJ,
PXLATEOBJ, PCOLORADJUSTMENT, PPOINTL,
PRECTL, PRECTL, PPOINTL, ULONG);
typedef BOOL (*PGD_SETPALETTE)(DHPDEV, PPALOBJ, ULONG, ULONG, ULONG);
typedef BOOL (*PGD_TEXTOUT)(PSURFOBJ, PSTROBJ, PFONTOBJ, PCLIPOBJ, PRECTL,
typedef BOOL STDCALL (*PGD_SETPALETTE)(DHPDEV, PPALOBJ, ULONG, ULONG, ULONG);
typedef BOOL STDCALL (*PGD_TEXTOUT)(PSURFOBJ, PSTROBJ, PFONTOBJ, PCLIPOBJ, PRECTL,
PRECTL, PBRUSHOBJ, PBRUSHOBJ, PPOINTL, MIX);
typedef ULONG (*PGD_ESCAPE)(PSURFOBJ, ULONG, ULONG, PVOID *, ULONG, PVOID *);
typedef ULONG (*PGD_DRAWESCAPE)(PSURFOBJ, ULONG, PCLIPOBJ, PRECTL, ULONG,
typedef ULONG STDCALL (*PGD_ESCAPE)(PSURFOBJ, ULONG, ULONG, PVOID *, ULONG, PVOID *);
typedef ULONG STDCALL (*PGD_DRAWESCAPE)(PSURFOBJ, ULONG, PCLIPOBJ, PRECTL, ULONG,
PVOID *);
typedef PIFIMETRICS (*PGD_QUERYFONT)(DHPDEV, ULONG, ULONG, PULONG);
typedef PVOID (*PGD_QUERYFONTTREE)(DHPDEV, ULONG, ULONG, ULONG, PULONG);
typedef LONG (*PGD_QUERYFONTDATA)(DHPDEV, PFONTOBJ, ULONG, HGLYPH, PGLYPHDATA,
typedef PIFIMETRICS STDCALL (*PGD_QUERYFONT)(DHPDEV, ULONG, ULONG, PULONG);
typedef PVOID STDCALL (*PGD_QUERYFONTTREE)(DHPDEV, ULONG, ULONG, ULONG, PULONG);
typedef LONG STDCALL (*PGD_QUERYFONTDATA)(DHPDEV, PFONTOBJ, ULONG, HGLYPH, PGLYPHDATA,
PVOID, ULONG);
typedef ULONG (*PGD_SETPOINTERSHAPE)(PSURFOBJ, PSURFOBJ, PSURFOBJ, PXLATEOBJ,
typedef ULONG STDCALL (*PGD_SETPOINTERSHAPE)(PSURFOBJ, PSURFOBJ, PSURFOBJ, PXLATEOBJ,
LONG, LONG, LONG, LONG, PRECTL, ULONG);
typedef VOID (*PGD_MOVEPOINTER)(PSURFOBJ, LONG, LONG, PRECTL);
typedef BOOL (*PGD_LINETO)(PSURFOBJ, PCLIPOBJ, PBRUSHOBJ, LONG, LONG, LONG,
LONG, PRECTL, MIX);
typedef BOOL (*PGD_SENDPAGE)(PSURFOBJ);
typedef BOOL (*PGD_STARTPAGE)(PSURFOBJ);
typedef BOOL (*PGD_ENDDOC)(PSURFOBJ, ULONG);
typedef BOOL (*PGD_STARTDOC)(PSURFOBJ, PWSTR, DWORD);
typedef ULONG (*PGD_GETGLYPHMODE)(DHPDEV, PFONTOBJ);
typedef VOID (*PGD_SYNCHRONIZE)(DHPDEV, PRECTL);
typedef ULONG (*PGD_SAVESCREENBITS)(PSURFOBJ, ULONG, ULONG, PRECTL);
typedef ULONG (*PGD_GETMODES)(HANDLE, ULONG, PDEVMODEW);
typedef VOID (*PGD_FREE)(PVOID, ULONG);
typedef VOID (*PGD_DESTROYFONT)(PFONTOBJ);
typedef LONG (*PGD_QUERYFONTCAPS)(ULONG, PULONG);
typedef ULONG (*PGD_LOADFONTFILE)(ULONG, PVOID, ULONG, ULONG);
typedef BOOL (*PGD_UNLOADFONTFILE)(ULONG);
typedef ULONG (*PGD_FONTMANAGEMENT)(PSURFOBJ, PFONTOBJ, ULONG, ULONG, PVOID,
ULONG, PVOID);
typedef LONG (*PGD_QUERYTRUETYPETABLE)(ULONG, ULONG, ULONG, PTRDIFF, ULONG,
PBYTE);
typedef LONG (*PGD_QUERYTRUETYPEOUTLINE)(DHPDEV, PFONTOBJ, HGLYPH, BOOL,
PGLYPHDATA, ULONG, PTTPOLYGONHEADER);
typedef PVOID (*PGD_GETTRUETYPEFILE)(ULONG, PULONG);
typedef LONG (*PGD_QUERYFONTFILE)(ULONG, ULONG, ULONG, PULONG);
typedef BOOL (*PGD_QUERYADVANCEWIDTHS)(DHPDEV, PFONTOBJ, ULONG, HGLYPH *,
PVOID *, ULONG);
typedef BOOL (*PGD_SETPIXELFORMAT)(PSURFOBJ, LONG, ULONG);
typedef LONG (*PGD_DESCRIBEPIXELFORMAT)(DHPDEV, LONG, ULONG,
PPIXELFORMATDESCRIPTOR);
typedef BOOL (*PGD_SWAPBUFFERS)(PSURFOBJ, PWNDOBJ);
typedef BOOL (*PGD_STARTBANDING)(PSURFOBJ, PPOINTL);
typedef BOOL (*PGD_NEXTBAND)(PSURFOBJ, PPOINTL);
typedef LONG (*PGD_QUERYSPOOLTYPE)(DHPDEV, LPWSTR);
typedef VOID STDCALL (*PGD_MOVEPOINTER)(PSURFOBJ, LONG, LONG, PRECTL);
typedef BOOL STDCALL (*PGD_LINETO)(PSURFOBJ, PCLIPOBJ, PBRUSHOBJ, LONG, LONG, LONG,
LONG, PRECTL, MIX);
typedef BOOL STDCALL (*PGD_SENDPAGE)(PSURFOBJ);
typedef BOOL STDCALL (*PGD_STARTPAGE)(PSURFOBJ);
typedef BOOL STDCALL (*PGD_ENDDOC)(PSURFOBJ, ULONG);
typedef BOOL STDCALL (*PGD_STARTDOC)(PSURFOBJ, PWSTR, DWORD);
typedef ULONG STDCALL (*PGD_GETGLYPHMODE)(DHPDEV, PFONTOBJ);
typedef VOID STDCALL (*PGD_SYNCHRONIZE)(DHPDEV, PRECTL);
typedef ULONG STDCALL (*PGD_SAVESCREENBITS)(PSURFOBJ, ULONG, ULONG, PRECTL);
typedef ULONG STDCALL (*PGD_GETMODES)(HANDLE, ULONG, PDEVMODEW);
typedef VOID STDCALL (*PGD_FREE)(PVOID, ULONG);
typedef VOID STDCALL (*PGD_DESTROYFONT)(PFONTOBJ);
typedef LONG STDCALL (*PGD_QUERYFONTCAPS)(ULONG, PULONG);
typedef ULONG STDCALL (*PGD_LOADFONTFILE)(ULONG, PVOID, ULONG, ULONG);
typedef BOOL STDCALL (*PGD_UNLOADFONTFILE)(ULONG);
typedef ULONG STDCALL (*PGD_FONTMANAGEMENT)(PSURFOBJ, PFONTOBJ, ULONG, ULONG, PVOID,
ULONG, PVOID);
typedef LONG STDCALL (*PGD_QUERYTRUETYPETABLE)(ULONG, ULONG, ULONG, PTRDIFF, ULONG,
PBYTE);
typedef LONG STDCALL (*PGD_QUERYTRUETYPEOUTLINE)(DHPDEV, PFONTOBJ, HGLYPH, BOOL,
PGLYPHDATA, ULONG, PTTPOLYGONHEADER);
typedef PVOID STDCALL (*PGD_GETTRUETYPEFILE)(ULONG, PULONG);
typedef LONG STDCALL (*PGD_QUERYFONTFILE)(ULONG, ULONG, ULONG, PULONG);
typedef BOOL STDCALL (*PGD_QUERYADVANCEWIDTHS)(DHPDEV, PFONTOBJ, ULONG, HGLYPH *,
PVOID *, ULONG);
typedef BOOL STDCALL (*PGD_SETPIXELFORMAT)(PSURFOBJ, LONG, ULONG);
typedef LONG STDCALL (*PGD_DESCRIBEPIXELFORMAT)(DHPDEV, LONG, ULONG,
PPIXELFORMATDESCRIPTOR);
typedef BOOL STDCALL (*PGD_SWAPBUFFERS)(PSURFOBJ, PWNDOBJ);
typedef BOOL STDCALL (*PGD_STARTBANDING)(PSURFOBJ, PPOINTL);
typedef BOOL STDCALL (*PGD_NEXTBAND)(PSURFOBJ, PPOINTL);
typedef LONG STDCALL (*PGD_QUERYSPOOLTYPE)(DHPDEV, LPWSTR);
typedef struct _DRIVER_FUNCTIONS