ReactOS 0.4.16-dev-1946-g52006dd
parport.c
Go to the documentation of this file.
1/*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: Parallel Port Function Driver
4 * PURPOSE: Parport driver loading/unloading
5 */
6
7#include "parport.h"
8#define NDEBUG
9#include <debug.h>
10
11static DRIVER_UNLOAD DriverUnload;
17DRIVER_INITIALIZE DriverEntry;
18
19
20/* FUNCTIONS ****************************************************************/
21
22static
23VOID
26{
27 DPRINT("Parport DriverUnload\n");
28}
29
30
31static
35 IN PIRP Irp)
36{
37 if (((PFDO_DEVICE_EXTENSION)DeviceObject->DeviceExtension)->Common.IsFDO)
38 return FdoCreate(DeviceObject, Irp);
39 else
40 return PdoCreate(DeviceObject, Irp);
41}
42
43
44static
48 IN PIRP Irp)
49{
50 if (((PFDO_DEVICE_EXTENSION)DeviceObject->DeviceExtension)->Common.IsFDO)
51 return FdoClose(DeviceObject, Irp);
52 else
53 return PdoClose(DeviceObject, Irp);
54}
55
56
57static
61 IN PIRP Irp)
62{
63 if (((PFDO_DEVICE_EXTENSION)DeviceObject->DeviceExtension)->Common.IsFDO)
65 else
67}
68
69
70static
74 IN PIRP Irp)
75{
76 if (((PFDO_DEVICE_EXTENSION)DeviceObject->DeviceExtension)->Common.IsFDO)
77 return FdoRead(DeviceObject, Irp);
78 else
79 return PdoRead(DeviceObject, Irp);
80}
81
82
83static
87 IN PIRP Irp)
88{
89 if (((PFDO_DEVICE_EXTENSION)DeviceObject->DeviceExtension)->Common.IsFDO)
90 return FdoWrite(DeviceObject, Irp);
91 else
92 return PdoWrite(DeviceObject, Irp);
93}
94
95
96static
100 IN PIRP Irp)
101{
102 if (((PFDO_DEVICE_EXTENSION)DeviceObject->DeviceExtension)->Common.IsFDO)
103 return FdoPnp(DeviceObject, Irp);
104 else
105 return PdoPnp(DeviceObject, Irp);
106}
107
108
109static
111NTAPI
113 IN PIRP Irp)
114{
115 if (((PFDO_DEVICE_EXTENSION)DeviceObject->DeviceExtension)->Common.IsFDO)
116 return FdoPower(DeviceObject, Irp);
117 else
118 return PdoPower(DeviceObject, Irp);
119}
120
121
123NTAPI
125 IN PUNICODE_STRING RegPath)
126{
127 ULONG i;
128
129 DPRINT("Parport DriverEntry\n");
130
131 DriverObject->DriverUnload = DriverUnload;
132 DriverObject->DriverExtension->AddDevice = AddDevice;
133
134 for (i = 0; i <= IRP_MJ_MAXIMUM_FUNCTION; i++)
135 DriverObject->MajorFunction[i] = ForwardIrpAndForget;
136
137 DriverObject->MajorFunction[IRP_MJ_CREATE] = DispatchCreate;
138 DriverObject->MajorFunction[IRP_MJ_CLOSE] = DispatchClose;
140 DriverObject->MajorFunction[IRP_MJ_READ] = DispatchRead;
141 DriverObject->MajorFunction[IRP_MJ_WRITE] = DispatchWrite;
142// DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = DispatchDeviceControl;
143// DriverObject->MajorFunction[IRP_MJ_QUERY_INFORMATION] = DispatchQueryInformation;
144 DriverObject->MajorFunction[IRP_MJ_PNP] = DispatchPnp;
145 DriverObject->MajorFunction[IRP_MJ_POWER] = DispatchPower;
146
147 return STATUS_SUCCESS;
148}
LONG NTSTATUS
Definition: precomp.h:26
#define IRP_MJ_PNP
Definition: cdrw_usr.h:52
_In_ PIRP Irp
Definition: csq.h:116
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
DRIVER_DISPATCH ForwardIrpAndForget
Definition: i8042prt.h:341
DRIVER_DISPATCH(nfs41_FsdDispatch)
NTSTATUS NTAPI FdoRead(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: fdo.c:480
NTSTATUS NTAPI FdoClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: fdo.c:445
NTSTATUS NTAPI FdoPnp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: fdo.c:508
NTSTATUS NTAPI FdoCreate(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: fdo.c:412
NTSTATUS NTAPI FdoPower(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: fdo.c:610
NTSTATUS NTAPI FdoWrite(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: fdo.c:494
NTSTATUS NTAPI FdoCleanup(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: fdo.c:465
static DRIVER_DISPATCH DispatchPower
Definition: parport.c:16
static DRIVER_DISPATCH DispatchCreate
Definition: parport.c:12
static DRIVER_DISPATCH DispatchClose
Definition: parport.c:13
DRIVER_INITIALIZE DriverEntry
Definition: parport.c:17
static DRIVER_DISPATCH DispatchCleanup
Definition: parport.c:14
static NTSTATUS NTAPI DispatchWrite(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: parport.c:86
static DRIVER_DISPATCH DispatchPnp
Definition: parport.c:15
static DRIVER_UNLOAD DriverUnload
Definition: parport.c:11
static NTSTATUS NTAPI DispatchRead(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: parport.c:73
NTSTATUS NTAPI PdoWrite(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: pdo.c:97
NTSTATUS NTAPI PdoRead(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: pdo.c:83
NTSTATUS NTAPI PdoPnp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: pdo.c:163
DRIVER_ADD_DEVICE AddDevice
Definition: parport.h:69
NTSTATUS NTAPI PdoCleanup(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: pdo.c:69
NTSTATUS NTAPI PdoCreate(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: pdo.c:16
NTSTATUS NTAPI PdoClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: pdo.c:49
NTSTATUS NTAPI PdoPower(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: pdo.c:177
#define IRP_MJ_CLOSE
Definition: rdpdr.c:45
#define IRP_MJ_READ
Definition: rdpdr.c:46
#define IRP_MJ_WRITE
Definition: rdpdr.c:47
#define IRP_MJ_CREATE
Definition: rdpdr.c:44
#define STATUS_SUCCESS
Definition: shellext.h:65
#define DPRINT
Definition: sndvol32.h:73
#define NTAPI
Definition: typedefs.h:36
#define IN
Definition: typedefs.h:39
uint32_t ULONG
Definition: typedefs.h:59
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2061
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
Definition: wdfdriver.h:213
#define IRP_MJ_POWER
#define IRP_MJ_CLEANUP
#define IRP_MJ_MAXIMUM_FUNCTION