0CCh Blog

一点有关Ntdll中提供的bitmap系列函数

我们都知道STL中提供了一个bitset类,但是在我真正操作有关文件系统的时候,发现这个类提供的功能并不能满足我的需求。幸运的是Ntdll中提供了一套操作bitmap的API。于是我抽了点时间把这几个API总结了一下,写成了一个类。这个类只是简单的对Ntdll的bitmap相关API做很浅的封装,没啥好说的。要说的是这套bitmap的API用起来确实很方便。
这些API包括:
RtlInitializeBitMap
RtlFindClearBits
RtlFindClearBitsAndSet
RtlFindClearRuns
RtlFindLastBackwardRunClear
RtlFindLongestRunClear
RtlFindNextForwardRunClear
RtlFindSetBits
RtlFindSetBitsAndClear
RtlSetAllBits
RtlSetBits
RtlClearAllBits
RtlClearBits
RtlNumberOfClearBits
RtlNumberOfSetBits
RtlAreBitsClear
RtlAreBitsSet
以上这些,在MSDN上都能查到API的详细文档介绍。唯一不方便的就是使用的时候需要GetProcAddress一下。所以我为了自己以后使用方便才写了一个类。

在项目(https://github.com/0cch/bitmap)中,bitmap_class是封装类,整个工程是一个使用这套API,获得文件系统的bitmap,并且查找空闲簇的一个例子。

2014-01-18_101801