美文网首页
HWND、HANDLE、HMODULE、HINSTANCE的区别

HWND、HANDLE、HMODULE、HINSTANCE的区别

作者: 瓜尔佳Anthony | 来源:发表于2021-06-30 15:13 被阅读0次

    Windows上如何定义的

    1 HWND

    A handle to a window

    typedef HANDLE HWND;
    

    2 HANDLE

    A handle to an object

    typedef PVOID HANDLE;
    

    3 HMODULE

    A handle to a module. This is the base address of the module in memory.

    typedef HINSTANCE HMODULE;
    

    看到定义了,答案很明了:
    HMODULE 和 HINSTANCE 只有在16位的windows系统上才有区别,否则没有区别。

    4 HINSTANCE

    A handle to an instance. This is the base address of the module in memory.

    typedef HANDLE HINSTANCE;
    

    此时此刻,不知道你懵逼了没有,反正我是懵了,看定义,HWND、HANDLE、HMODULE、HINSTANCE这四个东西不是一样的吗!!!!

    也就是可以说 HWND、HANDLE、HMODULE、HINSTANCE之间的差别不是在变量类型上,而是在语义上。

    到底有什么区别?
    HWND是线程相关的,你可以通过HWND找到该窗口所属进程和线程

    Handle 是代表系统的内核对象,如文件句柄,线程句柄,进程句柄。
    系统对内核对象以链表的形式进行管理,载入到内存中的每一个内
    核对象都有一个线性地址,同时相对系统来说,在串列中有一个索引位置,这个索引位置就是内核对象的handle。

    HINSTANCE的本质是模块基地址,他仅仅在同一进程中才有意义,跨进程的HINSTANCE是没有意义

    HMODULE 是代表应用程序载入的模块,win32系统下通常是被载入模块的线性地址。

    HINSTANCE 在win32下与HMODULE是相同的东西(只有在16位windows上,二者有所不同).

    原文链接:https://blog.csdn.net/wangshubo1989/article/details/53203718

    相关文章

      网友评论

          本文标题:HWND、HANDLE、HMODULE、HINSTANCE的区别

          本文链接:https://www.haomeiwen.com/subject/deerultx.html