mirror of
https://github.com/reactos/reactos.git
synced 2025-06-06 09:50:43 +00:00
[NTFS]
Handle IRP_MJ_DIRECTORY_CONTROL with the dispatch routine svn path=/trunk/; revision=67615
This commit is contained in:
parent
8426d2f96e
commit
8ddf736b58
4 changed files with 20 additions and 40 deletions
|
@ -436,52 +436,30 @@ NtfsQueryDirectory(PNTFS_IRP_CONTEXT IrpContext)
|
||||||
|
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NtfsDirectoryControl(PNTFS_IRP_CONTEXT IrpContext)
|
||||||
NtfsFsdDirectoryControl(PDEVICE_OBJECT DeviceObject,
|
|
||||||
PIRP Irp)
|
|
||||||
{
|
{
|
||||||
PNTFS_IRP_CONTEXT IrpContext = NULL;
|
|
||||||
NTSTATUS Status = STATUS_UNSUCCESSFUL;
|
NTSTATUS Status = STATUS_UNSUCCESSFUL;
|
||||||
|
|
||||||
DPRINT1("NtfsDirectoryControl() called\n");
|
DPRINT1("NtfsDirectoryControl() called\n");
|
||||||
|
|
||||||
FsRtlEnterFileSystem();
|
switch (IrpContext->MinorFunction)
|
||||||
ASSERT(DeviceObject);
|
|
||||||
ASSERT(Irp);
|
|
||||||
|
|
||||||
NtfsIsIrpTopLevel(Irp);
|
|
||||||
|
|
||||||
IrpContext = NtfsAllocateIrpContext(DeviceObject, Irp);
|
|
||||||
if (IrpContext)
|
|
||||||
{
|
{
|
||||||
switch (IrpContext->MinorFunction)
|
case IRP_MN_QUERY_DIRECTORY:
|
||||||
{
|
Status = NtfsQueryDirectory(IrpContext);
|
||||||
case IRP_MN_QUERY_DIRECTORY:
|
break;
|
||||||
Status = NtfsQueryDirectory(IrpContext);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IRP_MN_NOTIFY_CHANGE_DIRECTORY:
|
case IRP_MN_NOTIFY_CHANGE_DIRECTORY:
|
||||||
DPRINT1("IRP_MN_NOTIFY_CHANGE_DIRECTORY\n");
|
DPRINT1("IRP_MN_NOTIFY_CHANGE_DIRECTORY\n");
|
||||||
Status = STATUS_NOT_IMPLEMENTED;
|
Status = STATUS_NOT_IMPLEMENTED;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
Status = STATUS_INVALID_DEVICE_REQUEST;
|
Status = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
Status = STATUS_INSUFFICIENT_RESOURCES;
|
|
||||||
|
|
||||||
Irp->IoStatus.Status = Status;
|
IrpContext->Irp->IoStatus.Information = 0;
|
||||||
Irp->IoStatus.Information = 0;
|
|
||||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
|
||||||
|
|
||||||
if (IrpContext)
|
|
||||||
ExFreePoolWithTag(IrpContext, 'PRIN');
|
|
||||||
|
|
||||||
IoSetTopLevelIrp(NULL);
|
|
||||||
FsRtlExitFileSystem();
|
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -72,6 +72,10 @@ NtfsFsdDispatch(PDEVICE_OBJECT DeviceObject,
|
||||||
case IRP_MJ_QUERY_INFORMATION:
|
case IRP_MJ_QUERY_INFORMATION:
|
||||||
Status = NtfsQueryInformation(IrpContext);
|
Status = NtfsQueryInformation(IrpContext);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case IRP_MJ_DIRECTORY_CONTROL:
|
||||||
|
Status = NtfsDirectoryControl(IrpContext);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -126,7 +126,7 @@ NtfsInitializeFunctionPointers(PDRIVER_OBJECT DriverObject)
|
||||||
DriverObject->MajorFunction[IRP_MJ_QUERY_INFORMATION] = NtfsFsdDispatch;
|
DriverObject->MajorFunction[IRP_MJ_QUERY_INFORMATION] = NtfsFsdDispatch;
|
||||||
DriverObject->MajorFunction[IRP_MJ_QUERY_VOLUME_INFORMATION] = NtfsFsdDispatch;
|
DriverObject->MajorFunction[IRP_MJ_QUERY_VOLUME_INFORMATION] = NtfsFsdDispatch;
|
||||||
DriverObject->MajorFunction[IRP_MJ_SET_VOLUME_INFORMATION] = NtfsFsdDispatch;
|
DriverObject->MajorFunction[IRP_MJ_SET_VOLUME_INFORMATION] = NtfsFsdDispatch;
|
||||||
DriverObject->MajorFunction[IRP_MJ_DIRECTORY_CONTROL] = NtfsFsdDirectoryControl;
|
DriverObject->MajorFunction[IRP_MJ_DIRECTORY_CONTROL] = NtfsFsdDispatch;
|
||||||
DriverObject->MajorFunction[IRP_MJ_FILE_SYSTEM_CONTROL] = NtfsFsdFileSystemControl;
|
DriverObject->MajorFunction[IRP_MJ_FILE_SYSTEM_CONTROL] = NtfsFsdFileSystemControl;
|
||||||
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = NtfsFsdDeviceControl;
|
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = NtfsFsdDeviceControl;
|
||||||
|
|
||||||
|
|
|
@ -541,10 +541,8 @@ NtfsFsdDeviceControl(PDEVICE_OBJECT DeviceObject,
|
||||||
|
|
||||||
/* dirctl.c */
|
/* dirctl.c */
|
||||||
|
|
||||||
DRIVER_DISPATCH NtfsFsdDirectoryControl;
|
NTSTATUS
|
||||||
NTSTATUS NTAPI
|
NtfsDirectoryControl(PNTFS_IRP_CONTEXT IrpContext);
|
||||||
NtfsFsdDirectoryControl(PDEVICE_OBJECT DeviceObject,
|
|
||||||
PIRP Irp);
|
|
||||||
|
|
||||||
|
|
||||||
/* dispatch.c */
|
/* dispatch.c */
|
||||||
|
|
Loading…
Reference in a new issue