mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 09:34:43 +00:00
Moved display driver and got win32k loading it's entry point.
svn path=/trunk/; revision=1036
This commit is contained in:
parent
e2eb8c1697
commit
3da0b018e5
11 changed files with 39 additions and 324 deletions
|
@ -1,12 +1,11 @@
|
|||
# $Id: makefile,v 1.5 1999/12/18 10:17:42 ea Exp $
|
||||
# $Id: makefile,v 1.6 2000/03/08 21:23:13 jfilby Exp $
|
||||
#
|
||||
#
|
||||
BASE_CFLAGS = -I../../../include
|
||||
|
||||
MP_OBJECTS = vgamp.o vgamp.coff ../../../ntoskrnl/ntoskrnl.a ../vidport/vidport.a
|
||||
DDI_OBJECTS = vgaddi.o vgaddi.coff ../../../subsys/win32k/win32k.a
|
||||
|
||||
all: vgamp.sys vgaddi.sys
|
||||
all: vgamp.sys
|
||||
|
||||
.phony: all
|
||||
|
||||
|
@ -48,35 +47,7 @@ vgamp.sys: $(MP_OBJECTS)
|
|||
$(MP_OBJECTS)
|
||||
- $(RM) temp.exp
|
||||
|
||||
vgaddi.sys: $(DDI_OBJECTS)
|
||||
$(CC) \
|
||||
-specs=../../svc_specs \
|
||||
-mdll \
|
||||
-o junk.tmp \
|
||||
-Wl,--defsym,_end=end \
|
||||
-Wl,--defsym,_edata=__data_end__ \
|
||||
-Wl,--defsym,_etext=etext \
|
||||
-Wl,--base-file,base.tmp \
|
||||
$(DDI_OBJECTS)
|
||||
- $(RM) junk.tmp
|
||||
$(DLLTOOL) \
|
||||
--dllname vgaddi.sys \
|
||||
--base-file base.tmp \
|
||||
--output-exp temp.exp \
|
||||
--kill-at
|
||||
- $(RM) base.tmp
|
||||
$(CC) \
|
||||
--verbose \
|
||||
-Wl,--image-base,0x10000 \
|
||||
-Wl,-e,_DriverEntry@8 \
|
||||
-Wl,temp.exp \
|
||||
-specs=../../svc_specs \
|
||||
-mdll \
|
||||
-o vgaddi.sys \
|
||||
$(DDI_OBJECTS)
|
||||
- $(RM) temp.exp
|
||||
|
||||
floppy: $(FLOPPY_DIR)/drivers/vgamp.sys $(FLOPPY_DIR)/drivers/vgaddi.sys
|
||||
floppy: $(FLOPPY_DIR)/drivers/vgamp.sys
|
||||
|
||||
$(FLOPPY_DIR)/drivers/vgamp.sys: vgamp.sys
|
||||
ifeq ($(DOSCLI),yes)
|
||||
|
@ -85,14 +56,7 @@ else
|
|||
$(CP) vgamp.sys $(FLOPPY_DIR)/drivers/vgamp.sys
|
||||
endif
|
||||
|
||||
$(FLOPPY_DIR)/drivers/vgaddi.sys: vgaddi.sys
|
||||
ifeq ($(DOSCLI),yes)
|
||||
$(CP) vgaddi.sys $(FLOPPY_DIR)\drivers\vgaddi.sys
|
||||
else
|
||||
$(CP) vgaddi.sys $(FLOPPY_DIR)/drivers/vgaddi.sys
|
||||
endif
|
||||
|
||||
dist: ../../../$(DIST_DIR)/drivers/vgamp.sys ../../../$(DIST_DIR)/drivers/vgaddi.sys
|
||||
dist: ../../../$(DIST_DIR)/drivers/vgamp.sys
|
||||
|
||||
../../../$(DIST_DIR)/drivers/vgamp.sys: vgamp.sys
|
||||
ifeq ($(DOSCLI),yes)
|
||||
|
@ -101,12 +65,5 @@ else
|
|||
$(CP) vgamp.sys ../../../$(DIST_DIR)/drivers/vgamp.sys
|
||||
endif
|
||||
|
||||
../../../$(DIST_DIR)/drivers/vgaddi.sys: vgaddi.sys
|
||||
ifeq ($(DOSCLI),yes)
|
||||
$(CP) vgaddi.sys ..\..\..\$(DIST_DIR)\drivers\vgaddi.sys
|
||||
else
|
||||
$(CP) vgaddi.sys ../../../$(DIST_DIR)/drivers/vgaddi.sys
|
||||
endif
|
||||
|
||||
include ../../../rules.mak
|
||||
|
||||
|
|
|
@ -1,210 +0,0 @@
|
|||
/*
|
||||
* VGADDI.C - Generic VGA DDI graphics driver
|
||||
*
|
||||
*/
|
||||
|
||||
#include <ddk/ntddk.h>
|
||||
#include <ddk/winddi.h>
|
||||
|
||||
#include "vgaddi.h"
|
||||
|
||||
#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);
|
||||
|
||||
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},
|
||||
|
||||
#if 0
|
||||
/* Optional Display driver functions */
|
||||
{INDEX_, (PFN) },
|
||||
{INDEX_DrvBitBlt, (PFN) VGADDIBitBlt},
|
||||
{INDEX_DrvCopyBits, (PFN) VGADDICopyBits},
|
||||
{INDEX_DescribePixelFormat, (PFN) VGADDIDescribePixelFormat},
|
||||
{INDEX_DrvDitherColor, (PFN) VGADDIDitherColor},
|
||||
{INDEX_DrvFillPath, (PFN) VGADDIFillPath},
|
||||
{INDEX_DrvGetTrueTypeFile, (PFN) VGADDIGetTrueTypeFile},
|
||||
{INDEX_DrvLoadFontFile, (PFN) VGADDILoadFontFile},
|
||||
{INDEX_DrvMovePointer, (PFN) VGADDIMovePointer},
|
||||
{INDEX_DrvPaint, (PFN) VGADDIPaint}
|
||||
{INDEX_DrvQueryFont, (PFN) VGADDIQueryFont},
|
||||
{INDEX_DrvQueryFontCaps, (PFN) VGADDIQueryFontCaps},
|
||||
{INDEX_DrvQueryFontData, (PFN) VGADDIQueryFontData},
|
||||
{INDEX_DrvQueryFontFile, (PFN) VGADDIQueryFontFile},
|
||||
{INDEX_DrvQueryFontTree, (PFN) VGADDIQueryFontTree},
|
||||
{INDEX_DrvQueryTrueTypeOutline, (PFN) VGADDIQueryTrueTypeOutline},
|
||||
{INDEX_DrvQueryTrueTypeTable, (PFN) VGADDIQueryTrueTypeTable},
|
||||
{INDEX_DrvRealizeBrush, (PFN) VGADDIRealizeBrush},
|
||||
{INDEX_DrvResetPDEV, (PFN) VGADDIResetPDEV},
|
||||
{INDEX_DrvSetPalette, (PFN) VGADDISetPalette},
|
||||
{INDEX_DrvSetPixelFormat, (PFN) VGADDISetPixelFormat},
|
||||
{INDEX_DrvSetPointerShape, (PFN) VGADDISetPointerShape},
|
||||
{INDEX_DrvStretchBlt, (PFN) VGADDIStretchBlt},
|
||||
{INDEX_DrvStrokePath, (PFN) VGADDIStrokePath},
|
||||
{INDEX_DrvSwapBuffers, (PFN) VGADDISwapBuffers},
|
||||
{INDEX_DrvTextOut, (PFN) VGADDITextOut},
|
||||
{INDEX_DrvUnloadFontFile, (PFN) VGADDIUnloadFontFile},
|
||||
#endif
|
||||
};
|
||||
|
||||
// ----------------------------------------------------- Public Interface
|
||||
|
||||
// DrvEnableDriver
|
||||
// DESCRIPTION:
|
||||
// This function is called by the KMGDI immediately after load of
|
||||
// the DDI module. This is the entry point for the DDI.
|
||||
// ARGUMENTS:
|
||||
// IN ULONG EngineVersion Version of KMGDI
|
||||
// IN ULONG SizeOfDED Size of the DRVENABLEDATA struct
|
||||
// OUT PDRVENABLEDATA DriveEnableData Struct to fill in for KMGDI
|
||||
// RETURNS:
|
||||
// BOOL TRUE if driver is enabled, FALSE and log an error otherwise
|
||||
|
||||
BOOL
|
||||
DrvEnableDriver(IN ULONG EngineVersion,
|
||||
IN ULONG SizeOfDED,
|
||||
OUT PDRVENABLEDATA DriveEnableData)
|
||||
{
|
||||
DriveEnableData->pdrvfn = FuncList;
|
||||
DriveEnableData->c = sizeof FuncList / sizeof &FuncList[0];
|
||||
DriveEnableData->iDriverVersion = DDI_DRIVER_VERSION;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// DrvDisableDriver
|
||||
// DESCRIPTION:
|
||||
// This function is called by the KMGDI at exit. It should cleanup.
|
||||
// ARGUMENTS:
|
||||
// NONE
|
||||
// RETURNS:
|
||||
// NONE
|
||||
|
||||
VOID DrvDisableDriver(VOID)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// ----------------------------------------------- Driver Implementation
|
||||
|
||||
|
||||
// DrvEnablePDEV
|
||||
// DESCRIPTION:
|
||||
// This function is called after DrvEnableDriver to get information
|
||||
// about the mode that is to be used. This function just returns
|
||||
// information, and should not yet initialize the mode.
|
||||
// ARGUMENTS:
|
||||
// IN DEVMODEW * DM Describes the mode requested
|
||||
// IN LPWSTR LogAddress
|
||||
// IN ULONG PatternCount number of patterns expected
|
||||
// OUT HSURF * SurfPatterns array to contain pattern handles
|
||||
// IN ULONG CapsSize the size of the DevCaps object passed in
|
||||
// OUT ULONG * DevCaps Device Capabilities object
|
||||
// IN ULONG DevInfoSize the size of the DevInfo object passed in
|
||||
// OUT DEVINFO * DI Device Info object
|
||||
// IN LPWSTR DevDataFile ignore
|
||||
// IN LPWSTR DeviceName Device name
|
||||
// IN HANDLE Driver handle to KM driver
|
||||
// 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)
|
||||
{
|
||||
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;
|
||||
}
|
||||
PDev->KMDriver = Driver;
|
||||
|
||||
/* FIXME: fill out DevCaps */
|
||||
/* FIXME: full out DevInfo */
|
||||
|
||||
return PDev;
|
||||
}
|
||||
|
||||
// DrvEnablePDEV
|
||||
// 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)
|
||||
{
|
||||
((PPDEV) PDev)->GDIDevHandle = Dev;
|
||||
}
|
||||
|
||||
|
||||
VOID VGADDIAssertMode(IN DHPDEV DPev,
|
||||
IN BOOL Enable)
|
||||
{
|
||||
EngDebugPrint(DBG_PREFIX, "UNIMPLEMENTED\n", 0);
|
||||
}
|
||||
|
||||
VOID VGADDIDisablePDEV(IN DHPDEV PDev)
|
||||
{
|
||||
EngDebugPrint(DBG_PREFIX, "UNIMPLEMENTED\n", 0);
|
||||
}
|
||||
|
||||
VOID VGADDIDisableSurface(IN DHPDEV PDev)
|
||||
{
|
||||
EngDebugPrint(DBG_PREFIX, "UNIMPLEMENTED\n", 0);
|
||||
}
|
||||
|
||||
HSURF VGADDIEnableSurface(IN DHPDEV PDev)
|
||||
{
|
||||
EngDebugPrint(DBG_PREFIX, "UNIMPLEMENTED\n", 0);
|
||||
}
|
||||
|
||||
ULONG VGADDIGetModes(IN HANDLE Driver,
|
||||
IN ULONG DataSize,
|
||||
OUT PDEVMODEW DM)
|
||||
{
|
||||
EngDebugPrint(DBG_PREFIX, "UNIMPLEMENTED\n", 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
|
||||
//
|
||||
// PDEV
|
||||
// DESCRIPTION
|
||||
// This structure will contain all state information
|
||||
// required to maintain the video device
|
||||
// ACCESS
|
||||
// Allocated from non-paged pool by the GDI
|
||||
|
||||
typedef struct _PDEV
|
||||
{
|
||||
HANDLE KMDriver;
|
||||
HDEV GDIDevHandle;
|
||||
} PDEV, *PPDEV;
|
||||
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
|
||||
#include <defines.h>
|
||||
#include <reactos/resource.h>
|
||||
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION RES_UINT_FV_MAJOR,RES_UINT_FV_MINOR,RES_UINT_FV_REVISION,RES_UINT_FV_BUILD
|
||||
PRODUCTVERSION RES_UINT_PV_MAJOR,RES_UINT_PV_MINOR,RES_UINT_PV_REVISION,RES_UINT_PV_BUILD
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS 0x40004L
|
||||
FILETYPE 0x2L
|
||||
FILESUBTYPE 0x0L
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904b0"
|
||||
BEGIN
|
||||
VALUE "CompanyName", RES_STR_COMPANY_NAME
|
||||
VALUE "FileDescription", "VGADDI Device Driver\0"
|
||||
VALUE "FileVersion", "0.0.0\0"
|
||||
VALUE "InternalName", "vgaddi\0"
|
||||
VALUE "LegalCopyright", RES_STR_LEGAL_COPYRIGHT
|
||||
VALUE "OriginalFilename", "vgaddi.sys\0"
|
||||
VALUE "ProductName", RES_STR_PRODUCT_NAME
|
||||
VALUE "ProductVersion", RES_STR_PRODUCT_VERSION
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 1200
|
||||
END
|
||||
END
|
||||
|
|
@ -924,6 +924,8 @@ VOID APIENTRY EngDebugPrint(PCHAR StandardPrefix,
|
|||
PCHAR DebugMessage,
|
||||
va_list ArgList);
|
||||
|
||||
HANDLE EngLoadImage(LPWSTR DriverName);
|
||||
|
||||
/*
|
||||
EngDeleteClip
|
||||
EngDeleteDriverObj
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; $Id: ntoskrnl.def,v 1.54 2000/03/08 01:55:34 ekohl Exp $
|
||||
; $Id: ntoskrnl.def,v 1.55 2000/03/08 21:23:13 jfilby Exp $
|
||||
;
|
||||
; reactos/ntoskrnl/ntoskrnl.def
|
||||
;
|
||||
|
@ -462,6 +462,7 @@ RtlxAnsiStringToUnicodeSize@4
|
|||
RtlxOemStringToUnicodeSize@4
|
||||
RtlxUnicodeStringToAnsiSize@4
|
||||
RtlxUnicodeStringToOemSize@4
|
||||
LdrLoadModule
|
||||
WRITE_REGISTER_UCHAR
|
||||
WRITE_REGISTER_ULONG
|
||||
WRITE_REGISTER_USHORT
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; $Id: ntoskrnl.edf,v 1.41 2000/03/08 01:55:34 ekohl Exp $
|
||||
; $Id: ntoskrnl.edf,v 1.42 2000/03/08 21:23:13 jfilby Exp $
|
||||
;
|
||||
; reactos/ntoskrnl/ntoskrnl.def
|
||||
;
|
||||
|
@ -388,6 +388,7 @@ RtlxAnsiStringToUnicodeSize=RtlxAnsiStringToUnicodeSize@4
|
|||
RtlxOemStringToUnicodeSize=RtlxOemStringToUnicodeSize@4
|
||||
RtlxUnicodeStringToAnsiSize=RtlxUnicodeStringToAnsiSize@4
|
||||
RtlxUnicodeStringToOemSize=RtlxUnicodeStringToOemSize@4
|
||||
LdrLoadModule=LdrLoadModule
|
||||
WRITE_REGISTER_UCHAR
|
||||
WRITE_REGISTER_ULONG
|
||||
WRITE_REGISTER_USHORT
|
||||
|
|
6
reactos/subsys/win32k/ldr/loader.c
Normal file
6
reactos/subsys/win32k/ldr/loader.c
Normal file
|
@ -0,0 +1,6 @@
|
|||
#include <ddk/winddi.h>
|
||||
|
||||
HANDLE EngLoadImage(LPWSTR DriverName)
|
||||
{
|
||||
return LdrLoadModule(DriverName);
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
# $Id: makefile,v 1.15 1999/11/12 00:16:51 rex Exp $
|
||||
# $Id: makefile,v 1.16 2000/03/08 21:23:13 jfilby Exp $
|
||||
#
|
||||
# WIN32K.SYS build spec
|
||||
#
|
||||
|
@ -10,6 +10,7 @@ BASE_CFLAGS = -I../../include
|
|||
ENG_OBJECTS= eng/debug.o eng/mem.o
|
||||
MAIN_OBJECTS = main/dllmain.o
|
||||
MISC_OBJECTS = misc/driver.o
|
||||
LDR_OBJECTS = ldr/loader.o
|
||||
OBJECTS_OBJECTS = objects/bitmaps.o objects/brush.o objects/cliprgn.o \
|
||||
objects/color.o objects/coord.o objects/dc.o \
|
||||
objects/fillshap.o objects/gdiobj.o objects/icm.o \
|
||||
|
@ -19,7 +20,7 @@ OBJECTS_OBJECTS = objects/bitmaps.o objects/brush.o objects/cliprgn.o \
|
|||
RESOURCE_OBJECT = $(TARGET).coff
|
||||
STUBS_OBJECTS = stubs/stubs.o
|
||||
|
||||
OBJECTS = $(ENG_OBJECTS) $(MAIN_OBJECTS) $(MISC_OBJECTS) $(OBJECTS_OBJECTS) \
|
||||
OBJECTS = $(ENG_OBJECTS) $(MAIN_OBJECTS) $(MISC_OBJECTS) $(LDR_OBJECTS) $(OBJECTS_OBJECTS) \
|
||||
$(RESOURCE_OBJECT) $(STUBS_OBJECTS)
|
||||
|
||||
all: $(TARGET).sys
|
||||
|
@ -27,11 +28,11 @@ all: $(TARGET).sys
|
|||
$(TARGET).coff: $(TARGET).rc ../../include/reactos/resource.h
|
||||
|
||||
ifeq ($(DOSCLI),yes)
|
||||
CLEAN_FILES = eng\*.o main\*.o misc\*.o stubs\*.o objects\*.o \
|
||||
CLEAN_FILES = eng\*.o main\*.o misc\*.o ldr\*.o stubs\*.o objects\*.o \
|
||||
$(TARGET).coff $(TARGET).o $(TARGET).a \
|
||||
junk.tmp base.tmp temp.exp $(TARGET).sys $(TARGET).sym
|
||||
else
|
||||
CLEAN_FILES = eng/*.o main/*.o misc/*.o stubs/*.o objects/*.o \
|
||||
CLEAN_FILES = eng/*.o main/*.o ldr\*.o misc/*.o stubs/*.o objects/*.o \
|
||||
$(TARGET).coff $(TARGET).o $(TARGET).a \
|
||||
junk.tmp base.tmp temp.exp $(TARGET).sys $(TARGET).sym
|
||||
endif
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: driver.c,v 1.7 2000/03/01 03:23:42 ekohl Exp $
|
||||
/* $Id: driver.c,v 1.8 2000/03/08 21:23:14 jfilby Exp $
|
||||
*
|
||||
* GDI Driver support routines
|
||||
* (mostly swiped from Wine)
|
||||
|
@ -6,10 +6,14 @@
|
|||
*/
|
||||
|
||||
#undef WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_NO_PEHDR
|
||||
|
||||
#include <ddk/ntddk.h>
|
||||
#include <windows.h>
|
||||
#include <win32k/driver.h>
|
||||
#include <wchar.h>
|
||||
#include <internal/module.h>
|
||||
#include <ddk/winddi.h>
|
||||
|
||||
//#define NDEBUG
|
||||
#include <internal/debug.h>
|
||||
|
@ -58,8 +62,12 @@ BOOL DRIVER_RegisterDriver(LPCWSTR Name, PGD_ENABLEDRIVER EnableDriver)
|
|||
|
||||
PGD_ENABLEDRIVER DRIVER_FindDDIDriver(LPCWSTR Name)
|
||||
{
|
||||
UNICODE_STRING DriverNameW;
|
||||
NTSTATUS Status;
|
||||
PMODULE_OBJECT ModuleObject;
|
||||
GRAPHICS_DRIVER *Driver = DriverList;
|
||||
|
||||
/* First see if the driver hasn't already been loaded */
|
||||
while (Driver && Name)
|
||||
{
|
||||
if (!_wcsicmp( Driver->Name, Name))
|
||||
|
@ -69,7 +77,10 @@ PGD_ENABLEDRIVER DRIVER_FindDDIDriver(LPCWSTR Name)
|
|||
Driver = Driver->Next;
|
||||
}
|
||||
|
||||
return GenericDriver ? GenericDriver->EnableDriver : NULL;
|
||||
/* If not, then load it */
|
||||
RtlInitUnicodeString (&DriverNameW, Name);
|
||||
ModuleObject = EngLoadImage(&DriverNameW);
|
||||
return (PGD_ENABLEDRIVER)ModuleObject->EntryPoint;
|
||||
}
|
||||
|
||||
BOOL DRIVER_BuildDDIFunctions(PDRVENABLEDATA DED,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: dc.c,v 1.11 2000/03/01 03:23:57 ekohl Exp $
|
||||
/* $Id: dc.c,v 1.12 2000/03/08 21:23:14 jfilby Exp $
|
||||
*
|
||||
* DC.C - Device context functions
|
||||
*
|
||||
|
@ -188,7 +188,8 @@ HDC STDCALL W32kCreateDC(LPCWSTR Driver,
|
|||
}
|
||||
|
||||
/* Get the DDI driver's entry point */
|
||||
if ((GDEnableDriver = DRIVER_FindDDIDriver(Driver)) == NULL)
|
||||
/* FIXME: Retrieve DDI driver name from registry */
|
||||
if ((GDEnableDriver = DRIVER_FindDDIDriver(L"\\??\\C:\\reactos\\system32\\drivers\\vgaddi.dll")) == NULL)
|
||||
{
|
||||
DbgPrint("FindDDIDriver failed\n");
|
||||
goto Failure;
|
||||
|
|
Loading…
Reference in a new issue