對於目錄,我無法使用GetFileTime和SetFileTime 。具體而言,我認爲我的問題是 ,我是WinAPI的新手,我不認爲我正確獲得了 HANDLE。CreateFile GetFileTIme SetFileTime
有兩種情況。
在第一個,我只需要一個句柄來獲取文件或目錄 時間戳(創建,訪問,mod)。我想以安全和靈活的方式製作這個手柄。 不想在參數上過於慷慨。
在第二個,我需要一個句柄,將允許我修改文件或direcotry 時間戳。我也想用最小的權限創建這個句柄,但是靈活可靠。
通過靈活我的意思是,在這兩種情況下,我需要代碼在本地,網絡共享和多線程應用程序中工作。多線程部分不是必需的,因爲我的應用程序不會在文件/目錄上創建多個句柄,但可能會在後臺運行一些其他應用程序。
//QUESTION 1:
//I do this when I just need a handle to **GET** some attributes like dates.
//(here I just need a handle to get info I am not modding the item).
//Am I using the correct params if I need it to work in a
//local + networked environment and also in a multi-threaded app???
h1 = CreateFile(itemA, GENERIC_READ, FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0);
if (h1 == INVALID_HANDLE_VALUE){
return 0;
}
//QUESTION 2:
//The above works for local files but not local dirs.
//How can I get the above to work for dirs? (Same environment considerations).
//QUESTION 3:
//I do this when I just need a handle to ***SET*** some attributes (like timestamps).
//(here I need a handle that allows me to modd the items timestamp).
//Am I using the correct params if I need it to work in a
//local + networked environment and also in a multi-threaded app???
hItemB = CreateFile(itemB, FILE_WRITE_ATTRIBUTES, FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0);
if (hItemB == INVALID_HANDLE_VALUE){
return 0;
}
//QUESTION 4:
//The above works for local files but not local dirs.
//How can I get the above to work for dirs? (Same environment considerations).
謝謝Joel,FILE_FLAG_BACKUP_SEMANTICS工作。我很難在MS文檔中破譯FILE_FLAG_BACKUP_SEMANTICS的含義。這究竟是什麼?希望有人也可以批評我使用的其他旗幟。我還應該注意到ACCESS時間戳與上面的代碼有些差別。它似乎沒有可靠地設置。 – user440297 2011-02-15 15:32:34