windows的核心物件所擁有者是作業系統,而非程序。程序被銷毀的時候,核心物件不一定會銷毀。所以核心物件的生命週期可能長於建立它的那個程序。
作業系統核心知道當前有多少個程序正在使用乙個特定的核心物件,因為每個物件都包含乙個使用計數。使用計數是所有核心物件型別都有的乙個資料成員。
這個還挺重要的,看到後面很多函式都需要這個資料結構的介面。
核心物件可以用乙個安全喵師傅(sid)來保護。
安全描述符描述了誰擁有對;哪些組合使用者被允許訪問或使用此物件;哪些組合使用者被拒絕訪問此物件。其通常在編寫伺服器應用程式的時候使用。
建立核心物件的所有函式幾乎都有執行乙個security_attributes結構的指標作為引數,例如:
handle hfile,
psecurity_attributes psa,
dword flprotect,
dword dwmaximumsizehigh,
dword dwmaximumsizelow,
pctstr pszname);
大多數應用程式把這個sid的引數設為null,這樣核心物件就是預設的安全性,具體包括哪些安全性,要取決於程序的安全令牌(講程序的時候,這個把我講得很蒙蔽,其實就是許可權的限制)
sid資料結構如下
typedef struct_security_attributes security_attributes;
如果想訪問乙個現有的核心物件,就必須制定打算對此物件執行哪些操作,例如訪問乙個檔案對映核心物件
dword dwflag,//訪問的許可權
binherithandle long,
//如這個函式返回的控制代碼能由當前程序啟動的新程序繼承,則這個引數為true。
lpname string//指定要開啟的檔案對映物件名稱。
該函式會返回乙個有效控制代碼值,但如果被拒接訪問就會返回null(可以通過getlasterror來獲取錯誤原因)
假如乙個應用程式在啟動時要從乙個登錄檔子項中讀取一些資料。正確做法是呼叫regopenkeyex,向其傳入key_query_value,從而制定查詢子項資料的許可權(盡量不要用key_all_access)
那麼我們如何判斷乙個物件是否為核心物件呢?
可以通過檢視建立該物件的函式,是否有限定安全的函式,畢竟是核心物件嘛
Window核心物件
windows的核心物件大致有以下幾種 1.訪問令牌 access token 物件 2.事件物件 3.檔案物件 4.檔案對映物件 5.i o埠物件 6.作業物件 7.郵件槽 mailslot 物件 8.互斥量 mutex 物件 9.管道 pipe 物件 10.程序物件 11.訊號量 semapho...
window與document物件的學習
window物件 1.視窗操作 moveby dx,dy 相對現在的位置移動水平和垂直移動?畫素。moveto x,y 絕對移動,對於頻幕左上角移動的位置。resizeby dw,dh 現在視窗大小,增加或者減少?個畫素。resizeto w,h 固定調整,把瀏覽器寬,高調整為w,h。不能為負數。基...
Window物件方法
window 物件表示瀏覽器中開啟的視窗。注意 要使用 cleartimeout 方法,在建立執行定時操作時要使用全域性變數。該方法的引數必須是由 settimeout 返回的 id 值。注意 setinterval 方法會不停地呼叫函式,直到 clearinterval 被呼叫或視窗被關閉。由該方...