INVALID_HANDLE_VALUE定义为:#define INVALID_HANDLE_VALUE ((HANDLE)(LONG_PTR)-1) . 其实就是补码表示的-1解释为 无符号数,就是0xFFFFFFFF. 比如,CreateThread返回的无效HANDLE是NULL,而CreateFile则以INVALID_HANDLE_VALUE表示无效HANDLE.因此使用返回 HANDLE的API需查看MSDN以保证安全. 下面这篇文章分析了HANDLE...
一、INVALID_HANDLE_VALUE 1、源码 1//WinNT.h2typedefvoid*HANDLE;3//BaseTsd.h4typedef _W64longLONG_PTR, *PLONG_PTR;5//WinBase.h6#defineINVALID_HANDLE_VALUE ((HANDLE)(LONG_PTR)-1) 2、解析 (1)HANDLE 实际上是 void 指针类型,-1 经过(HANDLE)(LONG_PTR)之后,转成了 0xffffffff 。 (2)原因:...
在这段代码中,我们对函数 func 进行可重载,参数分别是 void* 类型和 int 类型,但是运行结果却与我们使用 NULL 的初衷是相违背的,因为我们本来是想用 NULL 来代替空指针,但是在将 NULL 输入到函数中时,它却选择了 int 形参这个函数版本,所以是有问题的,这就是用 NULL 代替空指针在 C++ 程序中的二义性。 ...
INVALID_HANDLE_VALUE表示无效的句柄值 在程序退出或关闭时,或者函数结束时 若前面得到了一个句柄,则应关闭掉 你给的程序段就是这个用途 先判断hDir句柄是否有效,若有效则进入函数,关闭句柄,然后置句柄为无效句柄值,否则不进入函数 类似于常用的指针 int *p = new int;if (p != NULL){ delet...
“invalidhandlevalue”的定义 在计算机科学中,“invalidhandlevalue”是一个用于表示无效句柄值的术语。句柄(handle)可以理解为操作系统为了标识和访问资源(如内存、文件、图形等)而分配给程序的一个唯一标识符。无效句柄值则是指一个不可用或已失效的句柄。 无效句柄值可能是由于以下原因造成的: 1.对象不存在:当程序...
总结起来,Invalid Handle Value是指在操作系统中使用句柄时,句柄的值无效或未初始化的情况。出现无效句柄值可能导致程序错误或异常。为了处理无效句柄值,程序需要检测和处理无效句柄值,并具备错误处理和异常捕获机制。此外,为了预防无效句柄值的出现,程序应该注意句柄的初始化和释放,并进行合法性检查。通过这些步骤,可以保...
HANDLE也是一个值 就是说INVALID_HANDLE_VALUE的值等效于(HANDLE)-1的值 HANDLE(句柄)是windows操作系统中的一个概念。指的是一个核心对象在某一个进程中的唯一索引,而不是指针。由于地址空间的限制,句柄所标识的内容对进程是不可见的,只能由操作系统通过进程句柄列表来进行维护。句柄列表: 每个进程...
error C2065: “INVALID_HANDLE_VALUE”: 未声明的标识符 error C2065: “fdata”: 未声明的标识符 error C2228: “.cFileName”的左边必须有类/结构/联合 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 查找了一下所对应的头文件为winbase.h,自然就添加上去了: ...
不过有少数函数在运行失败时返回的句柄值是-1 (INVALID_HANDLE_VALUE)。例如,如果CreateFile未能打开指定的文件,那么它将返回INVALID_HANDLE_VALUE ,而不是返回NULL 。当查看创建内核对象的函数返回值时,必须格外小心。特别要注意的是,只有当调用CreateFile函数时,才能将该值与INVALID_HANDLE_VALUE 进行比较 。下面的...
HANDLE:句柄,是Windows用来表示对象的(不是C++的对象),HWND是其中一种,HWND是HANDLE,但HANDLE不只是...