windows核心編程讀書筆記

來源:互聯網
上載者:User

1.

必須記住的是,核心對象的存在時間可以比建立該對象的進程長。

2.

核心對象能夠得到安全性描述元的保護。安全性描述元用於描述誰建立了該對象,誰能夠訪問或使用該對象,誰無權訪問該對象。安全性描述元通常在編寫 伺服器應用程式時使用,如果你編寫客戶機端的應用程式,那麼可以忽略核心對象的這個特性。

3.

HANDLE CreateThread(

   PSECURITY_ATTRIBUTES psa,

   DWORD dwStackSize,

   PTHREAD_START_ROUTINE pfnStartAddr,

   PVOID pvParam,

   DWORD dwCreationFlags,

   PDWORD pdwfhreadId);

 

HANDEE CreateFile(

   PCTSTR pszFileName,

   DWORD dwDesiredAccebS,

   DWORD dwShareMode,

   PSECURITY_ATTRIBUTES psa,

   DWORD dwCreationDistribution,

   DWORD dwFlagsAndAttnbutes,

   HANDEE hTemplateFile);

 

HANDLE CreateFileMapping(

   HANDLE hFile,

   PSECURITY_ATTRIBUTES psa,

   DWORD flProtect,

   DWORD dwMdximumSizcHigh,

   DWORD dwMaximumSizeLow,

   PCTSTR pszName);

 

HANDLE CreateSemaphore(

   PSECURITY_ATTRIBUTES psa,

   LONG lInitialCount,

   LONG lMaximumCount,

   PCTSTR pszName);

HANDLE CreateWaitableTimer(

   PSLCURITY_ATTRIBUTES psa,

   BOOL bManualReset,

   PCTSTR pszName);

 

HANDLE CreateJobObject(

   PSECURITY_ATTRIBUTES psa,

   PCTSTR pszName);

 

按名字共用對象的另一種方法是,進程不調用C r e a t e *函數,而是調用下面顯示的O p e n *函數中的某一個: 

HANDLE OpenMutex(

   DWORD dwDesiredAccess,

   BOOL bInheritHandle,

   PCTSTR pszName);

 

HANDLE OpenEvent(

   DWORD dwDesiredAccess,

   BOOL bInheritHandle,

   PCTSTR pszName);

 

HANDLE OpenSemaphore(

   DWORD dwDesiredAccess,

   BOOL bInheritHandle,

   PCTSTR pszName),

 

HANDLE OpenWaitableTimer(

   DWORD dwDesiredAccess,

   BOOL bInheritHandle,

   PCTSTR pszName);

 

HANDLE OpenFileMapping(

   DWORD dwDesiredAccess,

   BOOL bInheritHandle,

   PCTSTR pszName);

 

HANDLE Openjob0bject(

   DWORD dwDesiredAccess,

   BOOL bInheritHandle,

   PCTSTR pszName);

 

4.

如果調用一個函數以便建立核心對象,但是調用失敗了,那麼返回的控制代碼值通常是0(N U L L )。發生這種情況是因為系統的記憶體非常短缺,或者 遇到了安全方面的問題。不過有少數函數在運行失敗時返回的控制代碼值是-1 (I N VA L I D _ H A N D L E _ VA L U E )。例如,如果C r e a t e F i l e未能開啟指定的檔案,那麼它將返回I N VA L I D _ H A N D L E _ VA L U E ,而不是返回N U L L 。當查看建立核心對象的函數傳回值 時,必須格外小心。特別要注意的是,只有當調用C r e a t e F i l e 函數時,才能將該值與I N VA L I D _ H A N D L E _ VA L U E 進行比較 。

5.

無論怎樣建立核心對象,都要向系統指明將通過調用C l o s e H a n d l e 來結束對該對象的操作: 

 

BOOL CloseHandle(HANDLE hobj);

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.