初识内核对象

来源:互联网 发布:微商加粉软件免费下载 编辑:程序博客网 时间:2024/05/20 23:58

最近看多线程同步时,谈到了事件对象、互斥对象、信号量对象是内核对象,而关键代码段对象不是内核对象,于是探究了下内核对象。

(1)内核对象概念

内核对象是内核分配的内存块,且只能由内核访问。(内核对象的内存块是一种数据结构,数据结构各种成员维护该内核对象)

(2)内核对象只能被内核访问,所以应用程序无法在内存中找到这些数据结构,并修改它们的内容。

(3)内核对象创建

调用创建内核对象的函数,该函数会返回一个内核对象的句柄。

(4)如何判断一个对象是否是内核对象

通过创建内核对象的函数判断,如果是内核对象,其创建函数中通常有安全属性。

  !!除了内核对象外,你的应用程序也可以使用其他类型的对象,如菜单、窗口、鼠标光标、刷子和字体等。这些对象属于用户对象图形设备接口(GDI)对象,而不是内核对象。


常用的创建内核对象的函数:

HANDLE WINAPI CreateThread(  LPSECURITY_ATTRIBUTESlpThreadAttributes,  SIZE_TdwStackSize,  LPTHREAD_START_ROUTINElpStartAddress,  LPVOIDlpParameter,  DWORDdwCreationFlags,  LPDWORDlpThreadId);
HANDLE CreateSemaphore(  LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,  LONG lInitialCount,  LONG lMaximumCount,  LPCTSTR lpName);
HANDLE CreateMutex(  LPSECURITY_ATTRIBUTESlpMutexAttributes,  BOOLbInitialOwner,       LPCTSTRlpName);
HANDLE CreateEvent( LPSECURITY_ATTRIBUTESlpEventAttributes, BOOLbManualReset, BOOLbInitialState, LPCTSTRlpName);





0 0
原创粉丝点击