Windows核心編程之3 核心對象

來源:互聯網
上載者:User

3 核心對象

3.1

哪些是Windows的核心對象

比如:令牌對象,事件對象,檔案對象,目錄對象,檔案對應物件,IO完成連接埠,互斥量,線程對象,進程對象,作業,管道,等等。

核心對象有作業系統管理,返回HANDLE  它是指標,指向一個由作業系統管理的核心對象表.

3.1.1 使用計數

作業系統知道核心對象的使用計數,當計數為0,由作業系統負責銷毀核心對象.

3.1.2 核心對象的安全性

SECURITY_ATTRIBUTES 結構體來描述

3.2 進程核心物件控點表

 

3.2.1 建立核心對象 
建立一個核心對象,它是與進程相關的,就是說只能在建立的那個進程使用,其他進程不知道這個核心對象.

3.2.2 關閉核心對象

Closehandle 函數來關閉核心對象. 不關閉核心對象,會造成資源流失。但是進程退出時,進程的所有資源都被作業系統收回。

3.3 跨進程邊界共用核心對象

有三種不同的機制來允許進程共用核心對象:

1 使用物件控點繼承

2 為對象命名

3 複製對象

3.3.1 使用物件控點繼承

只有進程之間有父子關係時才可以使用物件控點繼承。

安全描述的結構體需要把繼承的標誌位置為true

然後通過CreateProcess完成

3.3.2 改變控制代碼的標誌

SetHandleInformation來改變核心對象的繼承控制代碼

GetHandleInformation來得到核心對象的是否繼承

 

3.3.3 為核心對象命名

HANDLE CreateMutex(

PSECURITY_ATTRIBUTES psa,

BOOL bInitialOwner,

PCTSTR pszName);

最後一個接收“以0為終止符的字串”所以的核心對象都使用一個名字空間,如果重名的話,核心對象建立失敗.

如果有一個同名的核心對象,那麼CreateXX函數返回 ERROR_INVALID_HANDLE

getlastError 返回ERROR_ALREADY_EXISTS 表示存在.

可以使用OpenXX來開啟一個核心對象

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.