> party drivers, multiple threads etc]. But currently my client has
some budget constraints and he wants me to support few editors.
No no no no. A file system either works for all scenarios
or it does not work. There is no “support just for few editors”.
You need to support ALL. No discussions about it.
Trying otherwise is asking for troubles, BSOD is the
“better” troubles, and data corruption is the “worse” troubles.
The thing you need to understand that a file system serves
to all file access - editors, Windows explorer, file copying,
file properties, backup, view with F3 in Total Commander, …
And BTW, everyone in this forum can confirm you that what
you are doing, at beginner’s experience level, is a task
for about 2 years. So maybe just tell your client it’s
impossible, than promising something you can’t finish.
There are lots of managers who think you will just “write some
code” or “add a few lines to a WDK example” and it will work.
They are wrong.
I am also reading a book by mark russinovich
http://book.itzero.com. Could you please give me some clue as to
what I should start looking at so that I can insert header
I have already answered you. Here’s copy of the answer:
*************************************************************
The problem is there is no publicly available relevant
information about that. Not that I know of. Completing this task
if very difficult and everyone who did it keeps the know-how
for himself.
*************************************************************
L.
Hello Ladislav,
Yes I agree with you on the whole.
Well, I have to start somewhere and put myself a simple goal first. I am sure I will need help on this and I hope to get it here only as there is no other place.
I hope to start with the memory mapped sample that I have written and try to insert a header in the file created by it while reading the said books. Is that the way I should go?
Thanks,
Trav
If you have written a memory mapped sample then you are on your way. If you have been working for more than 6 months my advice will be funny to you. But still - have you have read the Windows Filesystem Internals? I think it is a must for a beginner. Also I consider everyone should read all documents at- What Every Driver Writer Needs to Know
http://www.microsoft.com/whdc/driver/kernel/default.mspx
Personally I found looking at some code does a little good. It was better for me when I started to write a drive from the DriverEntry. Support basic faile system structure first, then read / write and then fast IO. The sample driver skeleton of Negars book contains a lot of comments. That may also help. Oh, I have also followed the beginners driver article found at codeproject.com. The more I read, the more I found new things. Even when I read same article after a month I find a lot of new things. I have started to read articles from OSR online starting from
http://www.osronline.com/article.cfm?article=20
and increasing the number ( 21, 22, 23 etc…)when one is finished :D.
I did not find any better way- I can not attend OSR seminars. If you find I’ll be very happy to know. that.
Hi Maruf,
Thanks for your good advice. Yes I am reading the osr articles and fsd books and msdn and ifs kit documentation. Lets see how it comes by.
Meanwhile I have written a mini-filter that can trap all the requests for the files i am interested in. i have been able to implement read in correct way for several editors like notepad, wordpad, msword etc and with the file having an header of one page size [but I still have a lot to learn. Try cases in the filetest tool].
I am still looking at the sample that I had written and there are somethings that i do not understand as of yet. for e.g. in most of the articles it is said that paging i/o never extends the file size.
But consider this scenario that occurs in my test application. 1. Create file (size 0) 2. Create file mapping providing size as (10) i can see a paging set information with advance flag set to 0 and with top level irp as 1 and it seems to change the file size.
The ifs documentation says below:
AdvanceOnly
Specifies conditions for setting each information value. If TRUE, each information value is to be set only if it is greater than the current value. If FALSE, each information value should be set only if it is less than the current value. ??
Trav