📄 workitem.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 + -