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

📄 stdafx.h

📁 pppoe client
💻 H
📖 第 1 页 / 共 3 页
字号:
	LARGE_INTEGER						m_ullExecuteTime;					// time
	PVOID								m_pContext;							// context
	VOID							  (*m_pRoutine)(__tagPPPOETimerItem*,PVOID,PVOID);	// routine
}PPPOE_TIMER_ITEM,*PPPPOE_TIMER_ITEM;

// timer
typedef struct __tagPPPOETimer
{
	ULONG								m_ulSig;							// sig
	NDIS_SPIN_LOCK						m_lockSelf;							// lock
	LIST_ENTRY							m_ltTimerItem;						// timer item
	NDIS_TIMER							m_ndisTimer;						// timer
}PPPOE_TIMER,*PPPPOE_TIMER;

#define LINE_INITIALIZED									0x00000001
#define LINE_FREEING										0x00000002
#define LINE_CLOSING										0x00000004
#define LINE_CLOSE_RETURN_PENDING							0x00000008
#define LINE_CLIENT_MODE									0x00000010
#define LINE_SERVER_MODE									0x00000020

// line info
typedef struct __tagLineInfo
{
	ULONG								m_ulSig;							// signature
	LONG								m_lRefCount;						// ref count
	NDIS_SPIN_LOCK						m_lockSelf;							// lock 
	ULONG								m_ulFlags;							// flags
	ULONG								m_ulEndpoints;						// end points
	ULONG								m_ulNumOutCalls;					// out calls
	ULONG								m_ulNumInCalls;					// in calls
	HTAPI_LINE							m_htLine;							// tapi line
	HDRV_LINE							m_hdLine;							// driver line
	LIST_ENTRY							m_ltCall;							// list call
}LINE_INFO,*PLINE_INFO;

#define CALL_INITIALIZED									0x00000001
#define CALL_CONNECTING										0x00000002
#define CALL_DROPPING										0x00000004
#define CALL_CLOSING										0x00000008
#define CALL_FREEING										0x00000010
#define CALL_CLOSE_RETURN_PENDING							0x00000020
#define CALL_RECV_NEXT_TIMER_SCHEDULED						0x00000040

// call info
typedef struct __tagCallInfo
{
	ULONG								m_ulSig;							// signature
	LONG								m_lRefCount;						// ref count
	ULONG								m_ulFlags;							// flags
	NDIS_SPIN_LOCK						m_lockSelf;							// lock 
	LIST_ENTRY							m_ltCalls;							// link list

	ULONG								m_bRunAsServer;						// run as server
	ULONG								m_ulFsmState;						// fsm state
	PLINE_INFO							m_pLine;							// which line
	HTAPI_CALL							m_htCall;							// connection wrapper
	HDRV_CALL							m_hdCall;							// call handle
	ULONG								m_ulLinkSpeed;						// link speed
	ULONG								m_ulMaxFrameSize;					// max frame size
	ULONG								m_ulCallState;						// call state
	NDIS_WAN_GET_LINK_INFO				m_wanLinkInfo;						// link info
	NDIS_HANDLE							m_hLinkContext;						// link context

	PBIND_CONTEXT						m_pBindContext;						// associated bind context
	PPPPOE_PACKET						m_pLastSendDiscoveryPacket;			// last send discovery packet
	LIST_ENTRY							m_ltPendingPackets;					// pending packets
	LONG								m_lPendingPacketsCount;				// pending packets count
	PPPOE_TIMER_ITEM					m_timerRecvItem;					// timer item
	PPPOE_TIMER_ITEM					m_timerPPPOEItem;					// timer item

	UCHAR								m_ucServiceName[256];				// service name
	UCHAR								m_ucACName[256];					// AC name

	USHORT								m_usServiceNameLen;					// service name len
	USHORT								m_usACNameLen;						// AC name len
	ULONG								m_bMustCheckACName;					// must check ac name match

	UCHAR								m_macPeer[6];						// peer mac address
	UCHAR								m_macSelf[6];						// self mac address

	USHORT								m_usSessionId;						// session id
	USHORT								m_usRetryCount;						// retry count
}CALL_INFO,*PCALL_INFO;

// table entry
typedef struct __tagHandleTableEntry
{
	ULONG								m_ulValid;							// valid
	PCALL_INFO							m_pCall;							// pCall
	HDRV_CALL							m_hdCall;							// handle							
}TABLE_ENTRY,*PTABLE_ENTRY;

// handle table
typedef struct __tagHandleTable
{
	PTABLE_ENTRY						m_pTableEntry;						// table entry
	ULONG								m_ulTableSize;						// size
	ULONG								m_ulValid;							// valid count
	ULONG								m_ulAllocatedSeq;					// allocated seq;					
}HANDLE_TABLE,*PHANDLE_TABLE;

#define PROVIDER_NOT_INITIALIZED							0x00000000
#define PROVIDER_INITIALIZED								0x00000001
#define PROVIDER_SHUTDOWNING								0x00000002
#define PROVIDER_FREEING									0x00000004
#define PROVIDER_SHUTDOWN_RETURN_PENDING					0x00000008

#define ADAPTER_NOT_INITIALIZED								0x00000000
#define ADAPTER_INITIALIZED									0x00000001
#define ADAPTER_HALTING										0x00000002
#define ADAPTER_FREEING										0x00000004

#define ADAPTER_IN_WRONG_STATE(pAdapter)					(!(pAdapter->m_ulAdapterFlags & ADAPTER_INITIALIZED) || \
															 pAdapter->m_ulAdapterFlags & ADAPTER_HALTING)

#define PROVIDER_IN_WRONG_STATE(pAdapter)					(!(pAdapter->m_ulProviderFlags & PROVIDER_INITIALIZED) || \
															 pAdapter->m_ulProviderFlags & PROVIDER_SHUTDOWNING)
// adapter
typedef struct __tagAdapter
{
	ULONG								m_ulSig;							// signature
	LONG								m_lRefCount;						// ref count
	LONG								m_lProviderRefCount;				// provider ref count
	ULONG								m_ulAdapterFlags;					// adapter flags
	ULONG								m_ulProviderFlags;					// provider flags
	NDIS_EVENT							m_evRemove;							// remove event
	NDIS_SPIN_LOCK						m_lockSelf;							// structure lock
	
	LONG								m_lSendPackets;						// sending packets
	PLINE_INFO*							m_pLinePtrArray;					// line ptr array
	PHANDLE_TABLE						m_pCallHandleTable;					// handle table
	ULONG								m_ulTotalLines;						// lines count
	ULONG								m_ulDeviceIdBase;					// device id base
	ULONG								m_ulMaxCallsPerClient;				// max call num per client
	ULONG								m_ulNumLineDevs;					// line devs
	ULONG								m_ulEndPoints;						// end points
	ULONG								m_ulMaxRetryTimes;					// retry times
	ULONG								m_ulSendTimeOut;					// send time out
	ULONG								m_ulRecvTimeOut;					// recv time out

	NDIS_WAN_INFO						m_wanInfo;							// wan info
	NDIS_HANDLE							m_hMiniportAdapter;					// miniport adapter handle _NDIS_MINIPORT_BLOCK

	UCHAR								m_ucServiceName[256];				// service name,server mode used only
	UCHAR								m_ucACName[256];					// AC name

	USHORT								m_usServiceNameLen;					// service name len
	USHORT								m_usACNameLen;						// AC name len
}ADAPTER,*PADAPTER;

struct __tagPPPOEWorkItem;
// work item param
typedef union __tagPPPOEWorkItemParam
{
	struct 
	{
		PVOID							m_pParam1;
		PVOID							m_pParam2;
		PVOID							m_pParam3;
		PVOID							m_pParam4;
	}CommonFormat;

	struct 
	{
		PBIND_CONTEXT					m_pBind;
		PPPPOE_PACKET					m_pPacket;
	}BroadcastFormat;

	struct 
	{
		PCALL_INFO						m_pCall;
	}FsmMakeFormat;

	struct 
	{
		__tagPPPOEWorkItem*				m_pFsmMakeCall;
		PCALL_INFO						m_pCall;
		PNDIS_TAPI_MAKE_CALL			m_pMakeCall;
	}MakeCallReEnumerateBindFormat;

	struct 
	{
		PLINE_INFO									m_pLine;
		PNDIS_TAPI_SET_DEFAULT_MEDIA_DETECTION		m_pDetection;
	}SetMediaDefaultDetectionFormat;

	struct 
	{
		PLINE_INFO						m_pLine;
	}TspiCloseFormat;
}PPPOE_WORK_ITEM_PARAM,*PPPPOE_WORK_ITEM_PARAM;

#define WORK_ITEM_LIVE						0x01
#define WORK_ITEM_DEAD						0x02
#define WORK_ITEM_FREE						0x03

// work item
typedef struct __tagPPPOEWorkItem
{
	NDIS_WORK_ITEM						m_ndisWorkItem;
	ULONG								m_ulState;
	PNPAGED_LOOKASIDE_LIST				m_pLookasideList;
	PPPOE_WORK_ITEM_PARAM				m_param;
	PVOID								m_pAdditionalParam;
	VOID								(*m_pDestructor)(__tagPPPOEWorkItem* pSelf);
	VOID								(*m_pRoutine)(__tagPPPOEWorkItem* pSelf,PPPPOE_WORK_ITEM_PARAM pParam,PVOID pAdditionalParam);
}PPPOE_WORK_ITEM,*PPPPOE_WORK_ITEM;

// protocol reserved
typedef struct __tagProtocolReserved
{
	PNDIS_WAN_PACKET					m_pWanPacket;
	PPPPOE_PACKET						m_pPPPOEPacket;
	PADAPTER							m_pAdapter;
}PROTOCOL_RESERVED,*PPROTOCOL_RESERVED;

// no need protect
extern NDIS_HANDLE g_hNdisWrapperHandle;
extern NDIS_HANDLE g_hProtocolHandle;
extern PADAPTER g_pAdapter;
extern NPAGED_LOOKASIDE_LIST g_lookasideWorkItem;
extern PPPOE_TIMER g_timer;

// protected by pool lock
extern PACKET_POOL g_packetPool;
extern BUFFER_POOL g_bufferPool;
extern NPAGED_LOOKASIDE_LIST g_lookasidePPPOEPacket;
extern NDIS_HANDLE g_hBufferPool;

// protected by lockBind
extern NDIS_SPIN_LOCK g_lockBind;
extern LIST_ENTRY g_ltBinds;
extern BOOLEAN g_bIsTimeToBind;

extern BOOLEAN g_bSetFilterAtBind;

// for main.cpp
extern "C"
{
	NTSTATUS DriverEntry(PDRIVER_OBJECT pDriver,PUNICODE_STRING pRegPath);
	VOID DriverUnload(PDRIVER_OBJECT pDriver);
}

// for miniport.cpp
extern "C"
{
	NDIS_STATUS miniportInitialize(PNDIS_STATUS openErrorStatus,PUINT pSelMediumIndex,PNDIS_MEDIUM mediumArray,
								   UINT mediumArraySize,NDIS_HANDLE miniportAdapterHandle,NDIS_HANDLE wrapperConfigurationContext);

	NDIS_STATUS miniportQueryInformation(PADAPTER pAdapter,NDIS_OID oid,PVOID pInformationBuffer,
										 ULONG ulBufferLength,PULONG pulBytesWritten,PULONG pulBytesNeeded);

	NDIS_STATUS miniportSetInformation(PADAPTER pAdapter,NDIS_OID oid,PVOID  pInbuf,ULONG ulBufLen,
									   PULONG pulBytesRead,PULONG pulBytesNeeded);

	VOID miniportHalt(PADAPTER pAdapter);

	NDIS_STATUS miniportReset(PBOOLEAN pbAddressingReset,NDIS_HANDLE pAdapter);

	NDIS_STATUS miniportWanSendPacketHandler(PADAPTER pAdapter,HDRV_CALL hCall,PNDIS_WAN_PACKET pWanPacket);

#ifdef NDIS51
	VOID miniportPnPEventNotify(PADAPTER pAdapter,NDIS_DEVICE_PNP_EVENT PnPEvent,PVOID pInfoBuffer,ULONG ulLength);

	VOID miniportShutdown(PADAPTER pAdapter);
#endif
}

// for protocol
extern "C"
{
	VOID protocolOpenAdapterComplete(PBIND_CONTEXT pBindContext,NDIS_STATUS status,NDIS_STATUS openErrorStatus);

	VOID protocolCloseAdapterComplete(PBIND_CONTEXT pBindContext,NDIS_STATUS status);

	VOID protocolSendComplete(PBIND_CONTEXT pBindContext,PNDIS_PACKET pPacket,NDIS_STATUS status);

	VOID protocolTransferDataComplete(PBIND_CONTEXT pBindContext,PNDIS_PACKET pPacket,NDIS_STATUS status,UINT uByteTransferred);

	VOID protocolResetComplete(PBIND_CONTEXT pBindContext,PNDIS_PACKET pPacket,NDIS_STATUS status);

	VOID protocolRequestComplete(PBIND_CONTEXT pBindContext,PNDIS_REQUEST pRequest,NDIS_STATUS status);

	VOID protocolReceiveComplete(PBIND_CONTEXT pBindContext);

	VOID protocolStatusComplete(PBIND_CONTEXT pBindContext);
	
	VOID protocolStatus(PBIND_CONTEXT pBindContext,NDIS_STATUS generalStatus,PVOID pStatusBuffer,UINT uStatusBufferSize);

	NDIS_STATUS protocolReceive(PBIND_CONTEXT pBindContext,NDIS_HANDLE MacReceiveContext,PVOID pHeaderBuffer,UINT uHeaderBufferSize,
								PVOID pLookAheadBuffer,UINT uLookaheadBufferSize,UINT uPacketSize);

	INT protocolReceivePacket(PBIND_CONTEXT pBindContext,PNDIS_PACKET pPacket);

	VOID protocolBindAdapter(PNDIS_STATUS pStatus,NDIS_HANDLE hBindContext,PNDIS_STRING pDeviceName,PVOID pSys1,PVOID pSys2);

	VOID protocolUnbindAdapter(OUT PNDIS_STATUS pStatus,PBIND_CONTEXT pBindContext,NDIS_HANDLE hUnbindContext);

	VOID protocolUnload();

⌨️ 快捷键说明

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