RE: [ntfsd] file id and object idOnce, I did this:
Uppercased the canonical name to the file
(\device\harddiskx\partitiony\path\file.ext:stream) and did a 64 bit CRC on
the filename. This worked quite well to create a unique ID for a file and it
was system, not volume, limited.
I am sure ther are more elegant mechanisms, but I neede a quick and dirty
way to get a unique ID for a file and it had to work with SFM files; which
use streams.
Jamey
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com]On Behalf Of Tamblin, Nathan
Sent: Monday, May 08, 2000 12:56 AM
To: File Systems Developers
Subject: [ntfsd] RE: file id and object id
The ID on FAT is not unique. Start with a freshly formatted FAT volume,
then create 2 directories in the root directory (TEST1 and TEST2). Create
another directory(Dir0) in the TEST2 directory. In the TEST1 directory,
create directories until the IDs of the directory created matches that of
Dir0. This was Dir32 on my server.
Here’s the batch file I used to reproduce this.
mkdir TEST1
mkdir TEST2
mkdir TEST2\Dir0
for /L %%i in (0,1,32) DO mkdir TEST1\Dir%%i
TEST2\Dir0 and TEST1\Dir32 bot had file IDs of 0x0000000000036a60.
This can also be done with files instead of directories.
Having unique file/dir IDs is very useful to a file system filter. Is
there any chance of fixing this in a service pack? This problem has been
around since NT 3.5 and is still present on Windows 2000 build 2195.
Nathan Tamblin
-----Original Message-----
From: Neal Christiansen [mailto:xxxxx@Exchange.Microsoft.com]
Sent: 21 April 2000 23:27
To: File Systems Developers
Subject: [ntfsd] RE: file id and object id
Thank you Dan. I should have been clearer that I was talking about
NTFS.
It is also important to note that ObjectID’s are only supported on NTFS
volumes.
-----Original Message-----
From: Daniel Lovinger
Sent: Friday, April 21, 2000 3:08 PM
To: File Systems Developers
Subject: [ntfsd] RE: file id and object id
This definition of file id is peculiar to NTFS. FAT, CDFS and UDFS
each indivdually mangle up an ID from the unique information they can derive
for a file like byte offset of their directory relative to byte zero of the
disk (FAT/CDFS), location of a direct entry (UDFS), etc.
In particular, you should never expect the fileid to have a particular
meaning. It is, however, as Neal points out, roughly guaranteed that a
fileid will not be recycled on NTFS. FAT does not and cannot make a similar
guarantee: the ID is unique to a given snapshot of the volume state, though
obviously we don’t shuffle dirents and it does tend to remain the same.
-----Original Message-----
From: Neal Christiansen
Sent: Friday, April 21, 2000 3:00 PM
To: File Systems Developers
Subject: [ntfsd] RE: file id and object id
The FileID is a 64bit number composed of two parts, A 48bit index
into the MFT and a 16bit sequence number. The sequence number is
incremented when an MFT entry is reused. The sequence number guarantees
that someone with an old ID will not accidentally access the wrong file
because the old file was deleted and a new file was created in its place.
A FileId can be obtained by calling ZwQueryInformationFile using the
FileInternalInformation information class. This is documented in the
ntifskit in ntifs.h.
An ObjectID is a GUID (a globally unique 128bit number) that can be
assigned to a file. NTFS maintains a per-volume database of all objectIDs
and their associated files.
The reason ObjectID’s were added to Windows 2000 was to support the
notion of a unique ID that will never change for a given file no matter what
volume/system it is moved to in the world. The existing fileID could not be
used because it is related to the internal structure of the file system and
changes as a file is copied.
An example of objectID usage is the new link tracking service in
Windows 2000. I am sure you have had the problem where you created a
shortcut on your desktop to some program or document. You later do
something that moves the location of that program/document. You now click
on your shortcut and receive an error because the program/document no longer
exists at the path defined in the shortcut.
In Windows 2000 if the shortcut has an objectID associated with it,
it can query the link tracking service passing the given objectID. Since
the objectID is globally unique, the link tracking service can locate this
exact program/document across a group of system.
The ObjectID FSCTL commands are documented in MSDN.
I hope this helps,
Neal Christiansen
-----Original Message-----
From: ssreejit@in.ibm.com [mailto:ssreejit@in.ibm.com]
Sent: Wednesday, April 19, 2000 5:08 AM
To: File Systems Developers
Subject: [ntfsd] file id and object id
Hi,
Could some body explain me the difference between file id and
object
id. Also how to get a fileid of a file and open with it from kernel
mode
and user mode???
Regards,
Sreejith S R
IBM Global Services Pvt. Ltd.
Golden Enclave, Airport Road,
Bangalore -17
Phone : 91-80-526 2355/7117 ext: 3024
Fax : 91-80-527 7374
You are currently subscribed to ntfsd as:
xxxxx@Exchange.Microsoft.com
To unsubscribe send a blank email to $subst(‘Email.Unsub’)