mirror of
https://github.com/reactos/reactos.git
synced 2025-07-30 16:12:02 +00:00
[NTFS]
Store stack & FO in IRP context svn path=/trunk/; revision=67539
This commit is contained in:
parent
0e1b711195
commit
7a305fc01f
2 changed files with 11 additions and 9 deletions
|
@ -67,7 +67,6 @@ NtfsAllocateIrpContext(PDEVICE_OBJECT DeviceObject,
|
||||||
PIRP Irp)
|
PIRP Irp)
|
||||||
{
|
{
|
||||||
PNTFS_IRP_CONTEXT IrpContext;
|
PNTFS_IRP_CONTEXT IrpContext;
|
||||||
PIO_STACK_LOCATION IoStackLocation;
|
|
||||||
|
|
||||||
TRACE_(NTFS, "NtfsAllocateIrpContext()\n");
|
TRACE_(NTFS, "NtfsAllocateIrpContext()\n");
|
||||||
|
|
||||||
|
@ -83,16 +82,17 @@ NtfsAllocateIrpContext(PDEVICE_OBJECT DeviceObject,
|
||||||
IrpContext->Identifier.Size = sizeof(NTFS_IRP_CONTEXT);
|
IrpContext->Identifier.Size = sizeof(NTFS_IRP_CONTEXT);
|
||||||
IrpContext->Irp = Irp;
|
IrpContext->Irp = Irp;
|
||||||
IrpContext->DeviceObject = DeviceObject;
|
IrpContext->DeviceObject = DeviceObject;
|
||||||
IoStackLocation = IoGetCurrentIrpStackLocation(Irp);
|
IrpContext->Stack = IoGetCurrentIrpStackLocation(Irp);
|
||||||
IrpContext->MajorFunction = IoStackLocation->MajorFunction;
|
IrpContext->MajorFunction = IrpContext->Stack->MajorFunction;
|
||||||
IrpContext->MinorFunction = IoStackLocation->MinorFunction;
|
IrpContext->MinorFunction = IrpContext->Stack->MinorFunction;
|
||||||
|
IrpContext->FileObject = IrpContext->Stack->FileObject;
|
||||||
IrpContext->IsTopLevel = (IoGetTopLevelIrp() == Irp);
|
IrpContext->IsTopLevel = (IoGetTopLevelIrp() == Irp);
|
||||||
|
|
||||||
if (IoStackLocation->MajorFunction == IRP_MJ_FILE_SYSTEM_CONTROL ||
|
if (IrpContext->MajorFunction == IRP_MJ_FILE_SYSTEM_CONTROL ||
|
||||||
IoStackLocation->MajorFunction == IRP_MJ_DEVICE_CONTROL ||
|
IrpContext->MajorFunction == IRP_MJ_DEVICE_CONTROL ||
|
||||||
IoStackLocation->MajorFunction == IRP_MJ_SHUTDOWN ||
|
IrpContext->MajorFunction == IRP_MJ_SHUTDOWN ||
|
||||||
(IoStackLocation->MajorFunction != IRP_MJ_CLEANUP &&
|
(IrpContext->MajorFunction != IRP_MJ_CLEANUP &&
|
||||||
IoStackLocation->MajorFunction != IRP_MJ_CLOSE &&
|
IrpContext->MajorFunction != IRP_MJ_CLOSE &&
|
||||||
IoIsOperationSynchronous(Irp)))
|
IoIsOperationSynchronous(Irp)))
|
||||||
{
|
{
|
||||||
IrpContext->Flags |= IRPCONTEXT_CANWAIT;
|
IrpContext->Flags |= IRPCONTEXT_CANWAIT;
|
||||||
|
|
|
@ -397,12 +397,14 @@ typedef struct
|
||||||
{
|
{
|
||||||
NTFSIDENTIFIER Identifier;
|
NTFSIDENTIFIER Identifier;
|
||||||
ULONG Flags;
|
ULONG Flags;
|
||||||
|
PIO_STACK_LOCATION Stack;
|
||||||
UCHAR MajorFunction;
|
UCHAR MajorFunction;
|
||||||
UCHAR MinorFunction;
|
UCHAR MinorFunction;
|
||||||
WORK_QUEUE_ITEM WorkQueueItem;
|
WORK_QUEUE_ITEM WorkQueueItem;
|
||||||
PIRP Irp;
|
PIRP Irp;
|
||||||
BOOLEAN IsTopLevel;
|
BOOLEAN IsTopLevel;
|
||||||
PDEVICE_OBJECT DeviceObject;
|
PDEVICE_OBJECT DeviceObject;
|
||||||
|
PFILE_OBJECT FileObject;
|
||||||
NTSTATUS SavedExceptionCode;
|
NTSTATUS SavedExceptionCode;
|
||||||
} NTFS_IRP_CONTEXT, *PNTFS_IRP_CONTEXT;
|
} NTFS_IRP_CONTEXT, *PNTFS_IRP_CONTEXT;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue