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