closeHandle()多次关闭同一个句柄会导致程序奔溃

xiaoxiao2021-02-28  72

自己写了一个升级小工具,在程序结束打算关闭时,竟然奔溃了,最后定位到了

wrHandle =devhandle;

rdHandle = devhandle;

if(wrHandle != INVALID_HANDLE_VALUE){ CloseHandle(wrHandle); wrHandle = INVALID_HANDLE_VALUE;}if(rdHandle != INVALID_HANDLE_VALUE){  CloseHandle(rdHandle); rdHandle = INVALID_HANDLE_VALUE;  }

因为他们的句柄值相等,所以在关闭时,进行了多次关闭,导致程序奔溃,修改如下:

if (wrHandle == rdHandle) { CloseHandle(wrHandle); wrHandle = INVALID_HANDLE_VALUE; rdHandle = INVALID_HANDLE_VALUE; }else{  if(wrHandle != INVALID_HANDLE_VALUE) { CloseHandle(wrHandle); wrHandle = INVALID_HANDLE_VALUE; } if(rdHandle != INVALID_HANDLE_VALUE) CloseHandle(rdHandle); rdHandle = INVALID_HANDLE_VALUE;   }

}

然后程序就ok,再也不会在程序关闭时中断于此了。

参考资料:

1.  

转载请注明原文地址: https://www.6miu.com/read-2624134.html

最新回复(0)