2 * PROJECT: ReactOS Boot Loader
3 * LICENSE: BSD - See COPYING.ARM in the top level directory
4 * FILE: drivers/sac/driver/init.c
5 * PURPOSE: Driver for the Server Administration Console (SAC) for EMS
6 * PROGRAMMERS: ReactOS Portable Systems Group
9 /* INCLUDES *******************************************************************/
13 /* GLOBALS ********************************************************************/
15 /* FUNCTIONS ******************************************************************/
20 IN PDRIVER_OBJECT DriverObject
,
21 IN PUNICODE_STRING RegistryPath
24 HEADLESS_RSP_QUERY_INFO HeadlessInformation
;
27 UNICODE_STRING DriverName
;
28 PDEVICE_OBJECT DeviceObject
;
29 PSAC_DEVICE_EXTENSION DeviceExtension
;
32 SAC_DBG(SAC_DBG_ENTRY_EXIT
, "Entering.\n");
35 HeadlessCmdQueryInformation
,
41 if ((HeadlessInformation
.Serial
.TerminalType
!= HeadlessUndefinedPortType
) &&
42 ((HeadlessInformation
.Serial
.TerminalType
!= HeadlessSerialPort
) ||
43 (HeadlessInformation
.Serial
.TerminalAttached
)))
45 RtlInitUnicodeString(&DriverName
, L
"\\Device\\SAC");
47 Status
= IoCreateDevice(
49 sizeof(SAC_DEVICE_EXTENSION
),
52 FILE_DEVICE_SECURE_OPEN
,
56 if (NT_SUCCESS(Status
))
58 DeviceExtension
= DeviceObject
->DeviceExtension
;
59 DeviceExtension
->Initialized
= FALSE
;
62 DriverObject
->MajorFunction
,
63 sizeof(DriverObject
->MajorFunction
) / sizeof(PVOID
),
65 DriverObject
->MajorFunction
[IRP_MJ_DEVICE_CONTROL
] =
66 DispatchDeviceControl
;
67 DriverObject
->MajorFunction
[IRP_MJ_SHUTDOWN
] =
68 DispatchShutdownControl
;
69 DriverObject
->FastIoDispatch
= NULL
;
70 DriverObject
->DriverUnload
= UnloadHandler
;
72 if (InitializeGlobalData(RegistryPath
, DriverObject
))
74 if (InitializeDeviceData(DeviceObject
))
76 IoRegisterShutdownNotification(DeviceObject
);
81 Status
= STATUS_INSUFFICIENT_RESOURCES
;
85 SAC_DBG(SAC_DBG_INIT
, "unable to create device object: %X\n", Status
);
89 SAC_DBG(SAC_DBG_ENTRY_EXIT
, "Exiting with status 0x%x\n", Status
);
93 return STATUS_PORT_DISCONNECTED
;