Browsed by
Month: March 2015

[Wine-Dev]NtQueryVolumeInformation对FileFsFullSizeInformation的支持

[Wine-Dev]NtQueryVolumeInformation对FileFsFullSizeInformation的支持

1.结构体FILE_FS_FULL_SIZE_INFORMATION的几个属性的含义 参见MSDN https://msdn.microsoft.com/en-us/library/windows/hardware/ff540267(v=vs.85).aspx 结构体定义如下: typedef struct _FILE_FS_FULL_SIZE_INFORMATION { LARGE_INTEGER TotalAllocationUnits; LARGE_INTEGER CallerAvailableAllocationUnits; LARGE_INTEGER ActualAvailableAllocationUnits; ULONG SectorsPerAllocationUnit; ULONG BytesPerSector; } FILE_FS_FULL_SIZE_INFORMATION, *PFILE_FS_FULL_SIZE_INFORMATION; 对磁盘的相关知识,参考下图   Figure 1: Disk structures: Track Geometrical sector Track sector Cluster 图片摘自wikipedia http://en.wikipedia.org/wiki/Disk_sector 其中 SectorsPerAllocationUnit 和 BytesPerSector 的值通过名字就可以看出来 下面是对TotalAllocationUnit,CallerAllocationUnit,ActualAllocationUnit的具体表达的含义的研究 2.实验过程 实验基本环境:Windows XP 32bit 磁盘实际大小 9.98GB 分区仅有C: 一个分区 VOID用户使用的磁盘份额为8.40GB 剩余空间为 1.58(未开启磁盘份额) Newbee用户使用的磁盘份额为4.82MB 剩余空间为295MB(已开启磁盘份额) 分割线右侧的数据为在相应条件下右键打开磁盘的属性菜单的三个值,分别为:已用空间 可用空间  容量 实验1. 不开启配额限制 使用用户VOID(Admin) ==========1===========8.40GB 1.58GB 9.98GB=============== file.c:1228: TotalAllocationUnits(Human Readable) 0 9.989117GB file.c:1229: CallerAvailableAllocationUnits 00000000 000652e6 file.c:1230: CallerAvailableAllocationUnits(Human Readable) 0 1.580956GB file.c:1231: ActualAvailableAllocationUnits 00000000 000652e6…

Read More Read More

[git学习] 跟我一起学git

[git学习] 跟我一起学git

Progit 读书笔记–git学习系列 Progit 读书笔记–git学习系列 Table of Contents 1 版本管理系统发展史,git的基本概念及安装 1.1 完整性的保证 1.2 三个状态 1.3 初次使用git 进行的配置 2 Git 基础(实际操作开始!) 1 版本管理系统发展史,git的基本概念及安装 1.1 完整性的保证 git 为保证文件传输的完整性,git使用*SHA-1* checksum hash算法来对文件或目录进行校验和计算。SHA-1得到的结果 是一个40位长的HEX字串 1.2 三个状态 git的三个主要状态为 commited modified 和 staged committed表示这个改动已经记录到数据库中 modified表示某文件或目录已经发生改动,还没有被登记 staged表示这个改动已经被登记,正准备在commit的时候记录到数据库中 他们三者的关系为: Working Dir | StagingArea | .git Repo <————–checkout—————– ——-add or stage-> ——-commit—–> .git 仓库(.git Repo)是代码仓库的所有版本的储存区,就是git的版本数据库 Working Dir 是从.git仓库里提取出来的某个版本的独立内容 Staging Area 称为暂存区,他是一个文件,保留了下次要提交的 文件列表和信息 git的基本工作流为: change Files-—> stage these changes —> do a commit 对应的区域分别为: WorkingDir——>Staging Area–—>.git Repo 1.3 初次使用git 进行的配置 git config…

Read More Read More

[Linux]make,MakeFile 使用学习

[Linux]make,MakeFile 使用学习

最近由于任务需要,要对make 和Makefile进行学习,早就想要对makefile进行一个系统的学习了,现在就借这个机会来学。 1.什么是makefile 和 make make 命令执行的就是根据Makefile里定义的一系列编译 连接规则,将源代码自动编译为 .obj(.o)中间件 进而link为一个完整的应用程序 2.Makefile的基本格式如何? 2.1基本规则 以下是Makefile文件的基本规则 target … : prerequisites … command … … 其中 target 就是要make的目标文件 ,可以是一个 Object 也可以是执行文件,还可以是一个标签 (如 make label1,而label1指定了其它的操作)  prerequisites 就是要完成这个target需要的原料  command 即为完成这个target需要的操作(就是各种命令,不局限于编译命令) 2.2Makefile示例 edit : main.o kbd.o command.o display.o / insert.o search.o files.o utils.o cc -o edit main.o kbd.o command.o display.o / insert.o search.o files.o utils.o main.o : main.c defs.h cc -c main.c kbd.o : kbd.c defs.h command.h cc -c kbd.c command.o : command.c defs.h command.h cc -c command.c display.o : display.c defs.h…

Read More Read More

[Linux学习] Linux基础

[Linux学习] Linux基础

Linux 基础学习 变量,环境变量,文件查找 创建变量的方式:declare your_var_name   上述语句即可用于创建单个变量 也可创建数组变量 查找指令whereis locate find 一般使用的为这三个 whereis查找时只查找二进制文件(-b)man帮助文件(-m)和源代码文件(-s) locate查找时通过搜索/var/lib/mlocate/mlocate.db数据库查找,这个数据库每日更新一次,可以人为通过updatedb 进行更新 查找/etc下所有以sh开头的文件 $ locate /etc/sh 注意,它不只是在etc目录下查找并会自动递归子目录进行查找 查找/usr/share/下所有jpg文件 $ locate /usr/share/*.jpg   which 是shell内建的命令,他只从$PATH环境变量中去搜索,因而总被用作查看是否安装了指定的软件 find 命令是最强大最复杂的命令 具体学习参考man find 语法: find [path] [option] [action] 文件压缩 使用zip打包文件 普通打包 zip -r -q -o zip_name.zip source_file 其中 -r 为 递归进入源的目录下打包所有文件 -q 表示安静模式 -o后紧跟打包后的输出文件名 压缩级别设置 设置压缩级别,要另外添加参数 -1~9 其中 数字越大压缩率越高 耗时越长 ,可以使用下面一系列变量来查看不同压缩参数的压缩能力 #要压缩的文件夹名为 test_zip 压缩档保存在 ~ 目录下 zip -r -q -o test.zip test_zip zip -r -q -1 -o test_1.zip test_zip zip -r -q -9 -o test_9.zip test_zip #压缩完毕…

Read More Read More