为什么我们不需要关闭ShellExecute返回的句柄?

use*_*472 5 winapi shellexecute

成功时,ShellExecute返回一个句柄.

我们需要关闭这个句柄,如果是这样,怎么样?

根据已公布的我微软的例子,我们需要关闭该句柄.但ShellExecute本身的文档在这个主题上是静音的.你能否证实我们确实不需要关闭这个手柄?

但是,一个句柄如何有效并且不需要被关闭?以下哪个陈述是真实的:

  1. 句柄无效,我们无法做任何事情;
  2. 句柄永远不会被释放,并且(微软赞助的)内存泄漏(直到调用者程序结束);
  3. 系统会在某个时间自动释放句柄,之后再也不会重复使用( - >其他类型的资源泄漏).只有在尝试使用它时,我们才能知道它是否仍然指向某种东西.
  4. 还有什么 ?

And*_*ers 5

提示是16位的东西,在win32中,成功仅是一个数字> 32,并且不能用作函数失败时的错误代码。另一方面,如果将SEE_MASK_NOCLOSEPROCESS传递给Ex版本,则需要关闭手柄。