2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Console Driver
4 * FILE: drivers/base/condrv/condrv.c
5 * PURPOSE: Console Driver Management Functions
6 * PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
9 /* INCLUDES *******************************************************************/
16 /* FUNCTIONS ******************************************************************/
19 * Callback functions prototypes
21 DRIVER_INITIALIZE DriverEntry
;
22 DRIVER_UNLOAD ConDrvUnload
;
24 DRIVER_DISPATCH ConDrvIoControl;
25 DRIVER_DISPATCH ConDrvCreate;
26 DRIVER_DISPATCH ConDrvClose;
27 DRIVER_DISPATCH ConDrvRead;
28 DRIVER_DISPATCH ConDrvWrite;
29 DRIVER_DISPATCH ConDrvCleanup;
31 DRIVER_DISPATCH ConDrvDispatch
;
34 DriverEntry(IN PDRIVER_OBJECT DriverObject
,
35 IN PUNICODE_STRING RegistryPath
)
39 PCONDRV_DRIVER DriverExtension
= NULL
;
41 DPRINT1("Loading ReactOS Console Driver v0.0.1...\n");
43 DriverObject
->DriverUnload
= ConDrvUnload
;
45 /* Initialize the different callback function pointers */
46 for (i
= 0 ; i
<= IRP_MJ_MAXIMUM_FUNCTION
; ++i
)
47 DriverObject
->MajorFunction
[i
] = ConDrvDispatch
;
50 DriverObject
->MajorFunction
[IRP_MJ_CREATE
] = ConDrvCreate
;
51 DriverObject
->MajorFunction
[IRP_MJ_CLOSE
] = ConDrvClose
;
53 /* temporary deactivated...
54 DriverObject->MajorFunction[IRP_MJ_CLEANUP] = ConDrvCleanup;
56 DriverObject
->MajorFunction
[IRP_MJ_READ
] = ConDrvRead
;
57 DriverObject
->MajorFunction
[IRP_MJ_WRITE
] = ConDrvWrite
;
59 DriverObject
->MajorFunction
[IRP_MJ_DEVICE_CONTROL
] = ConDrvIoControl
;
62 Status
= IoAllocateDriverObjectExtension(DriverObject
,
63 DriverObject
, // Unique ID for the driver object extension ==> gives it its address !
64 sizeof(CONDRV_DRIVER
),
65 (PVOID
*)&DriverExtension
);
66 if (!NT_SUCCESS(Status
))
68 DPRINT1("IoAllocateDriverObjectExtension() failed with status 0x%08lx\n", Status
);
71 RtlZeroMemory(DriverExtension
, sizeof(CONDRV_DRIVER
));
73 Status
= ConDrvCreateController(DriverObject
, RegistryPath
);
75 DPRINT1("Done, Status = 0x%08lx\n", Status
);
80 ConDrvUnload(IN PDRIVER_OBJECT DriverObject
)
82 DPRINT1("Unloading ReactOS Console Driver v0.0.1...\n");
85 * Delete the Controller device. This has as effect
86 * to delete also all the terminals.
88 ConDrvDeleteController(DriverObject
);
90 /* Sanity check: No devices must exist at this point */
91 ASSERT(DriverObject
->DeviceObject
== NULL
);