-/* $Id: driver.c,v 1.12 2000/06/29 23:35:53 dwelch Exp $
+/* $Id: driver.c,v 1.13 2000/07/07 01:18:04 phreak Exp $
*
* GDI Driver support routines
* (mostly swiped from Wine)
#include <ddk/winddi.h>
#include <ddk/ntddvid.h>
-//#define NDEBUG
-//#include "../../ntoskrnl/include/internal/debug.h"
+#define NDEBUG
+#include <debug.h>
typedef struct _GRAPHICS_DRIVER
{
} GRAPHICS_DRIVER, *PGRAPHICS_DRIVER;
static PGRAPHICS_DRIVER DriverList;
-static PGRAPHICS_DRIVER GenericDriver;
+static PGRAPHICS_DRIVER GenericDriver = 0;
BOOL DRIVER_RegisterDriver(LPCWSTR Name, PGD_ENABLEDRIVER EnableDriver)
{
PGRAPHICS_DRIVER Driver = ExAllocatePool(NonPagedPool, sizeof(*Driver));
+ DPRINT( "DRIVER_RegisterDriver( Name: %S )\n", Name );
if (!Driver)
{
return FALSE;
Driver->EnableDriver = EnableDriver;
if (Name)
{
- Driver->Name = ExAllocatePool(NonPagedPool,
+ Driver->Name = ExAllocatePool(PagedPool,
(wcslen(Name) + 1) * sizeof(WCHAR));
wcscpy(Driver->Name, Name);
Driver->Next = DriverList;
return FALSE;
}
- Driver->Name = NULL;
GenericDriver = Driver;
return TRUE;
}
RtlInitUnicodeString (&DriverNameW, Name);
ModuleObject = EngLoadImage(&DriverNameW);
-
+ DRIVER_RegisterDriver( L"DISPLAY", ModuleObject->EntryPoint );
return (PGD_ENABLEDRIVER)ModuleObject->EntryPoint;
}
DriverObject = ExAllocatePool(NonPagedPool,sizeof(DRIVER_OBJECT));
if (DriverObject == NULL)
{
- return STATUS_INSUFFICIENT_RESOURCES;
+ return NULL;
}
memset(DriverObject, 0, sizeof(DRIVER_OBJECT));
while (Driver && Name)
{
+ DPRINT( "Comparting %S to %S\n", Driver->Name, Name );
if (!_wcsicmp( Driver->Name, Name))
{
return ++Driver->ReferenceCount;
}
Driver = Driver->Next;
}
-
- return GenericDriver ? ++GenericDriver->ReferenceCount : 0;
+ DPRINT( "Driver %S not found to reference, generic count: %d\n", Name, GenericDriver->ReferenceCount );
+ assert( GenericDriver != 0 );
+ return ++GenericDriver->ReferenceCount;
}
INT DRIVER_UnreferenceDriver (LPCWSTR Name)
while (Driver && Name)
{
+ DPRINT( "Comparting %S to %S\n", Driver->Name, Name );
if (!_wcsicmp( Driver->Name, Name))
{
return --Driver->ReferenceCount;
}
Driver = Driver->Next;
}
-
- return GenericDriver ? --GenericDriver->ReferenceCount : 0;
+ DPRINT( "Driver '%S' not found to dereference, generic count: %d\n", Name, GenericDriver->ReferenceCount );
+ assert( GenericDriver != 0 );
+ return --GenericDriver->ReferenceCount;
}