"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.
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 ::)
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.
Sorry Lingo,
It won't even start here, instant GP fault. This is on my Xp SP3 box.
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.
My actual Drive C: root:
(http://img690.imageshack.us/img690/4412/dt3f.jpg)
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?
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
GlobalMemoryStatusEx
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.
"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
: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
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
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.
OS:6.1.7600.2.0.0.768.2
QuoteExceptionCode:c0000005
offset:0000142a
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?
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!
Make the xmm registers uppercase ie XMM1 I forget what is the reason
include \masm32\include\masm32rt.inc
.686 ; only Jwasm needs this one
.xmm
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?
.586
.xmm
.model flat,stdcall
option casemap:none
...
already have .586, .xmm
I havent checked instructions used but it may be that you are using 6.14 and dont have SSEx instructions?
Old problem - it's just case-sensitivity ::)
Simply place ".xmm" AFTER "option casemap:none"
great! :thumbu
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.
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
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
"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
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.
"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
Lingo,
This version seems to work properly on the range of drives I have tested it on and it is fast.
Thanks Hutch.. :P
"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!
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
that one works
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.
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
My improved version with the speed of lightning... :lol
More functionality and speed... :lol
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
How to refresh context?
Lingo,
This one IS fast ! :bg
"How to refresh context?"
Thanks. I will include it in todo list for next version.
Thank you, Hutch.. :toothy
i have a number of drives with complex trees
it takes quite a while to start up
it is fast after that, though