這個結構體有兩個成員在MSDN上的描述是:
idThread
Type: DWORD
A handle to the thread containing the filter function.
idThreadInstaller
Type: DWORD
A handle to the thread that installed the debugging filter function.
說它們是執行緒的句柄,可要是執行緒的句柄的話,為什么是DWORD,不是HANDLE?
根據型別DWORD,以及成員的名稱中帶有一個“id”,所以我覺得它們是執行緒的標識。
不知道哪個是正確的?
uj5u.com熱心網友回復:
變數命名每個人習慣不一樣, msdn也是人寫的, 應該以說明為準對于DWORD,HANDLE, 在內核來說都是一樣的東西, 很多系統底層的東西都是這樣
uj5u.com熱心網友回復:
你的意思應該認為是句柄?
按句柄的本質來看,應是8位元組的指標,而DWORD只有4位元組,怎么也不可能是句柄吧,既然是人寫的,我是認為他們寫錯了
uj5u.com熱心網友回復:
按句柄的本質來看,應是8位元組的指標這個理解明顯錯誤, 你可以嘗試CreateFile, OpenProcess,等打開一個句柄, 然后看這個實際值是多少
uj5u.com熱心網友回復:
句柄的本質就是指標啊,這是幾個頭檔案中對句柄的定義:
ntdef.h: typedef void *HANDLE;
ntdef.h: typedef PVOID HANDLE;
winnt.h: typedef void *HANDLE;
winnt.h: typedef PVOID HANDLE;
wtypesbase.h: typedef void *HANDLE;
你不能根據它值的大小來說事啊,你對變數取地址得到的值一般也不到4位元組上限,但顯然不能因為它的值總是在4位元組以內而拿4位元組整型來存盤吧?
uj5u.com熱心網友回復:
要學習內核知道,要學會用windbg,OD等除錯工具而不是強行理解,強行解釋。
uj5u.com熱心網友回復:
id 說明了就是執行緒ID句柄的話一般不會用指標型別, 盡可能兼容64位系統
uj5u.com熱心網友回復:
要學習內核知道,要學會用windbg,OD等除錯工具而不是強行理解,強行解釋。
您能給出解答嗎?
uj5u.com熱心網友回復:
id 說明了就是執行緒ID
句柄的話一般不會用指標型別, 盡可能兼容64位系統
這些頭檔案里句柄的原型不就是指標嗎?

如果是執行緒ID的話,那么就是MSDN的說明錯了,是吧?
uj5u.com熱心網友回復:
要學習內核知道,要學會用windbg,OD等除錯工具而不是強行理解,強行解釋。
您能給出解答嗎?
怎么還在這里如果呢,你弄個雙機除錯,去除錯一下,看看他指向的東西具體是句柄還是id。我給你解釋不了這個,我也沒用到這個結構。
uj5u.com熱心網友回復:
id 說明了就是執行緒ID
句柄的話一般不會用指標型別, 盡可能兼容64位系統
這些頭檔案里句柄的原型不就是指標嗎?
如果是執行緒ID的話,那么就是MSDN的說明錯了,是吧?
抱歉, 誤寫, 本來是想說句柄不會用DWORD,用指標,盡可能兼容64為系統
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/52100.html
標籤:C語言
