Queue IRP_MJ_DIRECTORY_CONTROL IRPs.

svn path=/trunk/; revision=67991
This commit is contained in:
Eric Kohl 2015-06-01 15:04:50 +00:00
parent ef692c9c85
commit 378407a5c8
4 changed files with 17 additions and 20 deletions

View file

@ -85,8 +85,7 @@ DriverEntry(PDRIVER_OBJECT DriverObject,
DriverObject->MajorFunction[IRP_MJ_READ] = CdfsRead; DriverObject->MajorFunction[IRP_MJ_READ] = CdfsRead;
DriverObject->MajorFunction[IRP_MJ_WRITE] = CdfsWrite; DriverObject->MajorFunction[IRP_MJ_WRITE] = CdfsWrite;
DriverObject->MajorFunction[IRP_MJ_FILE_SYSTEM_CONTROL] = CdfsFsdDispatch; DriverObject->MajorFunction[IRP_MJ_FILE_SYSTEM_CONTROL] = CdfsFsdDispatch;
DriverObject->MajorFunction[IRP_MJ_DIRECTORY_CONTROL] = DriverObject->MajorFunction[IRP_MJ_DIRECTORY_CONTROL] = CdfsFsdDispatch;
CdfsDirectoryControl;
DriverObject->MajorFunction[IRP_MJ_QUERY_INFORMATION] = CdfsFsdDispatch; DriverObject->MajorFunction[IRP_MJ_QUERY_INFORMATION] = CdfsFsdDispatch;
DriverObject->MajorFunction[IRP_MJ_SET_INFORMATION] = CdfsFsdDispatch; DriverObject->MajorFunction[IRP_MJ_SET_INFORMATION] = CdfsFsdDispatch;
DriverObject->MajorFunction[IRP_MJ_QUERY_VOLUME_INFORMATION] = CdfsFsdDispatch; DriverObject->MajorFunction[IRP_MJ_QUERY_VOLUME_INFORMATION] = CdfsFsdDispatch;

View file

@ -338,12 +338,10 @@ CdfsDeviceControl(
/* dirctl.c */ /* dirctl.c */
DRIVER_DISPATCH CdfsDirectoryControl;
NTSTATUS NTSTATUS
NTAPI NTAPI
CdfsDirectoryControl(PDEVICE_OBJECT DeviceObject, CdfsDirectoryControl(
PIRP Irp); PCDFS_IRP_CONTEXT IrpContext);
/* dispatch.c */ /* dispatch.c */
@ -452,13 +450,9 @@ CdfsSetInformation(
/* fsctl.c */ /* fsctl.c */
//DRIVER_DISPATCH CdfsFileSystemControl;
NTSTATUS NTAPI NTSTATUS NTAPI
CdfsFileSystemControl( CdfsFileSystemControl(
PCDFS_IRP_CONTEXT IrpContext); PCDFS_IRP_CONTEXT IrpContext);
// PDEVICE_OBJECT DeviceObject,
// PIRP Irp);
/* misc.c */ /* misc.c */

View file

@ -784,18 +784,23 @@ CdfsNotifyChangeDirectory(PDEVICE_OBJECT DeviceObject,
NTSTATUS NTAPI NTSTATUS NTAPI
CdfsDirectoryControl(PDEVICE_OBJECT DeviceObject, CdfsDirectoryControl(
PIRP Irp) PCDFS_IRP_CONTEXT IrpContext)
{ {
PIO_STACK_LOCATION Stack; PIRP Irp;
PDEVICE_OBJECT DeviceObject;
NTSTATUS Status; NTSTATUS Status;
DPRINT("CdfsDirectoryControl() called\n"); DPRINT("CdfsDirectoryControl() called\n");
ASSERT(IrpContext);
Irp = IrpContext->Irp;
DeviceObject = IrpContext->DeviceObject;
FsRtlEnterFileSystem(); FsRtlEnterFileSystem();
Stack = IoGetCurrentIrpStackLocation(Irp); switch (IrpContext->MinorFunction)
switch (Stack->MinorFunction)
{ {
case IRP_MN_QUERY_DIRECTORY: case IRP_MN_QUERY_DIRECTORY:
Status = CdfsQueryDirectory(DeviceObject, Status = CdfsQueryDirectory(DeviceObject,
@ -808,7 +813,7 @@ CdfsDirectoryControl(PDEVICE_OBJECT DeviceObject,
break; break;
default: default:
DPRINT1("CDFS: MinorFunction %u\n", Stack->MinorFunction); DPRINT1("CDFS: MinorFunction %u\n", IrpContext->MinorFunction);
Status = STATUS_INVALID_DEVICE_REQUEST; Status = STATUS_INVALID_DEVICE_REQUEST;
break; break;
} }
@ -817,7 +822,6 @@ CdfsDirectoryControl(PDEVICE_OBJECT DeviceObject,
{ {
Irp->IoStatus.Status = Status; Irp->IoStatus.Status = Status;
Irp->IoStatus.Information = 0; Irp->IoStatus.Information = 0;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
} }
FsRtlExitFileSystem(); FsRtlExitFileSystem();

View file

@ -18,7 +18,7 @@
* *
* COPYRIGHT: See COPYING in the top level directory * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
* FILE: drivers/filesystem/cdfs/dispatch.c * FILE: drivers/filesystems/cdfs/dispatch.c
* PURPOSE: CDROM (ISO 9660) filesystem driver * PURPOSE: CDROM (ISO 9660) filesystem driver
* PROGRAMMER: Pierre Schweitzer * PROGRAMMER: Pierre Schweitzer
*/ */
@ -85,7 +85,7 @@ CdfsDispatch(PCDFS_IRP_CONTEXT IrpContext)
break; break;
case IRP_MJ_DIRECTORY_CONTROL: case IRP_MJ_DIRECTORY_CONTROL:
// Status = CdfsDirectoryControl(IrpContext); Status = CdfsDirectoryControl(IrpContext);
break; break;
case IRP_MJ_READ: case IRP_MJ_READ: