windows - 当应用程序崩溃时打开句柄会发生什么? (从 Windows XP 开始)

标签 windows vb6 handle

我的印象是,如果一个应用程序有一个打开的句柄并且它崩溃了,句柄不会被释放,如果您尝试访问该句柄(比方说一个文件),那么您将收到错误。

但是,我已经在 Windows XP 及更高版本中尝试过此操作,如果我从任务管理器中关闭 exe,则句柄似乎会在它关闭句柄之前释放。以下是代码:

Private Sub Form_Load()
    Dim iFile As Integer
    iFile = FreeFile          
    Open "myfilelock" For Output Lock Read Write As #iFile
    MsgBox "About to close" 'close it here with task manager

    Close #iFile

End Sub

那么,如果具有这些句柄的 exe 崩溃,Windows XP 是否会释放所有打开的句柄?

最佳答案

当应用程序崩溃时,所有版本的 Windows 都会关闭内核句柄。甚至 Windows 95 也这样做了。当然,任何基于 Windows NT 内核或更高版本的内核都会在应用程序崩溃时关闭内核句柄。

这包括文件、事件、信号量、共享内存、管道和套接字的句柄

关于windows - 当应用程序崩溃时打开句柄会发生什么? (从 Windows XP 开始),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2332928/

相关文章:

windows - 如何获取 NtQueryInformationProcess 所需的缓冲区大小?

ssl - 我如何在 Jmail 中发送 SSL 电子邮件?

windows - 两个窗口上的句柄可以相同吗?

matlab - 获取matlab中fit函数的函数句柄并分配fit参数

c++ - 关闭句柄/存储句柄

C++ select 停止接受连接

windows - 适用于 Windows 的命令行对话框工具

c - 文件部分用c发送

vb6通用对话框另存为,选择哪个文件扩展名

regex - VB6 正则表达式替换