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

📄 workitem.h

📁 pppoe client
💻 H
字号:

//********************************************************************
//	日期:	2004/08/24 - 24:8:2004   19:55
//	名前:	tiamo
//	描述:	work item
//*********************************************************************

#pragma once

#define WORK_ITEM_SIG								MAKE_SIG('W','O','R','K')
#define WORK_ITEM_PARAM_SIG							MAKE_SIG('W','O','P','A')

// forward declaration
typedef struct __tagChannel *PCHANNEL;
typedef struct __tagWorkItem *PWORK_ITEM;
typedef struct __tagWorkItemParam *PWORK_ITEM_PARAM;

// exec routine
typedef VOID (*WORK_ITEM_ROUTINE)(PWORK_ITEM pItem,PWORK_ITEM_PARAM pParam);
typedef VOID (*WORK_ITEM_DESTRUCTOR)(PWORK_ITEM pItem,PWORK_ITEM_PARAM pParam);

// workitem param
typedef struct __tagWorkItemParam
{
	ULONG												m_ulSig;
	union
	{
		struct _COMMON
		{
			PVOID										m_pParam[4];
		}COMMON;

		struct _REBIND_FOR_MAKE_CALL
		{
			PWORK_ITEM									m_pMakeCall;
		}REBIND_FOR_MAKE_CALL;

		struct _MAKE_CALL
		{
			PCHANNEL									m_pChannel;
		}MAKE_CALL;

		struct _CLOSE_CALL
		{
			PCHANNEL									m_pChannel;
		}CLOSE_CALL;
	};
}WORK_ITEM_PARAM,*PWORK_ITEM_PARAM;

// work item
typedef struct __tagWorkItem
{
	ULONG												m_ulSig;
	NDIS_WORK_ITEM										m_ndisWorkItem;				// ndis work item
	WORK_ITEM_PARAM										m_param;					// param
	WORK_ITEM_ROUTINE									m_pRoutine;					// routine
	WORK_ITEM_DESTRUCTOR								m_pDestructor;				// destructor
}WORK_ITEM,*PWORK_ITEM;

// public
extern "C"
{
	// init work item system <= DISPATCH_LEVEL
	VOID InitializeWorkItemSystem();

	// shut down <= DISPATCH_LEVEL
	VOID ShutdownWorkItemSystem();

	// alloca work item <= DISPATCH_LEVEL
	PWORK_ITEM AllocateWorkItem(WORK_ITEM_ROUTINE pRoutine,WORK_ITEM_DESTRUCTOR pDestructor = NULL);

	// schedule work item <= DISPATCH_LEVEL
	VOID ScheduleWorkItem(PWORK_ITEM pItem);
}

// private
extern "C"
{
	// common routine PASSIVE_LEVEL only
	VOID CommonWorkItemRoutine(PNDIS_WORK_ITEM pNdisWorkItem,PVOID pContext);
}

// look aside list
extern NPAGED_LOOKASIDE_LIST g_lookasideWorkItem;

⌨️ 快捷键说明

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