您的位置:首页 > 其它

Windows驱动开发小练习-Lookaside测试程序

2012-09-20 10:37 483 查看
//////////////////////////////////////////////////////////////////////////
// Lookaside测试
// Lookaside一般在以下情况使用:
// 1.每次申请固定大小的内存
// 2.频繁申请释放内存

void LookasideTest()
{
KdPrint(("Entering LookasideTest function\n"));
PAGED_LOOKASIDE_LIST lookAside;

// 初始化一个分页Lookaside对象
// 如果初始化非分页Lookaside对象应该调用ExInitializeNPagedLookasideList
ExInitializePagedLookasideList(&lookAside, NULL, NULL, 0, sizeof(MYDATA), '1234', 0);
#define ARRAY_NUMBER 10
PMYDATA arr[ARRAY_NUMBER];
KdPrint(("Now allocating memory...\n"));
// 模拟以下频繁地申请内存
for (int i = 0; i < ARRAY_NUMBER; i++)
{
arr[i] = (PMYDATA)ExAllocateFromPagedLookasideList(&lookAside);
}
KdPrint(("Now freeing memory...\n"));
// 模拟频繁地回收内存
for (int i = 0; i < ARRAY_NUMBER; i++)
{
ExFreeToPagedLookasideList(&lookAside, arr[i]);
arr[i] = NULL;
}

KdPrint(("Deleteing lookaside object...\n"));
// 释放lookaside对象
ExDeletePagedLookasideList(&lookAside);
KdPrint(("Leaving LookasideTest()\n"));
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: