2012-06-07 34 views
3

我有一個軟件正在使用捲過濾器驅動程序跟蹤Windows OS上的NTFS卷更改。當我的驅動程序安裝在操作系統之外時,我需要處理一個情況,當這個卷被安裝和修改時。確定NTFS卷是否安裝在外部

是否有可能找出卷的「最後安裝時間」?或任何其他參數,讓我告訴如果卷已安裝在我的驅動程序控制之外?

+0

你的意思是由Windows安裝,還是由任何工具(如Linux NTFS驅動程序)裝載? – Gabe

+0

任何工具,但如果你有Windows-only解決方案,我會感激它:) – Isso

+1

檢查USN如何? –

回答

2

我不知道「上次安裝時間」,但有一個「日誌文件打開計數」。如果你看一下http://www.opensource.apple.com/source/ntfs/ntfs-64/kext/ntfs_logfile.h,你會看到一個RESTART_AREA結構是這樣的:

/* 40*/ le32 restart_log_open_count;/* A counter that gets incremented every 
            time the logfile is restarted which happens 
            at mount time when the logfile is opened. 
            When creating set to a random value. Win2k 
            sets it to the low 32 bits of the current 
            system time in NTFS format (see time.h). */ 
/* 44*/ le32 reserved;  /* Reserved/alignment to 8-byte boundary. */ 
/* sizeof() = 48 (0x30) bytes */ 
} __attribute__((__packed__)) RESTART_AREA; 

你可以看到,靠近它的末端是restart_log_open_count,你可以用它來跟蹤坐騎。您會查看該值並將其與保存的值進行比較。它應該等於保存的值加1。如果是這樣,它從上次控制起就沒有掛上。

+0

非常感謝!只是創建了一個測試程序來檢查它 - 事實上,每次卷裝入時,值都會正確遞增。 – Isso