📄 protocol.h
字号:
//********************************************************************
// 日期: 2004/08/25 - 25:8:2004 15:55
// 名前: tiamo
// 描述: protocol
//*********************************************************************
#pragma once
#define BIND_CONTEXT_SIG MAKE_SIG('B','I','N','D')
#define BIND_CONTEXT_LOWER_ADAPTER_OPENED 0x00000001
#define BIND_CONTEXT_MAC_ADDRESS_GOT 0x00000002
#define BIND_CONTEXT_LINK_SPPED_GOT 0x00000004
#define BIND_CONTEXT_MAX_FRAME_SIZE_GOT 0x00000008
#define BIND_CONTEXT_BINDED 0x00000010
#define BIND_CONTEXT_LOWER_ADAPTER_CLOSED 0x00000020
#define BIND_CONTEXT_PACKET_FILTER_SET 0x00000040
#define BIND_CONTEXT_PACKET_FILTER_SET_NEEDED 0x00000080
#define BIND_ALLOCATED 0x1
#define BIND_LOWER_MINIPORT_OPENED 0x2
#define BIND_LOWER_MINIPORT_CLOSING 0x3
#define BIND_LOWER_MINIPORT_CLOSED 0x4
#define BIND_ROMOVING 0x5
#define BIND_FREEING 0x6
// bind context
typedef struct __tagBindContext
{
ULONG m_ulSig; // signature
LONG m_lRefCount; // ref count
NDIS_EVENT m_evRemove; // remove event
NDIS_SPIN_LOCK m_lockSelf; // lock
LIST_ENTRY m_ltBindAnchor; // link list
ULONG m_ulFlags; // flags
ULONG m_ulBindState; // bind state
NDIS_HANDLE m_pOpenBlock; // open block
NDIS_STATUS m_statusCallback; // callback status
NDIS_EVENT m_evCallback; // callback event
ULONG m_ulLinkSpeed; // link speed
ULONG m_ulMaxFrameSize; // lower miniport max frame size
ULONG m_ulPacketFilter; // packet filter
NDIS_REQUEST m_ndisRequest; // request
UCHAR m_macAddress[ETH_ADDR_LEN]; // lower adapter's mac address
USHORT m_bProcessingRecvPacket; //
LIST_ENTRY m_ltRecvPacketHead; // received packet
LONG m_lPacketNeedReturn; // packet need return
}BIND_CONTEXT,*PBIND_CONTEXT;
// lock
extern NDIS_SPIN_LOCK g_lockBind;
// bind time
extern BOOLEAN g_bIsTimeToBind;
// set filter
extern BOOLEAN g_bSetFilterAtBind;
// list head
extern LIST_ENTRY g_ltBindsHead;
// public
extern "C"
{
// protocol open adapter complete PASSIVE_LEVEL
VOID protocolOpenAdapterComplete(PBIND_CONTEXT pBindContext,NDIS_STATUS status,NDIS_STATUS openErrorStatus);
// protocol close adapter complete PASSIVE_LEVEL
VOID protocolCloseAdapterComplete(PBIND_CONTEXT pBindContext,NDIS_STATUS status);
// protocol send complete DISPTACH_LEVEL
VOID protocolSendComplete(PBIND_CONTEXT pBindContext,PNDIS_PACKET pPacket,NDIS_STATUS status);
// protocol transfer data complete DISPTACH_LEVEL
VOID protocolTransferDataComplete(PBIND_CONTEXT pBindContext,PNDIS_PACKET pPacket,NDIS_STATUS status,UINT uByteTransferred);
// protocol request complete DISPATCH_LEVEL
VOID protocolRequestComplete(PBIND_CONTEXT pBindContext,PNDIS_REQUEST pRequest,NDIS_STATUS status);
// protocol receive complete DISPATCH_LEVEL
VOID protocolReceiveComplete(PBIND_CONTEXT pBindContext);
// protocol status complete DISPATCH_LEVEL
VOID protocolStatusComplete(PBIND_CONTEXT pBindContext);
// protocol status DISPATCH_LEVEL
VOID protocolStatus(PBIND_CONTEXT pBindContext,NDIS_STATUS generalStatus,PVOID pStatusBuffer,UINT uStatusBufferSize);
// protocol receive DISPATCH_LEVEL
NDIS_STATUS protocolReceive(PBIND_CONTEXT pBindContext,NDIS_HANDLE MacReceiveContext,PVOID pHeaderBuffer,UINT uHeaderBufferSize,PVOID pLookAheadBuffer,UINT uLookaheadBufferSize,UINT uPacketSize);
// protocol receive packet DISPATCH_LEVEL
INT protocolReceivePacket(PBIND_CONTEXT pBindContext,PNDIS_PACKET pPacket);
// protocol bind adapter PASSIVE_LEVEL
VOID protocolBindAdapter(PNDIS_STATUS pStatus,NDIS_HANDLE hBindContext,PNDIS_STRING pDeviceName,PVOID pSys1,PVOID pSys2);
// protocol unbind adapter PASSIVE_LEVEL
VOID protocolUnbindAdapter(OUT PNDIS_STATUS pStatus,PBIND_CONTEXT pBindContext,NDIS_HANDLE hUnbindContext);
// protocol pnp event PASSIVE_LEVEL
NDIS_STATUS protocolPnPEvent(PBIND_CONTEXT pBindContext,PNET_PNP_EVENT pNetPnPEvent);
// init <= DISPATCH_LEVEL
VOID InitializeBindSystem();
// shut down <= DISPATCH_LEVEL
VOID ShutdownBindSystem();
// create bind PASSIVE_LEVEL
PBIND_CONTEXT CreateBind();
// free bind <= DISPATCH_LEVEL
VOID FreeBind(PBIND_CONTEXT pBind);
// reference bind <= DISPATCH_LEVEL
VOID ReferenceBind(PBIND_CONTEXT pBind,BOOLEAN bAcquireSpinLock);
// dereference bind <= DISPATCH_LEVEL
VOID DereferenceBind(PBIND_CONTEXT pBind);
// query xxx PASSIVE_LEVEL
VOID QueryLowerMiniportForLinkSpeed(PBIND_CONTEXT pBind);
VOID QueryLowerMiniportForCurrentAddress(PBIND_CONTEXT pBind);
VOID QueryLowerMiniportForMaxFrameSize(PBIND_CONTEXT pBind);
VOID ChangeLowerMiniportPacketFilter(BOOLEAN bSetAtBind);
// set PASSIVE_LEVEL
VOID SetLowerMiniportPacketFilter(PBIND_CONTEXT pBind,BOOLEAN bSet);
// notify removal DISPATCH_LEVEL
VOID NotifyBindingRemoval(PBIND_CONTEXT pBind);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -