3e9d1080e04e23b077ac8e86c4685de3ea50cd24
[reactos.git] / reactos / drivers / storage / fdc / fdc / fdc.c
1 /*
2 * PROJECT: ReactOS Floppy Disk Controller Driver
3 * LICENSE: GNU GPLv2 only as published by the Free Software Foundation
4 * FILE: drivers/storage/fdc/fdc/fdc.c
5 * PURPOSE: Main Driver Routines
6 * PROGRAMMERS: Eric Kohl
7 */
8
9 /* INCLUDES *******************************************************************/
10
11 #include "fdc.h"
12
13 #define NDEBUG
14 #include <debug.h>
15
16
17
18 /* GLOBALS ********************************************************************/
19
20 ULONG ControllerCount = 0;
21
22 /* FUNCTIONS ******************************************************************/
23
24 static
25 VOID
26 NTAPI
27 FdcDriverUnload(IN PDRIVER_OBJECT DriverObject)
28 {
29 DPRINT1("FdcDriverUnload()\n");
30 }
31
32
33 static
34 NTSTATUS
35 NTAPI
36 FdcCreate(IN PDEVICE_OBJECT DeviceObject,
37 IN PIRP Irp)
38 {
39 DPRINT1("FdcCreate()\n");
40
41 Irp->IoStatus.Status = STATUS_SUCCESS;
42 Irp->IoStatus.Information = FILE_OPENED;
43
44 IoCompleteRequest( Irp, IO_NO_INCREMENT );
45
46 return STATUS_SUCCESS;
47 }
48
49
50 static
51 NTSTATUS
52 NTAPI
53 FdcClose(IN PDEVICE_OBJECT DeviceObject,
54 IN PIRP Irp)
55 {
56 DPRINT1("FdcClose()\n");
57
58 Irp->IoStatus.Status = STATUS_SUCCESS;
59 Irp->IoStatus.Information = 0;
60
61 IoCompleteRequest(Irp, IO_NO_INCREMENT);
62
63 return STATUS_SUCCESS;
64 }
65
66
67 static
68 NTSTATUS
69 NTAPI
70 FdcPnp(IN PDEVICE_OBJECT DeviceObject,
71 IN PIRP Irp)
72 {
73 PCOMMON_DEVICE_EXTENSION Common = DeviceObject->DeviceExtension;
74
75 DPRINT1("FdcPnP()\n");
76 if (Common->IsFDO)
77 {
78 return FdcFdoPnp(DeviceObject,
79 Irp);
80 }
81 else
82 {
83 return FdcPdoPnp(DeviceObject,
84 Irp);
85 }
86 }
87
88
89 static
90 NTSTATUS
91 NTAPI
92 FdcPower(IN PDEVICE_OBJECT DeviceObject,
93 IN PIRP Irp)
94 {
95 DPRINT1("FdcPower()\n");
96 return STATUS_UNSUCCESSFUL;
97 }
98
99
100 NTSTATUS
101 NTAPI
102 DriverEntry(IN PDRIVER_OBJECT DriverObject,
103 IN PUNICODE_STRING RegistryPath)
104 {
105 DPRINT1("FDC: DriverEntry()\n");
106
107 DriverObject->MajorFunction[IRP_MJ_CREATE] = FdcCreate;
108 DriverObject->MajorFunction[IRP_MJ_CLOSE] = FdcClose;
109 // DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = FdcDeviceControl;
110 DriverObject->MajorFunction[IRP_MJ_PNP] = FdcPnp;
111 DriverObject->MajorFunction[IRP_MJ_POWER] = FdcPower;
112
113 DriverObject->DriverExtension->AddDevice = FdcAddDevice;
114 DriverObject->DriverUnload = FdcDriverUnload;
115
116 return STATUS_SUCCESS;
117 }