首页
社区
课程
招聘
[旧帖] [求助]寒江独钓。。? 0.00雪花
发表于: 2011-5-31 21:26 1304

[旧帖] [求助]寒江独钓。。? 0.00雪花

2011-5-31 21:26
1304
查看

long DPBitmapTest(
        DP_BITMAP *      bitmap,
        LARGE_INTEGER       offset,
        unsigned long       length
        )
{
        char flag = 0;
        unsigned long i = 0;
        unsigned long myRegion = 0;
        unsigned long myRegionOffset = 0;
        unsigned long myByteOffset = 0;
        unsigned long myBitPos = 0;
        long ret = BITMAP_BIT_UNKNOW;

        __try
        {
                //检查参数
                if (NULL == bitmap || offset.QuadPart < 0 || offset.QuadPart + length > bitmap->bitmapReferSize)
                {
                        ret = BITMAP_BIT_UNKNOW;

                        __leave;
                }

                for (i = 0; i < length; i += bitmap->sectorSize)
                {
                        //针对需要测试的bitmap范围进行测试,如果全部为0则返回BITMAP_RANGE_CLEAR,如果全部为1,则返回BITMAP_RANGE_SET,如果为0,1混合则返回BITMAP_RANGE_BLEND
                        myRegion = (unsigned long)((offset.QuadPart + (__int64)i) / (__int64)bitmap->regionReferSize);

                        myRegionOffset = (unsigned long)((offset.QuadPart + (__int64)i) % (__int64)bitmap->regionReferSize);

                        myByteOffset = myRegionOffset / bitmap->byteSize / bitmap->sectorSize;

                        myBitPos = (myRegionOffset / bitmap->sectorSize) % bitmap->byteSize;

                        if (NULL != *(bitmap->Bitmap + myRegion) && (*(*(bitmap->Bitmap + myRegion) + myByteOffset) &bitmapMask[myBitPos]))
                        {
                                flag |= 0x2;
                        }
                        else
                        {
                                flag |= 0x1;
                        }

                        if (flag == 0x3)
                        {
                                break;
                        }
                }

                if (0x2 == flag)
                {
                        ret = BITMAP_RANGE_SET;
                }
                else if (0x01 == flag)
                {
                        ret = BITMAP_RANGE_CLEAR;
                }
                else if (0x03 == flag)
                {
                        ret = BITMAP_RANGE_BLEND;
                }
        }
        __except(EXCEPTION_EXECUTE_HANDLER)
        {
                ret = BITMAP_BIT_UNKNOW;
        }

        return ret;
}

        myRegion = (unsigned long)((offset.QuadPart + (__int64)i) / (__int64)bitmap->regionReferSize);

                        myRegionOffset = (unsigned long)((offset.QuadPart + (__int64)i) % (__int64)bitmap->regionReferSize);

                        myByteOffset = myRegionOffset / bitmap->byteSize / bitmap->sectorSize;

                        myBitPos = (myRegionOffset / bitmap->sectorSize) % bitmap->byteSize;


这几句什么意思??分别代表什么·?》

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 23
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不知道
。。。。。。。。。。
2011-6-1 01:37
0
游客
登录 | 注册 方可回帖
返回
//