+/*
+ * @unimplemented
+ */
NTSTATUS
STDCALL
NtNotifyChangeDirectoryFile (
}
+/*
+ * @implemented
+ */
NTSTATUS
STDCALL
NtQueryDirectoryFile(
PDEVICE_OBJECT DeviceObject;
PFILE_OBJECT FileObject;
NTSTATUS Status;
- PIO_STACK_LOCATION IoStack;
+ PEXTENDED_IO_STACK_LOCATION IoStack;
IO_STATUS_BLOCK IoSB;
DPRINT("NtQueryDirectoryFile()\n");
return STATUS_UNSUCCESSFUL;
}
+ //trigger FileObject/Event dereferencing
+ Irp->Tail.Overlay.OriginalFileObject = FileObject;
Irp->UserIosb = &IoSB;
Irp->UserEvent = &FileObject->Event;
KeResetEvent( &FileObject->Event );
Irp->UserBuffer=FileInformation;
- IoStack = IoGetNextIrpStackLocation(Irp);
+ IoStack = (PEXTENDED_IO_STACK_LOCATION) IoGetNextIrpStackLocation(Irp);
IoStack->MajorFunction = IRP_MJ_DIRECTORY_CONTROL;
IoStack->MinorFunction = IRP_MN_QUERY_DIRECTORY;
{
IoStack->Flags = IoStack->Flags | SL_INDEX_SPECIFIED;
}
-
+
IoStack->Parameters.QueryDirectory.FileInformationClass =
FileInformationClass;
IoStack->Parameters.QueryDirectory.FileName = FileName;