打開某個應用程序提示錯誤: 句柄無效

字號+ 編輯: 种花家 修訂: IT男在阿里 來源: 网络转载 2023-09-12 我要說兩句(0)

如果經常玩c++的朋友可能對句柄一詞並不陌生。我們在創作一款orm的時候經常也會涉及到各式各樣的connection handler編程, 這個handler通過長時間的教育學界的錯亂翻譯, 被逐漸玩壞, 譯成了一個古怪的名詞: 句柄。

還有網友是在遊戲過程中突然出現警告音,最小化遊戲後看到桌面上不停的出現提示句柄無效,也無法正常關機,按電源關機,重啓殺毒後並沒發現病毒,用系統備份還原系統後也無法解決,在玩一段時間後依然出現,應該怎麽辦?

43a7d933c895d143f966465373f082025aaf07a9.jpeg

處理方法:此警告音是否由於安裝了第三方軟體後提示的,如果是建議卸載掉不要使用,或查看是不是遊戲本身遇到了問題,可以卸載重新下載安裝。

系統不能加載用戶配置, 但能加載默認配置。

句柄無效通常是編程領域的bug問題,但你的情況顯然不可能是編程的問題,應該是丟失或更改了某些系統文档。我猜可能是你的dircetx錯誤,或者是丟失了某些動態連接庫的DLL文档。你重新下載一個directx9.0c,安裝試試。如果還不行,就重裝操作系統,這樣做比較省事。

其他對於句柄的相關解釋:

所謂句柄實際上是一個數據,是一個Long (整長型)的數據。

句柄是windows系統用來標識被應用程序所建立或使用的對象的唯一整數,Windows使用各種各樣的句柄標識諸如應用程序實例,窗口,控制,位圖,GDI對象等等。WINDOWS句柄有點象C語言中的文档句柄。

從上面的定義中的我們可以看到,句柄是一個標識符,是拿來標識對象或者項目的,它就象我們的姓名一樣,每個人都會有一個,不同的人的姓名不一樣,但是,也可能有一個名字和你一樣的人。從數據類型上來看它只是一個16位的無符號整數。應用程序幾乎總是通過調用一個WINDOWS函數來獲得一個句柄,之後其他的WINDOWS函數就可以使用該句柄,以引用相應的對象。

如果想更透徹一點地認識句柄,我可以告訴大家,句柄是一種指向指針的指針。我們知道,所謂指針是一種内存地址。應用程序啓動後,組成這個程序的各對象是住留在内存的。如果簡單地理解,似乎我們只要獲知這個内存的首地址,那麽就可以隨時用這個地址訪問對象。但是,如果您真的這樣認爲,那麽您就大錯特錯了。我們知道,Windows是一個以虛擬内存爲基礎的操作系統。在這種系統環境下,Windows内存管理器經常在内存中來回移動對象,依此來滿足各種應用程序的内存需要。對象被移動意味著它的地址變化了。如果地址總是如此變化,我們該到哪裡去找這個“對象”呢?

爲了解決這個問題,Windows操作系統爲各應用程序騰出一些内存儲地址,用來專門登記各應用對象在内存中的地址變化,而這個地址(存儲單元的位置)本身是不變的。Windows内存管理器在移動對象在内存中的位置後,把對象新的地址告知這個句柄地址來保存。這樣我們只需記住這個句柄地址就可以間接地知道對象具體在内存中的哪個位置。這個地址是在對象裝載(Load)時由系統分配給的,當系統卸載時(Unload)又釋放給系統。

句柄地址(穩定)->記載著對象在内存中的地址->對象在内存中的地址(不穩定)->實際對象。

本質上來說:WINDOWS程序中並不是用物理地址來標識一個内存塊,文档,任務或動態裝入模塊的,相反的,WINDOWS API給這些項目分配確定的句柄,並將句柄返回給應用程序,然後通過句柄來進行操作。

但是必須注意的是程序每次從新啓動,系統不能保证分配給這個程序的句柄還是原來的那個句柄,而且絕大多數情況的確不一樣的。假如我們把進入電影院看電影看成是一個應用程序的啓動運行,那麽系統給應用程序分配的句柄總是不一樣,這和每次電影院售給我們的門票總是不同的一個座位是一樣的道理。

閲完此文,您的感想如何?
  • 有用

    0

  • 沒用

    0

  • 開心

    0

  • 憤怒

    0

  • 可憐

    0

1.如文章侵犯了您的版權,請發郵件通知本站,該文章將在24小時内刪除;
2.本站標注原創的文章,轉發時煩請注明來源;
3.交流群: 2702237 13835667

相關課文
  • 電腦撥號上網或寬帶連接顯示錯誤651

  • Windows系統的桌面快捷方式刪不掉的解決方法

  • Windows系統打不開exe文档了,如何解決?

  • Windows台式機和筆記本電腦連接到系統中的設備沒有發揮作用

我要說說
網上賓友點評