判断句柄是否有效

句柄相当于一个指向指针的指针,指向指针的指针同样是指针,所以暂且认为它是一个指针,那么CreateFile相当于new 分配一个资源,让这个指针指到这块资源的首地址,那么当CloseHandle(handle)后等于是delete操作。此时handle的值还在,但是资源已被释放掉,那这个时候如果去访问这个句柄,就等于访问一个非法的内存资源。那么现在回到这个问题,如何判断句柄是否有效,就好比是回答如何判断指针是否有效。大家知道指针就是地址,如何判断地址是否有效呢?那就是判断这块地址上是否有有效数据了?那如何判断这个地址上有有效数据呢?微软提供了API,讲到这里问题基本就迎刃而解,希望楼主给分给我啊。答案另起一行 

答案: 
Tests a memory address to make sure it represents a currently active memory block that was allocated by the diagnostic version of new. 

BOOL AfxIsMemoryBlock( 
  const void* p, 
  UINT nBytes, 
  LONG* plRequestNumber = NULL 
); 

或者: 
Tests any memory address to ensure that it is contained entirely within the program's memory space. 

BOOL AfxIsValidAddress( 
  const void* lp, 
  UINT nBytes, 
  BOOL bReadWrite = TRUE 
); 

时间: 2024-09-20 16:04:17

判断句柄是否有效的相关文章

Selenium2+python自动化13-多窗口、句柄(handle)

前言    有些页面的链接打开后,会重新打开一个窗口,对于这种情况,想在新页面上操作,就得先切换窗口了.获取窗口的唯一标识用句柄表示,所以只需要切换句柄,我们就能在多个页面上灵活自如的操作了. 一.认识多窗口 1.打开赶集网:http://bj.ganji.com/,点击招聘求职按钮会发现右边多了一个窗口标签 2.我们用代码去执行点击的时候,发现界面上出现两个窗口,如下图这种情况就是多窗口了. 3.到这里估计有小伙伴纳闷了,手工点击是2个标签,怎么脚本点击就变成2个窗口了,这个在2.1里面讲过,

java对RTTI的需要

请考虑下面这个熟悉的类结构例子,它利用了多形性.常规类型是Shape类,而特别衍生出来的类型是Circle,Square和Triangle. 这是一个典型的类结构示意图,基础类位于顶部,衍生类向下延展.面向对象编程的基本目标是用大量代码控制基础类型(这里是Shape)的句柄,所以假如决定添加一个新类(比如Rhomboid,从Shape衍生),从而对程序进行扩展,那么不会影响到原来的代码.在这个例子中,Shape接口中的动态绑定方法是draw(),所以客户程序员要做的是通过一个普通Shape句柄调

Shell脚本实现Linux系统和进程资源监控

 这篇文章主要介绍了Shell脚本实现Linux系统和进程资源监控,本文讲解了检查进程是否存在.检测进程 CPU 利用率.检测进程内存使用量.检测进程句柄使用量.,需要的朋友可以参考下     在服务器运维过程中,经常需要对服务器的各种资源进行监控,例如:CPU的负载监控,磁盘的使用率监控,进程数目监控等等,以在系统出现异常时及时报警,通知系统管理员.本文介绍在Linux系统下几种常见的监控需求及其shell脚本的编写. 文章目录: 1.Linux使用 Shell 检查进程是否存在 2.Linu

Shell脚本实现Linux系统和进程资源监控_基础知识

在服务器运维过程中,经常需要对服务器的各种资源进行监控,例如:CPU的负载监控,磁盘的使用率监控,进程数目监控等等,以在系统出现异常时及时报警,通知系统管理员.本文介绍在Linux系统下几种常见的监控需求及其shell脚本的编写. 文章目录: 1.Linux使用 Shell 检查进程是否存在 2.Linux使用 Shell检测进程 CPU 利用率 3.Linux使用 Shell检测进程内存使用量 4.Linux使用 Shell检测进程句柄使用量 5.Linux使用 Shell查看某个 TCP 或

MySQL的线程池原理学习教程_Mysql

线程池是Mysql5.6的一个核心功能,对于服务器应用而言,无论是web应用服务还是DB服务,高并发请求始终是一个绕不开的话题.当有大量请求并发访问时,一定伴随着资源的不断创建和释放,导致资源利用率低,降低了服务质量.线程池是一种通用的技术,通过预先创建一定数量的线程,当有请求达到时,线程池分配一个线程提供服务,请求结束后,该线程又去服务其他请求. 通过这种方式,避免了线程和内存对象的频繁创建和释放,降低了服务端的并发度,减少了上下文切换和资源的竞争,提高资源利用效率.所有服务的线程池本质都是位

关于9行代码导致系统崩溃的分析整理_漏洞研究

目前很多地方都转载着利用9行代码史windows崩溃的文章,不过我发现没有关于为什么会使windows崩溃的分析.我先把原文给大家看看.然后把具体的细节说一下.   微软一直声称Windows XP多么多么稳定可靠,但日前一位名为Masaru Tsuchiyama的外国编程爱好者刊出了一小段C语言代码.这一只有9行的小程序如果在Windows XP/2000下运行,则可导致系统完全崩溃,并重新启动.但此程序对其他版本的Windows没有任何影响.这一产生无限循环输出的小程序的代码如下:   #i

求教MouseDown与MouseClick

问题描述 近日在制作一个控件,功能是点击弹出一个带列表的小框框,然后在小框框内进行选择.本来事件的触发一直都在MouseDown内,现在因为需要改到MouseClick里面.所有都不变,改完后,小框框弹出正常,但是无法在小框框内进行选择.小框框内的选择部分有个PreFilterMessage函数,过滤鼠标消息.单击小框框后,两种方法都会进入到该函数进行消息过滤,但是MouseDown在消息过滤后,调用了小框框自身的MouseDown事件,而在MouseClick内触发则调用了控件本身的Mouse

MFC 颜色对话框 字体对话框 WM_CTLCOLOR消息总结

      1.     颜色对话框         CHOOSECOLOR  结构体来设置获取颜色对话框的相关信息      成员变量m_cc     m_cc.rgbResult  在IDOK之后保存的是选择的颜色RGB值            COLORREF choose_color;     CColorDialog  dlg;  //创建颜色对话框     dlg.m_cc.Flags|=CC_RGBINIT ;//以用户选择的颜色进行初始化颜色打开对话框    dlg.m_cc.F

MFC SDI单文档 状态栏 进度条 启动画面编程技巧 ...

      状态栏的编程离不开  CStatusBar类     CProgressCtrl  进 度条相关的控件      下面我们介绍状态栏 编程技巧  以及在状态栏添加进度条   应用程序的启动界面    状态栏的添加步骤     SDI 单文档中      下面是MFC给的 状态栏的创建步骤      Construct the CStatusBar object.    构造一个 CStatusBar对象    Call the Create (or CreateEx) functio