016 句柄2

● 句柄

  ● 句柄内核对象递增数值

  ● 进程内核对象

    ○  句柄表

    ○  索引

    ○  指向内核对象的指针

    ○  内存空间

    ○  标志位

  ● 句柄是不能够跨进程存在的     

    ○  File Obj -> 地址

    ○  生成索引

      ○  A索引表 R3  ->  拿到索引  ->

  ● closehandle 可以关闭进程句柄

    ○ 改变其他内核对象的使用计数

    ○ 传递索引值

    ○ 根据索引找到当前索引的内核对象

    ○ 找到会返回一个 TRUE 找不到返回一个 FALSE

    ○ 如果不关闭句柄的话会造成过多的内存使用

      ○ 进程死亡后,系统会对进程句柄表里面的内核对象进行释放

 1 #include <stdio.h>
 2 #include <windows.h>
 3 int main( int argc, char *argv[] )
 4 {
 5     printf( "Hello World!
" );
 6     HANDLE hFile = CreateFile(TEXT("one.txt"),
 7                             GENERIC_READ,
 8                             0,
 9                             NULL,
10                             CREATE_ALWAYS,
11                             FILE_ATTRIBUTE_NORMAL,
12                             NULL);
13         HANDLE hFile2 = CreateFile(TEXT("one.txt"),
14                             GENERIC_READ,
15                             0,
16                             NULL,
17                             CREATE_ALWAYS,
18                             FILE_ATTRIBUTE_NORMAL,
19                             NULL);
20     return 0;
21 }

原文地址:https://www.cnblogs.com/sdk123/p/7114905.html