⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 workitem.cpp

📁 pppoe client
💻 CPP
字号:

//********************************************************************
//	日期:	2004/08/15 - 15:8:2004   7:05
//	名前:	tiamo
//	描述:	work item
//*********************************************************************

#include "Stdafx.h"

// allocate work item
PPPPOE_WORK_ITEM AllocateWorkItem(PNPAGED_LOOKASIDE_LIST pLookasideList,VOID (*pRoutine)(PPPPOE_WORK_ITEM,PPPPOE_WORK_ITEM_PARAM,PVOID),
							PVOID pAdditionalParam,VOID (*pDestructor)(PPPPOE_WORK_ITEM))
{
	PPPPOE_WORK_ITEM pItem = static_cast<PPPPOE_WORK_ITEM>(NdisAllocateFromNPagedLookasideList(pLookasideList));
	if(pItem)
	{
		pItem->m_pAdditionalParam = pAdditionalParam;
		pItem->m_pDestructor = pDestructor;
		pItem->m_pRoutine = pRoutine;
		pItem->m_pLookasideList = pLookasideList;

		NdisInitializeWorkItem(&pItem->m_ndisWorkItem,GlobalExecWorkItem,pItem);
	}

	return pItem;
}

// schedule work item
VOID ScheduleWorkItem(PPPPOE_WORK_ITEM pWorkItem)
{
	NdisScheduleWorkItem(&pWorkItem->m_ndisWorkItem);

	pWorkItem->m_ulState = WORK_ITEM_LIVE;
}

// global exec routine
VOID GlobalExecWorkItem(PNDIS_WORK_ITEM pNdisWorkItem,PVOID pContext)
{
	PPPPOE_WORK_ITEM pWorkItem = static_cast<PPPPOE_WORK_ITEM>(pContext);
	if(pWorkItem->m_ulState != WORK_ITEM_DEAD)
	{
		pWorkItem->m_pRoutine(pWorkItem,&pWorkItem->m_param,pWorkItem->m_pAdditionalParam);
	}

	pWorkItem->m_ulState = WORK_ITEM_FREE;

	if(pWorkItem->m_pDestructor)
		pWorkItem->m_pDestructor(pWorkItem);

	NdisFreeToNPagedLookasideList(pWorkItem->m_pLookasideList,pWorkItem);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -