}
+/*
+ * @implemented
+ */
NTSTATUS STDCALL
NtQueryVolumeInformationFile(IN HANDLE FileHandle,
OUT PIO_STATUS_BLOCK IoStatusBlock,
return(STATUS_INSUFFICIENT_RESOURCES);
}
+ //trigger FileObject/Event dereferencing
+ Irp->Tail.Overlay.OriginalFileObject = FileObject;
+
Irp->AssociatedIrp.SystemBuffer = SystemBuffer;
KeResetEvent( &FileObject->Event );
Irp->UserEvent = &FileObject->Event;
}
+/*
+ * @implemented
+ */
NTSTATUS STDCALL
IoQueryVolumeInformation(IN PFILE_OBJECT FileObject,
IN FS_INFORMATION_CLASS FsInformationClass,
ObDereferenceObject(FileObject);
return(STATUS_INSUFFICIENT_RESOURCES);
}
+
+ //trigger FileObject/Event dereferencing
+ Irp->Tail.Overlay.OriginalFileObject = FileObject;
Irp->AssociatedIrp.SystemBuffer = FsInformation;
KeResetEvent( &FileObject->Event );
}
+/*
+ * @implemented
+ */
NTSTATUS STDCALL
NtSetVolumeInformationFile(IN HANDLE FileHandle,
OUT PIO_STATUS_BLOCK IoStatusBlock,
PDEVICE_OBJECT DeviceObject;
PIRP Irp;
NTSTATUS Status;
- PIO_STACK_LOCATION StackPtr;
+ PEXTENDED_IO_STACK_LOCATION StackPtr;
PVOID SystemBuffer;
IO_STATUS_BLOCK IoSB;
FsInformation,
Length);
+ //trigger FileObject/Event dereferencing
+ Irp->Tail.Overlay.OriginalFileObject = FileObject;
+
Irp->AssociatedIrp.SystemBuffer = SystemBuffer;
KeResetEvent( &FileObject->Event );
Irp->UserEvent = &FileObject->Event;
Irp->UserIosb = &IoSB;
Irp->Tail.Overlay.Thread = PsGetCurrentThread();
- StackPtr = IoGetNextIrpStackLocation(Irp);
+ StackPtr = (PEXTENDED_IO_STACK_LOCATION) IoGetNextIrpStackLocation(Irp);
StackPtr->MajorFunction = IRP_MJ_SET_VOLUME_INFORMATION;
StackPtr->MinorFunction = 0;
StackPtr->Flags = 0;
}
+/*
+ * @implemented
+ */
VOID STDCALL
IoAcquireVpbSpinLock(OUT PKIRQL Irql)
{
}
+/*
+ * @implemented
+ */
VOID STDCALL
IoReleaseVpbSpinLock(IN KIRQL Irql)
{