> Win32 only SAYS that this IO must be sector aligned.
> If the official documentation says so - then it is so.
That documentation is wrong.
> No, you’re just using the feauture which is unsupported and undocumented
and works by mere luck.
I understand what you are saying, but I disagree.
While I agree that I am using an undocumented and possibly unsupported
feature, it may or may not be mere luck that it works.
To suggest either is speculation. Unless you have some sort of proof.
We have 5 or 6 years of experience with this particular unsupported feature,
and it has worked in at least five completely different versions of Windows
OSes. The probability that it will continue to work thus seems pretty high.
It also works like this on the Mac. While that doesn’t really predict
anything about the next version of Windows, regarding whether or not this
undocumented behavior will continue, it does tend to insinuate that there is
no known hardware limitation that prohibits this from being possible.
Obviously, as it does work.
To then begin to guess as to whether or not this particular behavior will be
carried forward, we would need to understand why this limitation was made in
the first place. As I said, I do not suspect any hardware limitation being
the reason (with the exception being byte aligned IDE IO, which is my
concern). In Win95, the docs said the IO must be sector aligned, but instead
it needed to be page aligned. Why ? Because they used the page faulting
code to perform this disk IO. This was the reason; to reuse code that was
already there, due to tight product schedules (admittedly, this is
speculation, but seems to be true).
In all other Windows versions I have tested, there is no limitation, contrary
to the API docs. So the question then is why did they make that restriction
? For what purpose ? It could be due to a real issue, such as the page
alignment in Win95. Or it could be due to some perceived performance issue
(which I likewise have not found in my experience with this). Or it could be
due to ‘programmer paranoia’, or defensive programming (maybe they thought
some controllers could not perform IO to any arbitrary memory address).
Likewise, short of the IDE controllers, we have seen no examples of this. Or
maybe it was just a mistake. We simply don’t know why this restriction was
placed in the API docs. In order to truly know whether or not this behavior
will be ongoing, this is the question we need to answer. However, since we
have so far seen absolutely ZERO purpose for this, zero instances of failure,
in all of the systems we have run on in the last 6 years, I suggest that the
chances are very high that this will never change.
You are currently subscribed to ntfsd as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntfsd-$subst(‘Recip.MemberIDChar’)@lists.osr.com