HWND、HANDLE、HMODULE、HINSTANCE的区别

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下是相同的东西

posted @ 2024-10-15 00:08  不会笑的孩子  阅读(31)  评论(0编辑  收藏  举报