如何解决可以在C中将HANDLE类型的变量与NULL比较吗?
可以在C中将声明为HANDLE
的变量与NULL
进行比较吗?谢谢。
版本:
例如:
HANDLE hProcess = NULL;
status = ZwOpenProcess(&hProcess,PROCESS_DUP_HANDLE,&ob,&Cid);
if (hProcess != NULL)
{
ZwClose(hProcess);
hProcess = NULL;
}
目标是检查hProcess
是否为!= 0
。然后,如果我正在检查!= NULL
,意味着同一件事吗?
解决方法
(评论太久了。)
目标是检查
hProcess
是否为!= 0
。
您可以使用if(hProcess != NULL) { /*...*/ }
进行确认,如其他答案所述。
但是,在给定的示例中,必须检查的是API调用的返回值。
HANDLE hProcess;
if(NT_SUCCESS(ZwOpenProcess(&hProcess,PROCESS_DUP_HANDLE,&ob,&Cid)))
{
/*... use hProcess ...*/
ZwClose(hProcess);
}
else
{
/*... handle error ...*/
}
,
任何指针类型都可以与NULL
进行比较。假设原始变量包含除该类型的空指针以外的任何值,结果将是虚假的(即,它将不相等)。
引用C11
,
[...]如果将空指针常量转换为指针类型,则保证生成的指针(称为空指针)与指向任何对象或函数的指针比较不相等。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。