有人告诉我,句柄是一种“空”指针。但“空指针”到底是什么意思以及它的目的是什么。另外,什么是"somehandle = GetStdHandle(STD_INPUT_HANDLE);
do?
一般意义上的句柄是唯一标识对象的不透明值。在这种情况下,“不透明”意味着分发句柄的实体(例如窗口管理器)知道句柄如何映射到对象,但使用句柄的实体(例如您的代码)不知道。
这样做是为了除非提供者参与,否则他们无法获取真实的对象,这使得提供者可以确保没有人在背后弄乱其拥有的对象。
由于它非常实用,句柄传统上是整数类型或void*
因为在 C 中使用原语比其他任何东西都容易得多。特别是,Win32 API 中的许多函数接受或返回句柄(它们是#define
d 具有各种名称:HANDLE
, HKEY
, 好多其它的)。所有这些类型都映射到void*
.
Update:
回答第二个问题(尽管最好单独提出并回答):
GetStdHandle(STD_INPUT_HANDLE)
返回标准输入设备的句柄 http://msdn.microsoft.com/en-us/library/ms683231%28v=vs.85%29.aspx。您可以使用此句柄读取进程的标准输入。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)