HWND、HANDLE、HMODULE、HINSTANCE的區別

不会笑的孩子發表於2024-10-15

HWND(R3視窗控制代碼)

HWND是執行緒相關的,你可以透過HWND找到該視窗所屬程序和執行緒

HWND hWnd = FindWindow(NULL, L"無標題 - Notepad");

Handle(R0核心物件控制代碼)

Handle 是代表系統的核心物件,如檔案控制代碼,執行緒控制代碼,程序控制代碼。

  • CreateFile() / CreateFileA() / CreateFileW():用於建立或開啟一個檔案、管道、裝置或控制檯。返回的檔案控制代碼可用於後續的檔案操作。
  • ReadFile():從檔案中讀取資料。需要檔案控制代碼作為引數。
  • WriteFile():向檔案中寫入資料。需要檔案控制代碼作為引數。
  • CloseHandle():關閉一個開啟的物件控制代碼。對於檔案控制代碼,這通常表示釋放與檔案關聯的資源。
  • CreateProcess():建立一個新程序及其主執行緒。返回新程序的控制代碼和主執行緒的控制代碼。
  • OpenProcess():開啟一個現有的程序物件。返回程序的控制代碼。
    系統對核心物件以連結串列的形式進行管理,載入到記憶體中的每一個核心物件都有一個線性地址,在串列中有一個索引未知,這個索引位置就是核心物件的handle

HINSTANCE(模組基地址)

用於標識一個程式的例項或已載入的模組(DLL)

HMODULE LoadLibrary(  
  LPCTSTR lpFileName  
);

HMODULE(應用程式載入的模組)

HINSTANCE和HMODULE這兩者在WIN32下是相同的東西

相關文章