2012-12-10 34 views
1

說,我做了如何讓W32處理訪問?

HANDLE h = CreateFileA ("foobar", GENERIC_READ | GENERIC_WRITE, 0, NULL, 
    OPEN_ALWAYS, 0, NULL); 

現在處理h已GENERIC_READ | GENERIC_WRITE訪問(如果調用成功)。

問題:我應該調用h以取回它的訪問模式(即GENERIC_READ | GENERIC_WRITE)是什麼功能?

GetStdHandle (STD_INPUT_HANDLE)回報一些句柄莫名其妙結束了是你的標準輸入。你不知道它是一個文件,一個管道還是別的東西(有辦法獲得句柄類型,但這不是重點)。它可能有任何訪問權限(CreateProcess不檢查您在STARTUPINFO中提供的句柄)。有沒有辦法獲得它的訪問掩碼(除了嘗試適當的調用)?

回答

1

致電NtQueryObject通過ObjectBasicInformation

+0

作品!有趣的事實:根據NtQueryObject給我的值,W32(NT 6.1.7601)總是會給你FILE_READ_ATTRIBUTES | SYNCHRONIZE是否你要求。至少,當你打開一個正常的文件。 – LRN