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

📄 channel.h

📁 pppoe client
💻 H
字号:

//********************************************************************
//	日期:	2004/08/25 - 25:8:2004   13:40
//	名前:	tiamo
//	描述:	channel
//*********************************************************************

#pragma once

#define CHANNEL_SIG									MAKE_SIG('C','H','N','L')

#define CHANNEL_CLOSE								0x00000001						// before create vc
#define CHANNEL_OPEN								0x00000002						// after create vc
#define CHANNEL_ACTIVATING							0x00000003						// after make call
#define CHANNEL_ACTIVATED							0x00000004						// after activate vc
#define CHANNEL_DEACTIVATING						CHANNEL_ACTIVATING				// after close call

typedef struct __tagBindContext *PBIND_CONTEXT;

// channel
typedef struct __tagChannel
{
	ULONG											m_ulSig;						// sig
	LONG											m_lRefCount;					// ref
	LONG											m_lSapRefCount;					// sap ref count
	ULONG											m_ulState;						// state
	NDIS_SPIN_LOCK									m_lockSelf;						// lock
	
	ULONG											m_ulLineId;						// line id
	ULONG											m_ulLinkSpeed;					// speed
	ULONG											m_ulBearerMode;					// bearer mode
	ULONG											m_ulMediaMode;					// media mode
	NDIS_WAN_CO_GET_LINK_INFO						m_wanCoLinkInfo;				// wan link info
	NDIS_HANDLE										m_hNdisVcHandle;				// ndis vc handle
	NDIS_HANDLE										m_hNdisSapHandle;				// sap handle
	CO_AF_TAPI_SAP									m_coTapiSap;					// sap
	PCO_CALL_PARAMETERS								m_pOutParam;					// call params

	ULONG											m_ulFsmState;					// fsm state
	PPACKET											m_pLastPacket;					// last packet
	UCHAR											m_ucService[256];				// service name
	UCHAR											m_ucAC[256];					// ac name
	USHORT											m_usServiceLen;					// len
	USHORT											m_usACLen;
	UCHAR											m_macPeer[ETH_ADDR_LEN];		// mac address
	UCHAR											m_macSelf[ETH_ADDR_LEN];
	USHORT											m_usSessionId;					// session
	USHORT											m_usRetryCounts;				// retry counts
	ULONG											m_bRecvedTimerScheduled;		// timer already scheduled
	TIMER_ITEM										m_timerItemDiscovery;			// discovery timer
	TIMER_ITEM										m_timerItemSession;				// session timer

	LONG											m_lSendingPackets;				// sending packets
	LONG											m_lPendingRecvedPackets;		// count
	LONG											m_lPendingReturnPackets;		// pending return

	LIST_ENTRY										m_ltRecvedPacketsHead;			// recv packets
	PBIND_CONTEXT									m_pBindContext;					// bind context
}CHANNEL,*PCHANNEL;

extern "C"
{
	// create init channel <= DISPATCH_LEVEL
	PCHANNEL CreateInitializeChannel(ULONG ulLineId);

	// shutdown channel PASSIVE_LEVEL only
	VOID ShutdownChannel(PCHANNEL pChannel);

	// reference channel <= DISPATCH_LEVEL
	VOID ReferenceChannel(PCHANNEL pChannel,BOOLEAN bAcquireLook);

	// dereference channel <= DISPATCH_LEVEL
	VOID DereferenceChannel(PCHANNEL pChannel);

	// reference sap  <= DISPATCH_LEVEL
	VOID ReferenceSap(PCHANNEL pChannel,BOOLEAN bAcquireLook);

	// dereference sap <= DISPATCH_LEVEL
	VOID DereferenceSap(PCHANNEL pChannel);

	// add channel to bind <= DISPATCH_LEVEL
	VOID AddChannel2Bind(PCHANNEL pChannel,PBIND_CONTEXT pBind);

	// remove <= DISPATCH_LEVEL 
	VOID RemoveChannelFromBind(PCHANNEL pChannel,PBIND_CONTEXT pBind);

	// map packet to channel
	PCHANNEL MapWithoutSessionId2Channel(PPACKET pPacket);

	// map session to channel
	PCHANNEL MapSessionId2Channel(PPACKET pPacket);
}

⌨️ 快捷键说明

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