[PARPORT]

- Add support for IRP_MJ_READ.
- IRP_MJ_READ and IRP_MJ_WRITE return STATUS_NOT_SUPPORTED for FDO devices.

svn path=/trunk/; revision=68588
This commit is contained in:
Eric Kohl 2015-08-01 18:02:45 +00:00
parent 5c15cde76e
commit 9d780c6b0b
4 changed files with 54 additions and 3 deletions

View file

@ -471,6 +471,20 @@ FdoCleanup(IN PDEVICE_OBJECT DeviceObject,
}
NTSTATUS
NTAPI
FdoRead(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp)
{
DPRINT("FdoRead()\n");
Irp->IoStatus.Information = 0;
Irp->IoStatus.Status = STATUS_NOT_SUPPORTED;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
return STATUS_NOT_SUPPORTED;
}
NTSTATUS
NTAPI
FdoWrite(IN PDEVICE_OBJECT DeviceObject,
@ -479,9 +493,9 @@ FdoWrite(IN PDEVICE_OBJECT DeviceObject,
DPRINT("FdoWrite()\n");
Irp->IoStatus.Information = 0;
Irp->IoStatus.Status = STATUS_SUCCESS;
Irp->IoStatus.Status = STATUS_NOT_SUPPORTED;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
return STATUS_SUCCESS;
return STATUS_NOT_SUPPORTED;
}

View file

@ -65,6 +65,19 @@ DispatchCleanup(IN PDEVICE_OBJECT DeviceObject,
}
static
NTSTATUS
NTAPI
DispatchRead(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp)
{
if (((PFDO_DEVICE_EXTENSION)DeviceObject->DeviceExtension)->Common.IsFDO)
return FdoRead(DeviceObject, Irp);
else
return PdoRead(DeviceObject, Irp);
}
static
NTSTATUS
NTAPI
@ -122,7 +135,7 @@ DriverEntry(IN PDRIVER_OBJECT DriverObject,
DriverObject->MajorFunction[IRP_MJ_CREATE] = DispatchCreate;
DriverObject->MajorFunction[IRP_MJ_CLOSE] = DispatchClose;
DriverObject->MajorFunction[IRP_MJ_CLEANUP] = DispatchCleanup;
// DriverObject->MajorFunction[IRP_MJ_READ] = DispatchRead;
DriverObject->MajorFunction[IRP_MJ_READ] = DispatchRead;
DriverObject->MajorFunction[IRP_MJ_WRITE] = DispatchWrite;
// DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = DispatchDeviceControl;
// DriverObject->MajorFunction[IRP_MJ_QUERY_INFORMATION] = DispatchQueryInformation;

View file

@ -86,6 +86,11 @@ NTAPI
FdoCleanup(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp);
NTSTATUS
NTAPI
FdoRead(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp);
NTSTATUS
NTAPI
FdoWrite(IN PDEVICE_OBJECT DeviceObject,
@ -133,6 +138,11 @@ 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,

View file

@ -76,6 +76,20 @@ PdoCleanup(IN PDEVICE_OBJECT DeviceObject,
}
NTSTATUS
NTAPI
PdoRead(IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp)
{
DPRINT("PdoRead()\n");
Irp->IoStatus.Information = 0;
Irp->IoStatus.Status = STATUS_SUCCESS;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
return STATUS_SUCCESS;
}
NTSTATUS
NTAPI
PdoWrite(IN PDEVICE_OBJECT DeviceObject,