zoukankan      html  css  js  c++  java
  • kernel object用完需要CloseHandle,user和gdi object需要CloseHandle么?

    通过windows via C/C++,知道了kernel object,也知道了用完了kernel object之后,要调用CloseHandle。这个函数的作用就是将该kernel object的usage count - 1,当这个count为0的时候,该kernel object会变成signal状态/销毁。

    kernel object是不属于process的,是属于windows内核的。process只有一个kernel object handle table,用来存放所有的kernel object handle。所以,多个process可以同时使用一个kernel object -- 只要有handle即可。

    那么,对于user object和gdi object呢?他们两者都不属于kernel object(明显的区别就是创建这些object的时候,不需要一个SECURITY_ATTRIBUTE)。他们是一个process拥有的东西。那 么,在使用完user object和gdi object之后,需要调用CloseHandle来销毁handle和object本身么?

    查阅了MSDN之后,有了了解:不需要。user/gdi object通过相应的函数创建,比如CreateWindowEx,创建一个window user object,同时返回一个handle;当DestroyWindow调用之后,该window user object被销毁,同时对应的handle就将失效。所以,不需要手动调用CloseHandle来销毁user/gdi object。只需配对使用这些object的create方法和destroy方法即可。在MSDN中搜索user object/gdi object就可以查到这两种object的详细说明。

    下面附上windows中user object和gdi object的所有的Create和Destroy方法,非常实用。摘自MSDN。
  • 相关阅读:
    5.Docker服务进程关系
    朴素贝叶斯知识点概括
    k近邻法(KNN)知识点概括
    机器学习的应用实例
    HNU 10111 0-1矩阵
    CSU 1421 Necklace
    Poj 3469 Dual Core CPU
    Poj 2135 Farm Tour
    Poj 3180 The Cow Prom
    HDU 1004 Let the Balloon Rise
  • 原文地址:https://www.cnblogs.com/super119/p/2011418.html
Copyright © 2011-2022 走看看