微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

可以在C中将HANDLE类型的变量与NULL比较吗?

如何解决可以在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 举报,一经查实,本站将立刻删除。