-1
  1. How can i get HANDLE to the memory region or mapped file ?
  2. What actually HANDLE is ?

Please do not answer like this :

A handle is an abstract reference to some resourc,e provided to you by another party (usually the OS), that you can hand back to reference that resource.

I'm interested in technical side

4

3 回答 3

1

AHANDLE只是一些数据的任意块。

例如,它由以下 API 返回:CreateFile()并且OpenProcess()- 正如您所知,这两者非常不同,但返回完全相同的数据类型。

或者对于内存,您可以访问堆(作为HANDLEfrom返回GetProcessHeap())然后使用HeapAlloc()它。

正如 MSDN 指出的那样,它在许多其他情况下使用:

http://msdn.microsoft.com/en-us/library/windows/apps/ms724211%28v=vs.85%29.aspx

访问令牌

通讯设备

控制台输入

控制台屏幕缓冲区

事件

文件

文件映射

I/O 完成端口

工作

中转槽

内存资源通知

互斥体

命名管道

管道

过程

信号

线

交易

等待定时器

于 2013-09-01T15:56:31.807 回答
0

如果你只是想知道它是什么:

在简单的操作系统中,这样的句柄实际上只是指向内核空间结构的指针。该结构包含有关句柄本身的更多信息(例如,指向文件结构的指针)。更复杂的操作系统(如 Windows)会在尝试访问此结构之前检查句柄的有效性。

因为 HANDLE 在 Windows 中是不透明的(这意味着:Microsoft 说:不要解释它 - 它只是一个 32 位数字),HANDLE 的实际含义可能在不同版本的 Windows 中有所不同。即使在一个版本中(例如 Vista 32 位与 Vista 64 位或 XP SP2 与 XP SP3),(内部)含义也可能不同。

Microsoft 可能会随时更改其含义(它可能是 Windows 95 中的指针,但可能是 Windows 8 中数组的索引 - 谁知道)。

于 2013-09-01T17:19:12.290 回答
0

窗口中的句柄曾经是指向对象内存位置的指针。在win 3.1天一些程序投了一些句柄来看看后面是什么。今天据我所知,这已经不可能了,它们只是简单的唯一标识符或令牌,可以在您和系统之间进行通信。
更多信息http://en.wikibooks.org/wiki/Windows_Programming/Handles_and_Data_Types
更多从 msdn 读取 16 位窗口中的段落对象http://msdn.microsoft.com/en-us/library/ms810501.aspx

于 2013-09-01T19:26:43.377 回答