windows核心编程读书笔记

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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值