首页 > 代码库 > 句柄的简单概念

句柄的简单概念

1.  句柄概念

      句柄是Windows程序中的概念,本质是一个4字节(64位程序中为8字节)整数值,用来标示不同实例。

      由于数据在内存地址中是变动的,为管理内存,windows引入句柄概念。

 

2.  句柄与普通指针

     指针包含的是引用对象的内存地址,而句柄则是由系统所管理的引用标识,该标识可以被系统重新定位到一个内存地址上。

 

3.  句柄的使用

     一个句柄,只有确定了一个项目的时候,才开始有意义。句柄对应着项目表中的一项,只有WINDOWS本身才能直接存取这个表,应用程序只能通过API函数来处理不同的句柄。
 
      举例如下:
      /*通过调用API函数GlobalAlloc,来返回一个句柄值。现在的hMem是个索引值不是物理地址,应用程序还不能直接存取这块内存*/
          HANDLE hMem=GlobalAlloc(......);      
     
    /*应用程序需要调用API函数GlobalLock函数来锁定句柄,才能存取这块内存*/
          void* lpMem=GlobalLock(hMem);             
 
 
4. 与句柄使用相关的全局内存操作函数
     
    /*分配内存*/  
     GlobalAlloc();    
 
    /*锁定内存*/                                 
   GlobalLock();    
   
  /*解锁内存*/       
   GlobalUnlock();  
 
  /*释放内存*/             
   GlobalFree();