More code for win32k.sys

svn path=/trunk/; revision=522
This commit is contained in:
Rex Jolliff 1999-05-27 23:08:26 +00:00
parent 662c77c00c
commit 9377d51b1a
3 changed files with 424 additions and 10 deletions

View file

@ -0,0 +1,131 @@
/*
* DC.C - Device context functions
*
*/
#include <windows.h>
#include <ddk/ntddk.h>
#include <win32k/dc.h>
// --------------------------------------------------------- File Statics
/* FIXME: these should probably be placed in an object in the future */
HANDLE gDriverHandle = NULL;
DRVENABLEDATA gDED;
typedef struct _DC
{
DHPDEV PDev;
DEVMODEW DMW;
HSURF FillPatternSurfaces[HS_DDI_MAX];
GDIINFO GDIInfo;
DEVINFO DevInfo;
HSURF Surface = NULL;
} DC, *PDC;
DC gSurfaceDC;
// ----------------------------------------------------- Public Functions
BOOL W32kCancelDC(HDC DC)
{
UNIMPLEMENTED;
}
NTSTATUS W32kCreateDC(HDC *DC,
LPCWSTR Driver,
LPCWSTR Device,
CONST PDEVMODE InitData)
{
NTSTATUS Status;
UNICODE_STRING DeviceName, ErrorMsg;
OBJECT_ATTRIBUTES ObjectAttributes;
/* Is this a request for a printer DC? */
if (wcsicmp(Driver, L"DISPLAY"))
{
UNIMPLEMENTED;
}
/* Initialize driver pair here on first call for display DC. */
if (gDriverHandle == NULL)
{
/* FIXME: should get the device name from the registry */
RtlInitUnicodeString(&DeviceName, L"\\Device\\DISPLAY");
InitializeObjectAttributes(&ObjectAttributes,
&DeviceName,
0,
NULL,
NULL);
Status = ZwOpenFile(&gDriverHandle,
FILE_ALL_ACCESS,
&ObjectAttributes,
NULL,
0,
FILE_SYNCHRONOUS_IO_ALERT);
if (!NT_SUCCESS(Status))
{
DbgPrint("Failed to open display device\n");
DbgGetErrorText(Status, &ErrorMsg, 0xf);
DbgPrint("%W\n", &ErrorMsg);
RtlFreeUnicodeString(&ErrorMsg);
return Status;
}
/* Call DrvEnableDriver */
RtlZeroMemory(&gDED, sizeof(gDED));
if (!DrvEnableDriver(DDI_DRIVER_VERSION, sizeof(gDED), &gDED))
{
DbgPrint("DrvEnableDriver failed\n");
return STATUS_UNSUCCESSFUL;
}
}
/* Allocate a phyical device handle from the driver */
if (gSurfaceDC.PDev == NULL)
{
RtlZeroMemory(&gSurfaceDC, sizeof(gSurfaceDC));
/* FIXME: get mode selection information from somewhere */
if (Device != NULL)
{
wcsncpy(gDMW.dmDeviceName, Device, DMMAXDEVICENAME);
}
gSurfaceDC.DMW.dmSize = sizeof(gSurfaceDC.DMW);
gSurfaceDC.DMW.dmFields = 0x000fc000;
gSurfaceDC.DMW.dmLogPixels = 96;
gSurfaceDC.DMW.BitsPerPel = 8;
gSurfaceDC.DMW.dmPelsWidth = 640;
gSurfaceDC.DMW.dmPelsHeight = 480;
gSurfaceDC.DMW.dmDisplayFlags = 0;
gSurfaceDC.DMW.dmDisplayFrequency = 0;
gSurfaceDC.PDev = DrvEnablePDEV(&gSurfaceDC.DMW,
L"",
HS_DDI_MAX,
gSurfaceDC.FillPatternSurfaces,
sizeof(gSurfaceDC.GDIInfo),
&gSurfaceDC.GDIInfo,
sizeof(gSurfaceDC.DevInfo),
&gSurfaceDC.DevInfo,
NULL,
L"",
gDriverHandle);
if (gSurfaceDC.PDev == NULL)
{
DbgPrint("DrvEnablePDEV failed\n");
return STATUS_UNSUCCESSFUL;
}
DrvCompletePDEV(gSurfaceDC.PDev, gSurfaceDC);
gSurfaceDC.Surface = DrvEnableSurface(gSurfaceDC.PDev);
}
*DC = &SurfaceDC;
return STATUS_SUCCESS;
}
NTSTATUS W32kDeleteDC(HDC DC)
{
UNIMPLEMENTED;
}

View file

@ -5,9 +5,294 @@
#include <windows.h>
#include <ddk/ntddk.h>
WINBOOL STDCALL DllMain(HANDLE hInst,
ULONG ul_reason_for_call,
LPVOID lpReserved)
#include "../include/vectors.h"
PFN Win32kVectors[] =
{
(PFN) W32kAbortDoc,
(PFN) W32kAbortPath,
(PFN) W32kAddFontResource,
(PFN) W32kAngleArc,
(PFN) W32kAnimatePalette,
(PFN) W32kArc,
(PFN) W32kArcTo,
(PFN) W32kBeginPath,
(PFN) W32kBitBlt,
(PFN) W32kCancelDC,
(PFN) W32kCheckColorsInGamut,
(PFN) W32kChoosePixelFormat,
(PFN) W32kChord,
(PFN) W32kCloseEnhMetaFile,
(PFN) W32kCloseFigure,
(PFN) W32kCloseMetaFile,
(PFN) W32kColorMatchToTarget,
(PFN) W32kCombineRgn,
(PFN) W32kCombineTransform,
(PFN) W32kCopyEnhMetaFile,
(PFN) W32kCopyMetaFile,
(PFN) W32kCreateBitmap,
(PFN) W32kCreateBitmapIndirect,
(PFN) W32kCreateBrushIndirect,
(PFN) W32kCreateColorSpace,
(PFN) W32kCreateCompatibleBitmap,
(PFN) W32kCreateCompatibleDC,
(PFN) W32kCreateDC,
(PFN) W32kCreateDIBPatternBrush,
(PFN) W32kCreateDIBPatternBrushPt,
(PFN) W32kCreateDIBSection,
(PFN) W32kCreateDIBitmap,
(PFN) W32kCreateDiscardableBitmap,
(PFN) W32kCreateEllipticRgn,
(PFN) W32kCreateEllipticRgnIndirect,
(PFN) W32kCreateEnhMetaFile,
(PFN) W32kCreateFontIndirect,
(PFN) W32kCreateFont,
(PFN) W32kCreateHalftonePalette,
(PFN) W32kCreateHatchBrush,
(PFN) W32kCreateIC,
(PFN) W32kCreateMetaFile,
(PFN) W32kCreatePalette,
(PFN) W32kCreatePatternBrush,
(PFN) W32kCreatePen,
(PFN) W32kCreatePenIndirect,
(PFN) W32kCreatePolyPolygonRgn,
(PFN) W32kCreatePolygonRgn,
(PFN) W32kCreateRectRgn,
(PFN) W32kCreateRectRgnIndirect,
(PFN) W32kCreateRoundRectRgn,
(PFN) W32kCreateScalableFontResource,
(PFN) W32kCreateSolidBrush,
(PFN) W32kDPtoLP,
(PFN) W32kDeleteColorSpace,
(PFN) W32kDeleteDC,
(PFN) W32kDeleteEnhMetaFile,
(PFN) W32kDeleteMetaFile,
(PFN) W32kDeleteObject,
(PFN) W32kDescribePixelFormat,
(PFN) W32kDeviceCapabilitiesEx,
(PFN) W32kDrawEscape,
(PFN) W32kEllipse,
(PFN) W32kEndDoc,
(PFN) W32kEndPage,
(PFN) W32kEndPath,
(PFN) W32kEnumEnhMetaFile,
(PFN) W32kEnumFontFamiliesEx,
(PFN) W32kEnumFontFamilies,
(PFN) W32kEnumFonts,
(PFN) W32kEnumICMProfiles,
(PFN) W32kEnumMetaFile,
(PFN) W32kEnumObjects,
(PFN) W32kEqualRgn,
(PFN) W32kEscape,
(PFN) W32kExcludeClipRect,
(PFN) W32kExtCreatePen,
(PFN) W32kExtCreateRegion,
(PFN) W32kExtEscape,
(PFN) W32kExtFloodFill,
(PFN) W32kExtSelectClipRgn,
(PFN) W32kExtTextOut,
(PFN) W32kFillPath,
(PFN) W32kFillRgn,
(PFN) W32kFixBrushOrgEx,
(PFN) W32kFlattenPath,
(PFN) W32kFloodFill,
(PFN) W32kFrameRgn,
(PFN) W32kGdiComment,
(PFN) W32kGdiFlush,
(PFN) W32kGdiGetBatchLimit,
(PFN) W32kGdiPlayDCScript,
(PFN) W32kGdiPlayJournal,
(PFN) W32kGdiPlayScript,
(PFN) W32kGdiSetBatchLimit,
(PFN) W32kGetArcDirection,
(PFN) W32kGetAspectRatioFilterEx,
(PFN) W32kGetBitmapBits,
(PFN) W32kGetBitmapDimensionEx,
(PFN) W32kGetBkColor,
(PFN) W32kGetBkMode,
(PFN) W32kGetBoundsRect,
(PFN) W32kGetBrushOrgEx,
(PFN) W32kGetCharABCWidthsFloat,
(PFN) W32kGetCharABCWidths,
(PFN) W32kGetCharWidth32,
(PFN) W32kGetCharWidthFloat,
(PFN) W32kGetCharWidth,
(PFN) W32kGetCharacterPlacement,
(PFN) W32kGetClipBox,
(PFN) W32kGetClipRgn,
(PFN) W32kGetColorAdjustment,
(PFN) W32kGetColorSpace,
(PFN) W32kGetCurrentObject,
(PFN) W32kGetCurrentPositionEx,
(PFN) W32kGetDCOrgEx,
(PFN) W32kGetDIBColorTable,
(PFN) W32kGetDIBits,
(PFN) W32kGetDeviceCaps,
(PFN) W32kGetDeviceGammaRamp,
(PFN) W32kGetEnhMetaFileBits,
(PFN) W32kGetEnhMetaFileDescription,
(PFN) W32kGetEnhMetaFileHeader,
(PFN) W32kGetEnhMetaFilePaletteEntries,
(PFN) W32kGetEnhMetaFilePixelFormat,
(PFN) W32kGetEnhMetaFile,
(PFN) W32kGetFontLanguageInfo,
(PFN) W32kGetFontResourceInfo,
(PFN) W32kGetGlyphOutline,
(PFN) W32kGetGlyphOutlineWow,
(PFN) W32kGetGraphicsMode,
(PFN) W32kGetICMProfile,
(PFN) W32kGetKerningPairs,
(PFN) W32kGetLogColorSpace,
(PFN) W32kGetMapMode,
(PFN) W32kGetMetaFileBitsEx,
(PFN) W32kGetMetaFile,
(PFN) W32kGetMetaRgn,
(PFN) W32kGetMiterLimit,
(PFN) W32kGetNearestColor,
(PFN) W32kGetNearestPaletteIndex,
(PFN) W32kGetObjectType,
(PFN) W32kGetObject,
(PFN) W32kGetOutlineTextMetrics,
(PFN) W32kGetPaletteEntries,
(PFN) W32kGetPath,
(PFN) W32kGetPixel,
(PFN) W32kGetPixelFormat,
(PFN) W32kGetPolyFillMode,
(PFN) W32kGetROP2,
(PFN) W32kGetRandomRgn,
(PFN) W32kGetRasterizerCaps,
(PFN) W32kGetRelAbs,
(PFN) W32kGetRgnBox,
(PFN) W32kGetStockObject,
(PFN) W32kGetStretchBltMode,
(PFN) W32kGetSystemPaletteEntries,
(PFN) W32kGetSystemPaletteUse,
(PFN) W32kGetTextAlign,
(PFN) W32kGetTextCharset,
(PFN) W32kGetTextCharsetInfo,
(PFN) W32kGetTextColor,
(PFN) W32kGetTextExtentExPoint,
(PFN) W32kGetTextExtentPoint32,
(PFN) W32kGetTextExtentPoint,
(PFN) W32kGetTextFace,
(PFN) W32kGetTextMetrics,
(PFN) W32kGetViewportExtEx,
(PFN) W32kGetViewportOrgEx,
(PFN) W32kGetWinMetaFileBits,
(PFN) W32kGetWindowExtEx,
(PFN) W32kGetWindowOrgEx,
(PFN) W32kGetWorldTransform,
(PFN) W32kIntersectClipRect,
(PFN) W32kInvertRgn,
(PFN) W32kLPtoDP,
(PFN) W32kLineTo,
(PFN) W32kMaskBlt,
(PFN) W32kModifyWorldTransform,
(PFN) W32kMoveToEx,
(PFN) W32kOffsetClipRgn,
(PFN) W32kOffsetRgn,
(PFN) W32kOffsetViewportOrgEx,
(PFN) W32kOffsetWindowOrgEx,
(PFN) W32kPaintRgn,
(PFN) W32kPatBlt,
(PFN) W32kPathToRegion,
(PFN) W32kPie,
(PFN) W32kPlayEnhMetaFile,
(PFN) W32kPlayEnhMetaFileRecord,
(PFN) W32kPlayMetaFile,
(PFN) W32kPlayMetaFileRecord,
(PFN) W32kPlgBlt,
(PFN) W32kPolyBezier,
(PFN) W32kPolyBezierTo,
(PFN) W32kPolyDraw,
(PFN) W32kPolyPolygon,
(PFN) W32kPolyPolyline,
(PFN) W32kPolyTextOut,
(PFN) W32kPolygon,
(PFN) W32kPolyline,
(PFN) W32kPolylineTo,
(PFN) W32kPtInRegion,
(PFN) W32kPtVisible,
(PFN) W32kRealizePalette,
(PFN) W32kRectInRegion,
(PFN) W32kRectVisible,
(PFN) W32kRectangle,
(PFN) W32kRemoveFontResource,
(PFN) W32kResetDC,
(PFN) W32kResizePalette,
(PFN) W32kRestoreDC,
(PFN) W32kRoundRect,
(PFN) W32kSaveDC,
(PFN) W32kScaleViewportExtEx,
(PFN) W32kScaleWindowExtEx,
(PFN) W32kSelectBrushLocal,
(PFN) W32kSelectClipPath,
(PFN) W32kSelectClipRgn,
(PFN) W32kSelectFontLocal,
(PFN) W32kSelectObject,
(PFN) W32kSelectPalette,
(PFN) W32kSetAbortProc,
(PFN) W32kSetArcDirection,
(PFN) W32kSetBitmapBits,
(PFN) W32kSetBitmapDimensionEx,
(PFN) W32kSetBkColor,
(PFN) W32kSetBkMode,
(PFN) W32kSetBoundsRect,
(PFN) W32kSetBrushOrgEx,
(PFN) W32kSetColorAdjustment,
(PFN) W32kSetColorSpace,
(PFN) W32kSetDIBColorTable,
(PFN) W32kSetDIBits,
(PFN) W32kSetDIBitsToDevice,
(PFN) W32kSetDeviceGammaRamp,
(PFN) W32kSetEnhMetaFileBits,
(PFN) W32kSetFontEnumeration,
(PFN) W32kSetGraphicsMode,
(PFN) W32kSetICMMode,
(PFN) W32kSetICMProfile,
(PFN) W32kSetMapMode,
(PFN) W32kSetMapperFlags,
(PFN) W32kSetMetaFileBitsEx,
(PFN) W32kSetMetaRgn,
(PFN) W32kSetMiterLimit,
(PFN) W32kSetPaletteEntries,
(PFN) W32kSetPixel,
(PFN) W32kSetPixelFormat,
(PFN) W32kSetPixelV,
(PFN) W32kSetPolyFillMode,
(PFN) W32kSetROP2,
(PFN) W32kSetRectRgn,
(PFN) W32kSetRelAbs,
(PFN) W32kSetStretchBltMode,
(PFN) W32kSetSystemPaletteUse,
(PFN) W32kSetTextAlign,
(PFN) W32kSetTextColor,
(PFN) W32kSetTextJustification,
(PFN) W32kSetViewportExtEx,
(PFN) W32kSetViewportOrgEx,
(PFN) W32kSetWinMetaFileBits,
(PFN) W32kSetWindowExtEx,
(PFN) W32kSetWindowOrgEx,
(PFN) W32kSetWorldTransform,
(PFN) W32kStartDoc,
(PFN) W32kStartPage,
(PFN) W32kStretchBlt,
(PFN) W32kStretchDIBits,
(PFN) W32kStrokeAndFillPath,
(PFN) W32kStrokePath,
(PFN) W32kSwapBuffers,
(PFN) W32kTextOut,
(PFN) W32kTranslateCharsetInfo,
(PFN) W32kUnrealizeObject,
(PFN) W32kUpdateColors,
(PFN) W32kUpdateICMRegKey,
(PFN) W32kWidenPath,
(PFN) W32kgdiPlaySpoolStream
};
WINBOOL STDCALL DllMain(HANDLE hInst,
ULONG ul_reason_for_call,
LPVOID lpReserved)
{
DbgPrint("win32k:DllMain(hInst %x, ul_reason_for_call %d)\n",
hInst,
@ -16,11 +301,8 @@ WINBOOL STDCALL DllMain(HANDLE hInst,
return TRUE;
}
#if 0
HDC GDICreateDC(LPCWSTR Driver,
LPCWSTR Device,
CONST PDEVMODE InitData)
PVOID W32kGetVectors(VOID)
{
/* %%% initialize device driver here on first call for display DC. */
return Win32kVectors;
}
#endif

View file

@ -1,4 +1,4 @@
; $Id: win32k.def,v 1.2 1999/05/22 23:55:56 rex Exp $
; $Id: win32k.def,v 1.3 1999/05/27 23:08:13 rex Exp $
;
; win32k.def
;
@ -6,6 +6,7 @@
;
LIBRARY win32k
EXPORTS
W32kGetVectors
BRUSHOBJ_pvAllocRbrush
BRUSHOBJ_pvGetRbrush
BRUSHOBJ_ulGetBrushColor