FILE_OBJECTID_INFORMATION結構 (ntifs.h)
FILE_OBJECTID_INFORMATION 結構可用來查詢NTFS磁碟區上目錄中檔案的物件標識碼資訊。
語法
typedef struct _FILE_OBJECTID_INFORMATION {
LONGLONG FileReference;
UCHAR ObjectId[16];
union {
struct {
UCHAR BirthVolumeId[16];
UCHAR BirthObjectId[16];
UCHAR DomainId[16];
} DUMMYSTRUCTNAME;
UCHAR ExtendedInfo[48];
} DUMMYUNIONNAME;
} FILE_OBJECTID_INFORMATION, *PFILE_OBJECTID_INFORMATION;
成員
FileReference
檔案的8位元組檔案參考編號。 NTFS 會產生這個數位,並在建立檔案時自動將它指派給檔案。
ObjectId[16]
檔案的16位元組檔案物件標識碼。 NTFS 會產生這個數位,並在驅動程式或應用程式的要求下將它指派給檔案。 檔案物件標識碼保證只在檔案所在的磁碟區內是唯一的。
DUMMYUNIONNAME
DUMMYUNIONNAME.DUMMYSTRUCTNAME
DUMMYUNIONNAME.DUMMYSTRUCTNAME.BirthVolumeId[16]
建立物件標識符時,檔案所在的磁碟區物件標識符,如果磁碟區當時沒有對象標識元,則為零。 複製作業、移動作業或其他檔案作業之後,BirthVolumeId 可能與物件目前所在的磁碟區物件識別碼不同。
DUMMYUNIONNAME.DUMMYSTRUCTNAME.BirthObjectId[16]
檔案建立時的物件標識碼。 複製作業之後,移動作業或其他檔案作業 BirthObjectId 可能與 ObjectId 成員的目前值不同。
DUMMYUNIONNAME.DUMMYSTRUCTNAME.DomainId[16]
保留;必須是零。
DUMMYUNIONNAME.ExtendedInfo[48]
使用者提供的數據。 您可以使用它來包含 BirthVolumeID、BirthObjectID和 DomainID 成員,也可以定義不同的數據結構。
言論
這項資訊可透過下列其中一種方式進行查詢:
呼叫
ZwQueryDirectoryFile ,將 FileObjectIdInformation 傳遞為fileInformationClass 的值,並傳遞呼叫端配置的、FILE_OBJECTID_INFORMATION 結構化緩衝區作為 fileInformation值。 使用主要函式程式代碼IRP_MJ_DIRECTORY_CONTROL和次要函式程式代碼IRP_MN_QUERY_DIRECTORY建立 IRP。
不需要特殊訪問許可權才能查詢這項資訊。
支援檔案參考編號和檔案物件識別碼是檔案系統特定的:
- 只有NTFS磁碟區才支援檔案物件標識碼。 NTFS 允許以物件標識碼和檔案參考編號開啟檔案。
- ReFS 不支援對象識別碼。 ReFS 使用 128 位檔案識別符,因此在處理依標識符開啟時,無法清楚區分檔案標識碼與對象識別碼。 (檔案標識符是NTFS上的64位,因此很容易與對象標識元區別。NTFS 也同時支援以128位標識符開啟:如果高64位為零,則會將低64位視為檔案識別碼;否則,128 位值會被視為物件標識符。
使用檔案物件識別碼的文件系統篩選驅動程式,應該測試與 DFS、複寫器服務和分散式連結追蹤服務之間的互操作性,所有這些驅動程式都會使用及操作檔案物件識別碼。
此結構必須對齊 LONG (4 位元組) 界限。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 2000 |
標頭 | ntifs.h (include Ntifs.h, Fltkernel.h) |