📄 请问handle句柄是什么东东我在看书和程序是怎么也不明白!.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0044)http://book.hackbase.com/ask11/ask169474.htm -->
<HTML><HEAD><TITLE>请问handle句柄是什么东东?我在看书和程序是怎么也不明白!</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<SCRIPT type=text/javascript><!--google_ad_client = "pub-7325395580237867"; google_color_border = "FFFFFF";google_color_bg = "FFFFFF";google_color_link = "0000FF";google_color_url = "FFFFFF";google_color_text = "000000";//--></SCRIPT>
<SCRIPT src="" type=text/javascript></SCRIPT>
<META content="MSHTML 6.00.2900.2838" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff leftMargin=0 topMargin=0 marginheight="0" marginwidth="0">
<SCRIPT src="" type=text/javascript></SCRIPT>
<SCRIPT src="" type=text/javascript></SCRIPT>
<CENTER>
<TABLE width="100%">
<TBODY>
<TR>
<TD align=right>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=right border=0>
<TBODY>
<TR>
<TD colSpan=2><A></A><!--#include file="/header.htm"--><A
href="http://book.hackbase.com/index.html">返回首页</A> - <A
href="http://book.hackbase.com/index.htm">查找更多</A> - </TD></TR>
<TR>
<TD colSpan=2 height=15></TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD align=left>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD vAlign=top align=right width=100>主 题:</TD>
<TD align=right width=5></TD>
<TD><PRE>请问handle句柄是什么东东?我在看书和程序是怎么也不明白!</PRE></TD></TR>
<TR bgColor=#666666>
<TD colSpan=3 height=1></TD></TR>
<TR height=10>
<TD align=right></TD>
<TD align=right></TD>
<TD></TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD><PRE>
请问handle句柄是什么东东?我在看书和程序是怎么也不明白!
</PRE></TD></TR>
<TR>
<TD>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD width=10 bgColor=#f1f5fa></TD>
<TD bgColor=#f1f5fa height=25><FONT color=#3366cc>回复人:<B> llshore()
</B></FONT><FONT color=#000000>( ) 信誉:100 </FONT></TD>
<TD bgColor=#f1f5fa height=25><FONT color=#000000>2001-03-05
20:22:00Z </FONT></TD>
<TD bgColor=#f1f5fa height=25><FONT color=#000000>得分:</FONT><FONT
color=#000000>0</FONT> </TD></TR>
<TR>
<TD bgColor=#0066cc colSpan=4 height=1></TD></TR>
<TR>
<TD colSpan=4 height=5></TD></TR>
<TR>
<TD><FONT color=#ffffff>?</FONT></TD>
<TD colSpan=3><PRE>
看看这里的讨论:
http://www.csdn.net/expert/Topic/71691.shtm
</PRE></TD></TR>
<TR>
<TD align=right colSpan=4 height=10><FONT color=#ff6633><B><A
href="http://book.hackbase.com/ask11/ask169474.htm#top"><FONT
color=#3366cc>Top</FONT></A></B></FONT></TD></TR>
<TR>
<TD colSpan=4 height=5></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD width=10 bgColor=#f1f5fa></TD>
<TD bgColor=#f1f5fa height=25><FONT color=#3366cc>回复人:<B>
CandyCat(苯苯猫) </B></FONT><FONT color=#000000>( ) 信誉:100 </FONT></TD>
<TD bgColor=#f1f5fa height=25><FONT color=#000000>2001-03-05
21:14:00Z </FONT></TD>
<TD bgColor=#f1f5fa height=25><FONT color=#000000>得分:</FONT><FONT
color=#000000>0</FONT> </TD></TR>
<TR>
<TD bgColor=#0066cc colSpan=4 height=1></TD></TR>
<TR>
<TD colSpan=4 height=5></TD></TR>
<TR>
<TD><FONT color=#ffffff>?</FONT></TD>
<TD colSpan=3><PRE>
建议看一看Windows 核心编程
</PRE></TD></TR>
<TR>
<TD align=right colSpan=4 height=10><FONT color=#ff6633><B><A
href="http://book.hackbase.com/ask11/ask169474.htm#top"><FONT
color=#3366cc>Top</FONT></A></B></FONT></TD></TR>
<TR>
<TD colSpan=4 height=5></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD width=10 bgColor=#f1f5fa></TD>
<TD bgColor=#f1f5fa height=25><FONT color=#3366cc>回复人:<B>
CandyCat(苯苯猫) </B></FONT><FONT color=#000000>( ) 信誉:100 </FONT></TD>
<TD bgColor=#f1f5fa height=25><FONT color=#000000>2001-03-05
21:14:00Z </FONT></TD>
<TD bgColor=#f1f5fa height=25><FONT color=#000000>得分:</FONT><FONT
color=#000000>0</FONT> </TD></TR>
<TR>
<TD bgColor=#0066cc colSpan=4 height=1></TD></TR>
<TR>
<TD colSpan=4 height=5></TD></TR>
<TR>
<TD><FONT color=#ffffff>?</FONT></TD>
<TD colSpan=3><PRE>
建议看一看Windows 核心编程
</PRE></TD></TR>
<TR>
<TD align=right colSpan=4 height=10><FONT color=#ff6633><B><A
href="http://book.hackbase.com/ask11/ask169474.htm#top"><FONT
color=#3366cc>Top</FONT></A></B></FONT></TD></TR>
<TR>
<TD colSpan=4 height=5></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD width=10 bgColor=#f1f5fa></TD>
<TD bgColor=#f1f5fa height=25><FONT color=#3366cc>回复人:<B>
VegetableBird(失败到这个岁数还在当流氓) </B></FONT><FONT color=#000000>( )
信誉:100 </FONT></TD>
<TD bgColor=#f1f5fa height=25><FONT color=#000000>2001-03-05
21:39:00Z </FONT></TD>
<TD bgColor=#f1f5fa height=25><FONT color=#000000>得分:</FONT><FONT
color=#000000>0</FONT> </TD></TR>
<TR>
<TD bgColor=#0066cc colSpan=4 height=1></TD></TR>
<TR>
<TD colSpan=4 height=5></TD></TR>
<TR>
<TD><FONT color=#ffffff>?</FONT></TD>
<TD colSpan=3><PRE>
HANDLE当是一个指针,用来标适某个内存中的对象,在Windows.h中,你可以看到HANDLE的定义:typedef void* HANDLE。有人把HANDLE理解成指向某种结构的指针,这是不完整的。其实很多时候指针指向的内存块并没有显示的声明出结构,也就是说,我们并不知道这段内存块中每一个BYTE代表的实际意义。HANDLE有很多种,指向不同内存块的HANDLE有不同的命名,但是第一个字母都会是“H”。例如,窗口句柄HWND,意为指向窗口的指针,而HBITMAP,则是指向位图的指针。同时,很显然HANDLE也是某个已经存在的对象的唯一标识,所以Windows API对某种对象进行操作时,一般通过HANDLE来获得这个对象的。
</PRE></TD></TR>
<TR>
<TD align=right colSpan=4 height=10><FONT color=#ff6633><B><A
href="http://book.hackbase.com/ask11/ask169474.htm#top"><FONT
color=#3366cc>Top</FONT></A></B></FONT></TD></TR>
<TR>
<TD colSpan=4 height=5></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD width=10 bgColor=#f1f5fa></TD>
<TD bgColor=#f1f5fa height=25><FONT color=#3366cc>回复人:<B>
mrsp(一只孤独的恐龙) </B></FONT><FONT color=#000000>( ) 信誉:100 </FONT></TD>
<TD bgColor=#f1f5fa height=25><FONT color=#000000>2001-03-06
21:37:00Z </FONT></TD>
<TD bgColor=#f1f5fa height=25><FONT color=#000000>得分:</FONT><FONT
color=#000000>0</FONT> </TD></TR>
<TR>
<TD bgColor=#0066cc colSpan=4 height=1></TD></TR>
<TR>
<TD colSpan=4 height=5></TD></TR>
<TR>
<TD><FONT color=#ffffff>?</FONT></TD>
<TD colSpan=3><PRE>
还是不懂,有没有更通俗一点的 解释?
</PRE></TD></TR>
<TR>
<TD align=right colSpan=4 height=10><FONT color=#ff6633><B><A
href="http://book.hackbase.com/ask11/ask169474.htm#top"><FONT
color=#3366cc>Top</FONT></A></B></FONT></TD></TR>
<TR>
<TD colSpan=4 height=5></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD width=10 bgColor=#f1f5fa></TD>
<TD bgColor=#f1f5fa height=25><FONT color=#3366cc>回复人:<B>
CandyCat(苯苯猫) </B></FONT><FONT color=#000000>( ) 信誉:100 </FONT></TD>
<TD bgColor=#f1f5fa height=25><FONT color=#000000>2001-03-08
16:28:00Z </FONT></TD>
<TD bgColor=#f1f5fa height=25><FONT color=#000000>得分:</FONT><FONT
color=#000000>0</FONT> </TD></TR>
<TR>
<TD bgColor=#0066cc colSpan=4 height=1></TD></TR>
<TR>
<TD colSpan=4 height=5></TD></TR>
<TR>
<TD><FONT color=#ffffff>?</FONT></TD>
<TD colSpan=3><PRE>
作为一个Wi n d o w s 软件开发人员,你经常需要创建、打开和操作各种内核对象。系统要创
建和操作若干类型的内核对象,比如存取符号对象、事件对象、文件对象、文件映射对象、
I / O 完成端口对象、作业对象、信箱对象、互斥对象、管道对象、进程对象、信标对象、线程
对象和等待计时器对象等。这些对象都是通过调用函数来创建的。例如,C r e a t e F i l e M a p p i n g 函
数可使系统能够创建一个文件映射对象。每个内核对象只是内核分配的一个内存块,并且只能
由该内核访问。该内存块是一种数据结构,它的成员负责维护该对象的各种信息。有些数据成
员(如安全性描述符、使用计数等)在所有对象类型中是相同的,但大多数数据成员属于特定
的对象类型。例如,进程对象有一个进程I D 、一个基本优先级和一个退出代码,而文件对象则
拥有一个字节位移、一个共享模式和一个打开模式。
由于内核对象的数据结构只能被内核访问,因此应用程序无法在内存中找到这些数据结构
并直接改变它们的内容。M i c r o s o f t 规定了这个限制条件,目的是为了确保内核对象结构保持状
态的一致。这个限制也使M i c r o s o f t 能够在不破坏任何应用程序的情况下在这些结构中添加、删
除和修改数据成员。
如果我们不能直接改变这些数据结构,那么我们的应用程序如何才能操作这些内核对象
呢?解决办法是,Wi n d o w s 提供了一组函数,以便用定义得很好的方法来对这些结构进行操作。
这些内核对象始终都可以通过这些函数进行访问。当调用一个用于创建内核对象的函数时,该
函数就返回一个用于标识该对象的句柄。该句柄可以被视为一个不透明值,你的进程中的任何
线程都可以使用这个值。将这个句柄传递给Wi n d o w s 的各个函数,这样,系统就能知道你想操
作哪个内核对象。本章后面还要详细讲述这些句柄的特性。
为了使操作系统变得更加健壮,这些句柄值是与进程密切相关的。因此,如果将该句柄值
传递给另一个进程中的一个线程(使用某种形式的进程间的通信)那么这另一个进程使用你的
进程的句柄值所作的调用就会失败。在3 . 3 节“跨越进程边界共享内核对象”中,将要介绍3 种
机制,使多个进程能够成功地共享单个内核对象。
这是核心编程中的,希望能对此问题有所帮助
</PRE></TD></TR>
<TR>
<TD align=right colSpan=4 height=10><FONT color=#ff6633><B><A
href="http://book.hackbase.com/ask11/ask169474.htm#top"><FONT
color=#3366cc>Top</FONT></A></B></FONT></TD></TR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -