ric*_*ard 21 .net c# definition handle
可能重复:
什么是Windows句柄?
究竟什么是"处理"?
我看到窗口引用句柄,其中有一个窗口的引用控制手柄等,但我不知道句柄是什么.
我特别想知道它是什么,以及与.NET有关的任何相关细节.
kar*_*hik 12
句柄是操作系统的参考.它没有编程引用的语义,但它所做的是允许系统资源知道在API调用中传递时你所指的是什么.
通常,HANDLE包含在类的实例中.CWnd就是一个很好的例子,它包含一个HWND,它是窗口的句柄.
你可以这样做.CWnd*pWnd = CWnd :: FromHandle(hWnd)注意:CWnd :: FromHandle(hWnd)是静态的,不需要实例.
它将传递回hWnd包装的包装器.好吧不太好!如果句柄实际上没有被对象包裹,它将创建一个并且它只能是临时的.所以使用它一次然后扔掉它.它可以创建实例,因为hWnd在其struct的结构中有足够的信息来实例化CWnd对象.它不会将它添加到句柄v对象表中,因此它只是临时的.
HWND实际上是一个内核对象,还有更多?
我不确定如果需要,所有这些都会传回一个临时对象.GetDC(hWnd)将从hWnd获取hDC,但它将是临时的,可能更好地使用CDC类.
阅读更多:http://wiki.answers.com/Q/What_is_a_handle_in_Windows_Programming#ixzz1JBmoF0lv
句柄是对另一方(通常是操作系统)提供给您的某些资源的抽象引用,您可以将其移交给引用该资源.
操作系统通常包含一个句柄表,其中包含用户创建的实体(打开文件,......); handle是此表的整数索引.您的进程打开,操作系统在其句柄表中创建一个条目,用您的(进程)名称标记它,并将该条目的索引交还给您的进程.当你的进程想要读取时,它为操作系统提供句柄整数,只需将其用作表索引即可在表中查找; 它现在知道你的进程想要读取哪个实体(文件).
通过将您的进程ID放在句柄条目中,操作系统可以判断句柄是否对进程有效.您的流程可以提供垃圾作为操作系统的句柄; 如果句柄槽匹配,操作系统将执行您想要的操作,无论它多么愚蠢.毕竟,它是你的资源.