ReactOS 0.4.16-dev-1972-gf20c09f
pdo.c File Reference
#include "parport.h"
#include <debug.h>
Include dependency graph for pdo.c:

Go to the source code of this file.

Macros

#define NDEBUG
 

Functions

NTSTATUS NTAPI PdoCreate (IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
 
NTSTATUS NTAPI PdoClose (IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
 
NTSTATUS NTAPI PdoCleanup (IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
 
NTSTATUS NTAPI PdoRead (IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
 
NTSTATUS NTAPI PdoWrite (IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
 
NTSTATUS NTAPI PdoPnp (IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
 
NTSTATUS NTAPI PdoPower (IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
 

Macro Definition Documentation

◆ NDEBUG

#define NDEBUG

Definition at line 9 of file pdo.c.

Function Documentation

◆ PdoCleanup()

NTSTATUS NTAPI PdoCleanup ( IN PDEVICE_OBJECT  DeviceObject,
IN PIRP  Irp 
)

Definition at line 69 of file pdo.c.

71{
72 DPRINT("PdoCleanup()\n");
73
74 Irp->IoStatus.Information = 0;
75 Irp->IoStatus.Status = STATUS_SUCCESS;
77 return STATUS_SUCCESS;
78}
_In_ PIRP Irp
Definition: csq.h:116
#define IoCompleteRequest
Definition: irp.c:1240
#define STATUS_SUCCESS
Definition: shellext.h:65
#define DPRINT
Definition: sndvol32.h:73
#define IO_NO_INCREMENT
Definition: iotypes.h:598

Referenced by DispatchCleanup().

◆ PdoClose()

NTSTATUS NTAPI PdoClose ( IN PDEVICE_OBJECT  DeviceObject,
IN PIRP  Irp 
)

Definition at line 49 of file pdo.c.

51{
52 PPDO_DEVICE_EXTENSION pDeviceExtension;
53
54 DPRINT("PdoClose()\n");
55
56 pDeviceExtension = (PPDO_DEVICE_EXTENSION)DeviceObject->DeviceExtension;
57 pDeviceExtension->OpenCount--;
58
59 Irp->IoStatus.Information = 0;
60 Irp->IoStatus.Status = STATUS_SUCCESS;
62
63 return STATUS_SUCCESS;
64}
struct _PDO_DEVICE_EXTENSION * PPDO_DEVICE_EXTENSION
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2061

Referenced by DispatchClose().

◆ PdoCreate()

NTSTATUS NTAPI PdoCreate ( IN PDEVICE_OBJECT  DeviceObject,
IN PIRP  Irp 
)

Definition at line 16 of file pdo.c.

18{
19 PPDO_DEVICE_EXTENSION DeviceExtension;
22
23 DPRINT("PdoCreate()\n");
24
26 DeviceExtension = (PPDO_DEVICE_EXTENSION)DeviceObject->DeviceExtension;
27
28 if (Stack->Parameters.Create.Options & FILE_DIRECTORY_FILE)
29 {
30 DPRINT1("Not a directory\n");
32 goto done;
33 }
34
35 DPRINT("Open LPT%lu: successful\n", DeviceExtension->LptPort);
36 DeviceExtension->OpenCount++;
37
38done:
39 Irp->IoStatus.Status = Status;
40 Irp->IoStatus.Information = 0;
42
43 return Status;
44}
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
LONG NTSTATUS
Definition: precomp.h:26
#define FILE_DIRECTORY_FILE
Definition: constants.h:491
#define DPRINT1
Definition: precomp.h:8
Status
Definition: gdiplustypes.h:25
if(dx< 0)
Definition: linetemp.h:194
#define STATUS_NOT_A_DIRECTORY
Definition: udferr_usr.h:169
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack
Definition: wdfrequest.h:639

Referenced by DispatchCreate().

◆ PdoPnp()

NTSTATUS NTAPI PdoPnp ( IN PDEVICE_OBJECT  DeviceObject,
IN PIRP  Irp 
)

Definition at line 163 of file pdo.c.

165{
167 DPRINT("PdoPnp()\n");
168
169 Status = Irp->IoStatus.Status;
171 return Status;
172}

Referenced by DispatchPnp().

◆ PdoPower()

NTSTATUS NTAPI PdoPower ( IN PDEVICE_OBJECT  DeviceObject,
IN PIRP  Irp 
)

Definition at line 177 of file pdo.c.

179{
181 PIO_STACK_LOCATION IoStack;
182
183 DPRINT("PdoPower()\n");
184
186
187 switch (IoStack->MinorFunction)
188 {
189 case IRP_MN_SET_POWER:
191 Irp->IoStatus.Status = STATUS_SUCCESS;
192 break;
193 }
194
195 Status = Irp->IoStatus.Status;
198 return Status;
199}
VOID NTAPI PoStartNextPowerIrp(IN PIRP Irp)
Definition: power.c:758
#define IRP_MN_SET_POWER
#define IRP_MN_QUERY_POWER

Referenced by DispatchPower().

◆ PdoRead()

NTSTATUS NTAPI PdoRead ( IN PDEVICE_OBJECT  DeviceObject,
IN PIRP  Irp 
)

Definition at line 83 of file pdo.c.

85{
86 DPRINT("PdoRead()\n");
87
88 Irp->IoStatus.Information = 0;
89 Irp->IoStatus.Status = STATUS_SUCCESS;
91 return STATUS_SUCCESS;
92}

Referenced by DispatchRead().

◆ PdoWrite()

NTSTATUS NTAPI PdoWrite ( IN PDEVICE_OBJECT  DeviceObject,
IN PIRP  Irp 
)

Definition at line 97 of file pdo.c.

99{
100 PPDO_DEVICE_EXTENSION PdoDeviceExtension;
101 PFDO_DEVICE_EXTENSION FdoDeviceExtension;
102 PIO_STACK_LOCATION IoStack;
104 ULONG i;
106 ULONG ulCount;
107
108 DPRINT("PdoWrite()\n");
109
110 PdoDeviceExtension = (PPDO_DEVICE_EXTENSION)DeviceObject->DeviceExtension;
111 FdoDeviceExtension = (PFDO_DEVICE_EXTENSION)PdoDeviceExtension->AttachedFdo->DeviceExtension;
112
114
116 DPRINT("Length: %lu\n", IoStack->Parameters.Write.Length);
117 DPRINT("Buffer: %p\n", Buffer);
118
119 for (i = 0; i < IoStack->Parameters.Write.Length; i++)
120 {
121 ulCount = 0;
122
123 do
124 {
126 PortStatus = READ_PORT_UCHAR(UlongToPtr(FdoDeviceExtension->BaseAddress + 1));
127 ulCount++;
128 }
129 while (ulCount < 500000 && !(PortStatus & LP_PBUSY));
130
131 if (ulCount == 500000)
132 {
133 DPRINT("Timed out\n");
134
135 Irp->IoStatus.Information = 0;
136 Irp->IoStatus.Status = STATUS_TIMEOUT;
138
139 return STATUS_TIMEOUT;
140 }
141
142 /* Write character */
143 WRITE_PORT_UCHAR(UlongToPtr(FdoDeviceExtension->BaseAddress), Buffer[i]);
144
146
147 WRITE_PORT_UCHAR(UlongToPtr(FdoDeviceExtension->BaseAddress + 2), (LP_PSELECP | LP_PINITP | LP_PSTROBE));
148
150
151 WRITE_PORT_UCHAR(UlongToPtr(FdoDeviceExtension->BaseAddress + 2), (LP_PSELECP | LP_PINITP));
152 }
153
154 Irp->IoStatus.Information = 0;
155 Irp->IoStatus.Status = STATUS_SUCCESS;
157 return STATUS_SUCCESS;
158}
Definition: bufpool.h:45
#define STATUS_TIMEOUT
Definition: d3dkmdt.h:49
#define LP_PBUSY
Definition: parallel.h:101
#define LP_PINITP
Definition: parallel.h:114
#define LP_PSTROBE
Definition: parallel.h:116
#define LP_PSELECP
Definition: parallel.h:113
PVOID GetUserBuffer(IN PIRP Irp)
Definition: misc.c:33
#define UlongToPtr(u)
Definition: config.h:106
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
_Outptr_ PUSB_DEVICE_HANDLE _In_ PUSB_DEVICE_HANDLE _In_ USHORT PortStatus
Definition: hubbusif.h:42
#define KeStallExecutionProcessor(MicroSeconds)
Definition: precomp.h:27
#define READ_PORT_UCHAR(p)
Definition: pc98vid.h:22
#define WRITE_PORT_UCHAR(p, d)
Definition: pc98vid.h:21
PVOID DeviceExtension
Definition: env_spec_w32.h:418
struct _IO_STACK_LOCATION::@4278::@4283 Write
union _IO_STACK_LOCATION::@1694 Parameters
PDEVICE_OBJECT AttachedFdo
Definition: parport.h:56
unsigned char * PUCHAR
Definition: typedefs.h:53
uint32_t ULONG
Definition: typedefs.h:59
unsigned char UCHAR
Definition: xmlstorage.h:181

Referenced by DispatchWrite().