The MASM Forum Archive 2004 to 2012

General Forums => The Laboratory => Topic started by: lingo on April 11, 2011, 11:17:40 PM

Title: Faster Dirs Tree View
Post by: lingo on April 11, 2011, 11:17:40 PM
"When I have time I will try with NtQueryDirectoryFile from Ntdll.dll.."

As I promised in my Reply #20 link (http://www.masm32.com/board/index.php?topic=16312.15), I resolved the speed problem with NtQueryDirectoryFile.  :P
It is tested under Win7 64bit – SP1 and XP 32bit - SP3.
Title: Re: Faster Dirs Tree View
Post by: dedndave on April 11, 2011, 11:34:36 PM
XP MCE 2005 Sp3
Prescott w/htt (SSE3)
(http://img833.imageshack.us/img833/8864/lingo.png)

well, you were right about one thing...
....it WAS fast   ::)
Title: Re: Faster Dirs Tree View
Post by: donkey on April 11, 2011, 11:38:56 PM
Very fast but not very useful. It shows files in C root that are definitely not there, it seems to have issues opening subfolders empty or not, it also occasionally displayed the contents of a subfolder as if they were in its parent folder. Lastly, though I'm not absolutely sure because of the structure of my drive, I think it crossed a partition and displayed folders from another partition. I had some of these issues when I originally tried the Ntxxx functions but I abandoned the effort before I figured them out as I went for 9x compatibility.

(http://img156.imageshack.us/img156/6782/59153965.jpg)

Win7 Ult. X64

I get the same error as Dave when trying with XP compatibility mode and MCE.
Title: Re: Faster Dirs Tree View
Post by: hutch-- on April 11, 2011, 11:48:47 PM
Sorry Lingo,

It won't even start here, instant GP fault. This is on my Xp SP3 box.
Title: Re: Faster Dirs Tree View
Post by: donkey on April 11, 2011, 11:54:35 PM
Also the directory tree has to be in a structure that's understandable to the end user, not some obscure listing that has little bearing on how the user sees his drive.

(http://img541.imageshack.us/img541/2931/dt2e.jpg)

The vcxxxx.htm files shown here in the drive root folder are actually in "C:\Programming\instruct32 Source" and of course the symbols folder is a subfolder of Windows and doesn't belong in Root.
Title: Re: Faster Dirs Tree View
Post by: donkey on April 12, 2011, 12:02:09 AM
My actual Drive C: root:

(http://img690.imageshack.us/img690/4412/dt3f.jpg)
Title: Re: Faster Dirs Tree View
Post by: dedndave on April 12, 2011, 12:15:15 AM
http://www.masm32.com/board/index.php?topic=15474.msg135028#msg135028

Dave:
Quoteat any rate - what we really need is a way to create a thread in here without any "advice" from lingo
he used to provide some value to the assembler community
now, he just repeats "i am the only person on the planet that knows how to write code",
in spite of the fact that his code often fails to work properly and/or is buggish
it's not as though we can simply go to a different forum - he seems intent on polluting all of them

lingo:
Quotehave you just one example?
Title: Re: Faster Dirs Tree View
Post by: lingo on April 12, 2011, 12:26:49 AM
Thanks guys for testing.
As I see you have a low memory errors...
So, please find the last variable in the .data -> nMemory dd 8000h
and correct it with smaller value.
Recompile it and try again.
Thank you in advance..   :P
Title: Re: Faster Dirs Tree View
Post by: dedndave on April 12, 2011, 12:40:24 AM
GlobalMemoryStatusEx
Title: Re: Faster Dirs Tree View
Post by: donkey on April 12, 2011, 12:47:18 AM
Quote from: lingo on April 12, 2011, 12:26:49 AM
Thanks guys for testing.
As I see you have a low memory errors...
So, please find the last variable in the .data -> nMemory dd 8000h
and correct it with smaller value.
Recompile it and try again.
Thank you in advance..   :P


My problems were not memory issues. On XP it GPF'ed after it threw a c0000013 (No Disk) so the memory should have been allocated fine and I consistently was able to allocate 500MB on the MCE system which has 2GB of physical RAM (shows 1217 MB Free). On Win7 the drive structure and file lists were completely wrong. I don't have the necessary files (umacros.asm) to recompile but its of only passing interest anyway so...

Next, all programs should take into account that each user has a different machine configuration. If you're building something that requires a recompile each time it encounters something different from your machine you haven't done adequate error trapping and in a program as winding and hard to follow as the one you posted this is a fatal mistake as is evident from the fact that 3 different people tried it on at least 4 different machines and it did not run properly on any and GPF'ed on 3. My internal code is winding and loosely commented but I make an effort to only post readable code that is easy to follow on the forum, after all if you don't why even bother to include the source.
Title: Re: Faster Dirs Tree View
Post by: lingo on April 12, 2011, 03:16:22 AM
"Also the directory tree has to be in a structure that's understandable to the end user, not some obscure listing that has little bearing on how the user sees his drive."
Wrong! It is not a full program, it is just an example.(see the original post and example)


"Next, all programs should take into account that each user has a different machine configuration"
Practically impossible, hence it is just a nonsense... :P


"If you're building something that requires a recompile each time it encounters something different from your machine and... bla,bla,blah,bla"
Again nonsense, just stupid bad emotions without any constructivism  ...


"as is evident from the fact that 3 different people tried it on at least 4 different machines and it did not run properly on any and GPF'ed on 3."
I have 2 machines at it works fine for me!!! (see my pics)  :P

"On Win7 the drive structure and file lists were completely wrong."
Again big nonsense (see my pictures)  :P

My internal code is winding and loosely commented but I make an effort to only post readable code that is easy to follow on the forum

Your code is "readable" for newbies but SLOW, hence I'm not interested,
and this post is for a SPEED problem rather than for "readable" code. :P


"I don't have the necessary files (umacros.asm) to recompile"

This is your great reason to post so many bla,bla,bla and nonsenses here! :lol


Anyway I thank you for the testing and for your efforts to help me to find the possible error in the undocumented code. :wink
Title: Re: Faster Dirs Tree View
Post by: hutch-- on April 12, 2011, 03:33:51 AM
 :bg

You can leave me out of the invective, I am much more interested in seeing a working version of the code. It builds OK here but when you try and run it I get a DrWatson dialog appears and an instant GP fault. This is on my XP SP3 dev box. PS: It is hard to read.  :P
Title: Re: Faster Dirs Tree View
Post by: lingo on April 12, 2011, 03:41:25 AM
Thank you Hutch,
but just tell me what to do?
For me it works just fine!!! :P
Donkey with his system is far away from Toronto and I can't test it on his place... :lol
What I can do? :P
Title: Re: Faster Dirs Tree View
Post by: hutch-- on April 12, 2011, 03:47:43 AM
Don't know the answer without knowing a lot more about your computer configurations on the different machines you have tested it on. It may be something like changes in NTDLL.DLL that they don't document but that is bacically the problem of using undocumented functions in DLLs that are not required to be consistent in their interface. I would also be interested to know what language versions of Windows you are running. I have had problems before with stuff that works on a US English version failing on other language versions.
Title: Re: Faster Dirs Tree View
Post by: six_L on April 12, 2011, 04:49:38 AM
OS:6.1.7600.2.0.0.768.2
QuoteExceptionCode:c0000005
offset:0000142a
Title: Re: Faster Dirs Tree View
Post by: Neil on April 12, 2011, 07:19:37 AM
Works perfectly on my Win 7 64 bit SP1. Shows all Drives & folders correctly & it is fast. I've had programs in the past that run OK on one machine (Same operating system) but not on another, never did find out why?
Title: Re: Faster Dirs Tree View
Post by: aker on April 13, 2011, 07:39:47 AM
ML v6.14 can not compile it.
ML v6.15 can not compile it.
Assembling: dt.asm
dt.asm(230) : error A2008: syntax error : xmm1
dt.asm(272) : error A2008: syntax error : xmm1
dt.asm(231) : error A2006: undefined symbol : xmm0
dt.asm(232) : error A2006: undefined symbol : xmm1
dt.asm(233) : error A2006: undefined symbol : xmm1
dt.asm(238) : error A2006: undefined symbol : xmm0
dt.asm(239) : error A2006: undefined symbol : xmm1
dt.asm(240) : error A2006: undefined symbol : xmm1
dt.asm(242) : error A2006: undefined symbol : xmm1
dt.asm(247) : error A2006: undefined symbol : xmm0
dt.asm(273) : error A2006: undefined symbol : xmm0
dt.asm(274) : error A2006: undefined symbol : xmm1
dt.asm(275) : error A2006: undefined symbol : xmm1
dt.asm(280) : error A2006: undefined symbol : xmm0
dt.asm(281) : error A2006: undefined symbol : xmm1
dt.asm(282) : error A2006: undefined symbol : xmm1
dt.asm(284) : error A2006: undefined symbol : xmm1
dt.asm(289) : error A2006: undefined symbol : xmm0

Help!
Title: Re: Faster Dirs Tree View
Post by: oex on April 13, 2011, 12:39:30 PM
Make the xmm registers uppercase ie XMM1 I forget what is the reason
Title: Re: Faster Dirs Tree View
Post by: jj2007 on April 13, 2011, 12:53:01 PM
include \masm32\include\masm32rt.inc
.686  ; only Jwasm needs this one
.xmm
Title: Re: Faster Dirs Tree View
Post by: oex on April 13, 2011, 01:03:35 PM
Quote from: jj2007 on April 13, 2011, 12:53:01 PM
.xmm

:lol now I remember however that begs another question.... Why does it not affect those who post source with .XMM?
Title: Re: Faster Dirs Tree View
Post by: aker on April 13, 2011, 01:52:24 PM
.586
.xmm
.model flat,stdcall
option casemap:none
...

already have .586, .xmm
Title: Re: Faster Dirs Tree View
Post by: oex on April 13, 2011, 03:23:33 PM
I havent checked instructions used but it may be that you are using 6.14 and dont have SSEx instructions?
Title: Re: Faster Dirs Tree View
Post by: Tedd on April 13, 2011, 03:35:57 PM
Old problem - it's just case-sensitivity ::)

Simply place ".xmm" AFTER "option casemap:none"
Title: Re: Faster Dirs Tree View
Post by: aker on April 13, 2011, 03:49:13 PM
great!  :thumbu
Title: Re: Faster Dirs Tree View
Post by: Tedd on April 17, 2011, 02:43:08 PM
A little faster than the original, by virtue of not (fully) traversing unexpanded folders..
Though the difference is pretty negligible, except for folders with many sub-folders.
Title: Re: Faster Dirs Tree View
Post by: FORTRANS on April 17, 2011, 02:56:05 PM
Hi,

Exception Processing Message c0000013 Parameters 7cc32d6c 7cc31d6c 7cc31d6c
Cancel  Try Again  Continue

   Windows 2000, P-III.  Try Again and Continue just display the
same message.  Did not see (notice!) any comment in the source
about a version requirement.  Actually Continue does lock up the
command prompt.

Regards,

Steve N.

Edit:
   And the Application seems to work after I close the stuff
covering it up.  Oops?

SRN
Title: Re: Faster Dirs Tree View
Post by: RuiLoureiro on April 17, 2011, 03:13:02 PM
Quote from: FORTRANS on April 17, 2011, 02:56:05 PM
Hi,
Exception Processing Message c0000013 Parameters 7cc32d6c 7cc31d6c 7cc31d6c
Cancel  Try Again  Continue

 Edit:
   And the Application seems to work after I close the stuff
covering it up.  Oops?

                The same on my XP SP3
Title: Re: Faster Dirs Tree View
Post by: lingo on April 23, 2011, 07:29:51 PM
"Though the difference is pretty negligible, except for folders with many sub-folders"

I tested your new version vs your prev version with C:\Windows\winsxs folder of Win7 64bit OS and your new times are better:  14 sec vs 15 sec  for your prev version.
Next I tested with C:\Windows\winsxs folder of Vista 64bit and the times are better again: 24 sec vs 29 sec of your prev version.

The times of my new "standard" version on the first click after restarting the PC
are 2 sec for C:\Windows\winsxs folder of Win7 64bit OS (10426 folders an 41571 files)
and 5 sec for C:\Windows\winsxs folder of Vista 64bit.(15881 folders and 60713 files).
Happy testing!  :bdg
Title: Re: Faster Dirs Tree View
Post by: Tedd on April 23, 2011, 11:21:15 PM
Yours forgoes checking folder contents and labels ALL folders as expandable (whether or not they're accessible or have sub-files), which is an obvious speed-up over functionality. But you should at least compare like-for-like.
Not that I have any doubt yours would still be faster, simply by the fact that it's a direct modification of mine; and I wrote it to be understandable.
Title: Re: Faster Dirs Tree View
Post by: lingo on April 23, 2011, 11:34:05 PM
"Yours forgoes checking folder contents and labels ALL folders as expandable"

Until you try to expand them... :bdg


"simply by the fact that it's a direct modification of mine;"

A little bit wrong, my "sources" are there (http://www.mctainsh.com/Articles/MFC/PathPicker.aspx)  :lol
Title: Re: Faster Dirs Tree View
Post by: hutch-- on April 24, 2011, 12:52:55 AM
Lingo,

This version seems to work properly on the range of drives I have tested it on and it is fast.
Title: Re: Faster Dirs Tree View
Post by: lingo on April 24, 2011, 01:22:20 AM
Thanks Hutch.. :P
Title: Re: Faster Dirs Tree View
Post by: lingo on April 26, 2011, 06:07:08 PM
"which is an obvious speed-up over functionality."

It is wrong coz I keep my times with EXACTLY your functionality.. :P(see attachment)

"But you should at least compare like-for-like."

With my new version it is just  job for you.. :bdg.Happy testing!
Title: Re: Faster Dirs Tree View
Post by: dedndave on April 26, 2011, 06:24:31 PM
it does seem reasonably fast
however, i am unable to expand some drives
i was interested to see the performance on my G: drive because it has a complex tree

(http://www.masm32.com/board/index.php?action=dlattach;topic=16421.0;id=9160)

drives C, F, G, H, and I are all mounted and visible hard drive volumes
the others have no volumes
i am only able to expand C and F

the attached file is the above PNG image renamed to ZIP
Title: Re: Faster Dirs Tree View
Post by: dedndave on April 26, 2011, 06:58:48 PM
that one works
Title: Re: Faster Dirs Tree View
Post by: FairLight on May 02, 2011, 11:24:23 PM
My System:
i7 2600k
Asus Sabertooth P67
Windows 7 64 bit

I've downloaded the zipfile, extracted it and started the dt.exe. Guess what happened?
dt.exe disappeared. That was weird behaviour. Extracted again, started and the same happened.
Then i searched my whole drives for dt.exe and nothing found.
I looked then into my Norton Internet Security 2011 history and there it was, in the quarantine section of SONAR.
The Norton app didn't tell me anything about, no window popped up, etc.
Even after scanning the dt.exe for a virus or trojan with Norton nothing was wrong with the file and it wasn't deleted by Norton.
After excluding the dt.exe from SONAR-search it started fine.
How fast it is? I don't know exactly, 'cause i have SSDs running, but on my NAS it's very fast.

cul8er.
Title: Re: Faster Dirs Tree View
Post by: lingo on May 03, 2011, 11:44:16 AM
Thanks FairLight,
I have the same system
with i7-2600k CPU, mobo Asus P8P67 Pro
and OS Win7 64 bit but it is not so "good"
for speed testing cos it is very fast... :lol
I use Avast Internet Security v.6 and
have no problems with dt.exe.  :U  
Title: Re: Faster Dirs Tree View
Post by: lingo on May 13, 2011, 03:53:06 PM
My improved version with the speed of lightning... :lol
Title: Re: Faster Dirs Tree View
Post by: lingo on June 19, 2011, 03:24:00 AM
More functionality and speed... :lol
Title: Re: Faster Dirs Tree View
Post by: lingo on July 31, 2011, 05:13:30 PM
Pls, test my new version with GUI.  :lol
How to test it:
I use for testing \Windows\winsxs folder from Windows Vista  64bit-SP2
with 61 797 Files and 16 203 Folders with very long names(Total 12.6 GB).
The same folders from Windows7 64bit-SP1 or from Windows XP 32bit –SP3  are not enough for testing:
just  42 831 files and 10 637 folders(Total 6.44GB) and
just 721 files and 144 folders(Total 153MB.)
So, you can make a new test folder and copy \Windows\winsxs folder many times
to have enough quantity for testing. :U
Note: Restart your computer before every test!!!

According my expectations Lingo is without competition again:
The time of my DT.exe is under 1 sec!!!  :lol
Other's results:
MS Windows7 64bit SP1- Explorer (see Pic1.)->11 sec
DirTree2 by Tedd (Replay #24) ->24 sec
WinExlorer.exe by Donkey ->38 sec

If you found something faster let me know... :wink
Happy testing!  :U

Title: Re: Faster Dirs Tree View
Post by: aker on August 01, 2011, 04:40:31 AM
How to refresh context?
Title: Re: Faster Dirs Tree View
Post by: hutch-- on August 01, 2011, 06:42:04 AM
Lingo,

This one IS fast !  :bg
Title: Re: Faster Dirs Tree View
Post by: lingo on August 01, 2011, 12:10:20 PM
"How to refresh context?"
Thanks. I will include it in todo list for next version.

Thank you, Hutch..  :toothy
Title: Re: Faster Dirs Tree View
Post by: dedndave on August 01, 2011, 02:03:20 PM
i have a number of drives with complex trees
it takes quite a while to start up
it is fast after that, though