● 句柄
● 句柄内核对象递增数值
● 进程内核对象
○ 句柄表
○ 索引
○ 指向内核对象的指针
○ 内存空间
○ 标志位
● 句柄是不能够跨进程存在的
○ 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 }