Ladislav,
I can answer at least part of your question. Refer to KB Article #
817921 (http://support.microsoft.com/default.aspx?scid=kb;en-us;817921 )
. It documents a change in the semantics of Windows XP and Windows
Server 2003 relating to case sensitivity.
Specifically it says:
By default, the Windows XP subsystems other than the Win32 subsystem are
case-preserving but not case-sensitive. However, by default, in earlier
versions of Windows the subsystems other than the Win32 subsystem are
case-sensitive.
And then notes:
To change the behavior of Windows XP after you install Windows Services
for Unix or when you use Interix 2.2, you must add the following
registry key, and then restart the computer:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session
Manager\Kernel
Value Name: ObCaseInsensitive
Data Type: REG_DWORD
Value Data: 0 (Case sensitive)
While the KB article talks about Services for Unix and Interix, this
change appears to apply universally to calls via the native API. Thus,
this is exactly what you said: the object manager does not pass in the
case sensitivity information to the file systems.
I hope this helps.
Regards,
Tony
Tony Mason
Consulting Partner
OSR Open Systems Resources, Inc.
http://www.osr.com
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Ladislav Zezula
Sent: Tuesday, May 10, 2005 7:40 AM
To: ntfsd redirect
Subject: Re: [ntfsd] Missing alternate file name in NTFS ?
Very strange. The 8.3 Cyrillic name must be present,
and must be in OEM
Yes, indeed. But in this case, it isn’t.
Even NtQueryInformationFile(FilerAlternateFileNameInfo)
returns STATUS_OBJECT_NAME_NOT_FOUND (!).
BTW, the phenomenon does not depend on the
Azbuka name (it was the first conclusion). It just occurs
if the name is too long to be a DOS compatible name.
And Lyndon and Max were right, the short name must not be here
if the long name is compatible with DOS (Ntfs calls the function
NtfsIsFatNameValid for this).
The approach that Tony suggested worked - somewhere deep inside
NTFS.sys is the call of RtlGenerate8dot3Name, called
in this sequence (In the case of IRP_MJ_CREATE):
RtlGenerate8dot3Name
NtfsAddDosOnlyName
NtfsAddLink
NtfsFsdCreate
Well, I don’t want to bother you with all details, but it seems that
NTFS does not create the short file name if the file create
has been requested case sensitive. However, it seems that this
condition cannot be reached from user mode, because
even if I call NtCreateFile with OBJ_CASE_INSENSITIVE
NOT set, the file object and the stack location does not have the flag
when the IRP_MJ_CREATE arrives to my filter (not sure yet about it,
I’ll continue the analysis). It seems to me that Object manager does not
pass the case insensitivity to FSD filters and drivers.
Because the file created by my filter is created using rolling
my own IRP, the request does not pass the Object Manager.
I really wondered if this is a bug in NTFS or Object Manager
or just a feature.
L.
Questions? First check the IFS FAQ at
https://www.osronline.com/article.cfm?id=17
You are currently subscribed to ntfsd as: xxxxx@osr.com
To unsubscribe send a blank email to xxxxx@lists.osr.com