📄 stdafx.h
字号:
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 + -