📄 card.h
字号:
#endif
BOOLEAN m_IndicateReceiveDone;// TRUE if the driver needs to call
BOOLEAN m_VxdLoaded;
BOOLEAN m_IsInDoNextSend;
CQ m_Q; // Store NDIS packets buffers' pointers
CQ fidQ;
CSTACK m_IntStack;
BOOLEAN m_CardFirmwareErr;
//
// Array of configuration profiles.
//
STPROFILE *m_profiles;
//
// Number of available configuration profiles.
//
USHORT m_numProfiles;
//
// Index of the active profile.
//
USHORT m_activeProfileIndex;
//
// Points to the "active" profile in the m_profiles array. This is the profile that
// is stored in the card.
//
STPROFILE *m_activeProfile;
//
// Points to the "current" profile in the m_profiles array. This is not necessarily
// the profile stored in the card.
//
STPROFILE *m_currentProfile;
// BOOLEAN m_activeProfileSwitched;
//
// Global enable/disable flag for auto profile switching.
//
BOOLEAN m_autoConfigEnabled;
//
// Flag to temporarily disable auto profile switching.
//
BOOLEAN m_tempDisableAutoSwitch;
//
// BSSID list cache. Gets destroyed on a list scan, and rebuilt on the next request
// for the BSSID list. Subsequent requests for the list, return the cached copy.
//
NDIS_802_11_BSSID_LIST *bssid_list;
UINT bssid_list_count; // number of elements in the list.
UINT bssid_list_size; // size of the list (bytes).
//
// Forces init FW to read the card's stored config and use this as the default.
//
BOOLEAN m_readCardConfig;
//-- NDIS5
NDIS_SPIN_LOCK m_lock;
PNDIS_PACKET m_TxHead;
PNDIS_PACKET m_TxTail;
UINT m_NumPacketsQueued;
//Currently associated information
NDIS_802_11_MAC_ADDRESS m_BSSID;
NDIS_802_11_SSID m_SSID;
// - -------------- AMCC PCI card
BOOLEAN IsAMCC;
PUCHAR m_ContolRegMemBase;
BOOLEAN m_ContolRegRegistered;
//PUCHAR m_RadioMemBase;
//BOOLEAN m_RadioMemRegistered;
// ---- ----------- Softex stuff
BOOLEAN IsSoftexClient;
USHORT Softex_ClientHandle;
ULONG Softex_Flags;
USHORT Softex_Sktnum;
BOOLEAN Softex_Removed;
int SoftexRegistryPathLength;
PWSTR SoftexRegistryPath;
//
UINT m_MediaDisconnectDamper;
UINT m_MediaDisconnectDamperTick;
NDIS_STATUS m_MSenceStatus;
//
// Dampers used when switching among configuration profiles.
//
UINT m_AutoConfigActiveDamper;
UINT m_AutoConfigPassiveDamper;
UINT m_AutoConfigDamperTick;
STCAPS capabilities;
DBM_TABLE *dBmTable;
#if NDISVER == 5
void *m_pSwRfd;
D100_LIST_ENTRY RfdList;
UINT UsedRfdCount;
UINT NumRfd;
NDIS_HANDLE RxPktPool;
NDIS_HANDLE RxBufPool;
MP_MODE mp_enabled; // magic packet command enabled
#endif
BOOLEAN initComplete; //spb001
UINT m_UpdateLinkDamper; //spb004
BOOLEAN cancelTimer; //spb019
BOOLEAN wasFlashChecked; //spb023
BOOLEAN flashCard; //spb026
BOOLEAN cancelFlash; //spb027
#ifdef UNDER_CE
BOOLEAN bHalting;
#endif
//
}CARD, *PCARD;
#define PUSH(a) push(card->m_IntStack, a)
#define POP() pop(card->m_IntStack)
#define POPPEAK PopPeak(card->m_IntStack, a)
#define POPPEAK PopPeak(card->m_IntStack, a)
#define RESETSTACK() ResetStack(card->m_IntStack)
#ifdef INVALIDPACKETS
void Reader80211();
#endif
BOOLEAN baseCardConstruct(PCARD card);
void baseCardDestruct(PCARD card);
extern NDIS_STATUS cbResetCard(PBOOLEAN, NDIS_HANDLE );
extern ULONG GetRxHeader(PCARD card, PUCHAR);
extern void UpdateCounters(PCARD card);
extern void cbIsr( PBOOLEAN ,PBOOLEAN, NDIS_HANDLE);
extern void cbHandleInterrupt( PCARD card);
extern BOOLEAN cardConstruct(PCARD card);
extern void cardDestruct(PCARD card);
NDIS_STATUS cbSend( NDIS_HANDLE,PNDIS_PACKET Packet, UINT Flags);
VOID cbSendPackets(NDIS_HANDLE, PPNDIS_PACKET, UINT);
void ReleaseSendQ(PCARD card);
NDIS_STATUS
cbTransferData(
PNDIS_PACKET Pkt,
PUINT BytesTransferred,
NDIS_HANDLE Context,
NDIS_HANDLE MiniportReceiveContext,
UINT ByteOffset,
UINT BytesToTransfer
);
extern BOOLEAN InitHW(PCARD card);
extern BOOLEAN InitFW(PCARD card, BOOLEAN useCurrentConfig = FALSE);
extern BOOLEAN InitFW1(PCARD card, BOOLEAN useCurrentConfig = FALSE); //spb001
NDIS_STATUS
cbQueryInformation(
NDIS_HANDLE Context,
IN NDIS_OID Oid,
IN PVOID InfBuff,
IN ULONG InfBuffLen,
OUT PULONG BytesWritten,
OUT PULONG BytesNeeded
);
NDIS_STATUS
cbSetInformation(
NDIS_HANDLE Context,
IN NDIS_OID Oid,
IN PVOID InfBuff,
IN ULONG InfBuffLen,
OUT PULONG BytesRead,
OUT PULONG BytesNeeded
);
extern NDIS_STATUS
ExtendedOids(
PCARD card,
IN NDIS_OID Oid ,
IN PVOID InfBuff,
IN ULONG InfBuffLen,
OUT PULONG BytesWritten,
OUT PULONG BytesNeeded
);
inline
BOOLEAN
IsValidPacket(
PCARD card,
UCHAR Lookahead
)
{
return *(ULONG *)(Lookahead+6) || *(USHORT *)(card->m_Lookahead+10);
}
void
XmitDpc(
PCARD card
);
void
RcvDpc(
PCARD card
);
INDICATE_STATUS
IndicatePacket(
PCARD card
);
BOOLEAN
DoNextSend(
PCARD card,
PNDIS_PACKET Packet=NULL
);
BOOLEAN
CopyDownPacketPortUShort(
PCARD card,
PNDIS_PACKET Packet
);
BOOLEAN
CopyDownPacketPortUChar(
PCARD card,
PNDIS_PACKET Packet
);
void
CopyUpPacketUShort(
PCARD card,
PUCHAR,
UINT
);
BOOLEAN
InitDriver(
PCARD card,
PNDIS_STATUS OpenErrorStatus,
PUINT SelectedMediumIndex,
PNDIS_MEDIUM MediumArray,
UINT MediumArraySize,
NDIS_HANDLE MiniportAdapterHandle,
NDIS_HANDLE ConfigurationHandle
);
//spb023
BOOLEAN
CheckRev(
PCARD card
);
void
FlashImage(
PCARD card
);
BOOLEAN
GetDriverConfig(
PCARD card
);
BOOLEAN
RegisterAdapter(
PCARD card
);
BOOLEAN
RegisterInterrupt(
PCARD card
);
void
LogError(
PCARD card,
NDIS_ERROR_CODE,
const int
);
void
LogError(
IN NDIS_HANDLE adapterHandle,
IN NDIS_ERROR_CODE ErrorCode,
IN const int AiroCode
);
BOOLEAN
LoadVxd(
PCARD card
);
void
UnloadVxd(
PCARD card
);
void
GetExtendedRegistryParams(
PCARD card,
NDIS_HANDLE,
EXTENDED_PARAMS &
);
void
CardTimerCallback(
IN PVOID ,
PCARD,IN PVOID,
IN PVOID
);
void
AckPendingPackets(
PCARD card
);
BOOLEAN CheckCardFlashing (PCARD card,
NDIS_STATUS *status,
NDIS_OID Oid );
////////////////////////////////////////////////////////////////////////
inline
BOOLEAN
IsMyPacket(
PCARD card,
PUCHAR Lookahead
)
{
UINT result;
//ETH_COMPARE_NETWORK_ADDRESSES_EQ( card->m_Lookahead, card->m_StationAddress, &result);
ETH_COMPARE_NETWORK_ADDRESSES_EQ( Lookahead, card->m_StationAddress, &result);
return 0==result;
}
inline
BOOLEAN
CheckMulticast(
PCARD card,
PUCHAR Lookahead
)
{
UINT i;
UINT result=1;
// The received packet is a broadcast/multicast packet
// It is at least a multicast address. Check to see if
// it is a broadcast address.
if ( ETH_IS_BROADCAST( Lookahead )){
return card->m_PacketFilter & NDIS_PACKET_TYPE_BROADCAST ? TRUE : FALSE;
}
else // received a multicast packet
if ( card->m_PacketFilter & ( NDIS_PACKET_TYPE_ALL_MULTICAST | NDIS_PACKET_TYPE_MULTICAST)){
if ( card->m_PacketFilter & NDIS_PACKET_TYPE_ALL_MULTICAST )
return TRUE;
for (i = 0; result && i < card->m_CurMulticastSize ; i++){
ETH_COMPARE_NETWORK_ADDRESSES_EQ( Lookahead, card->m_Addresses[i], &result);
if( 0==result )
return TRUE;
}
}
return FALSE;
}
void setAutoConfigTimer (PCARD card, BOOLEAN includeMediaDisconnectTimer = FALSE);
#define F_PCMCIA 0x00000001
inline ADAPTER_READY(PCARD card)
{
#ifndef SOFTEX
return TRUE;
#else
BOOLEAN SoftexCardReady (PCARD card);
return !(card->Softex_Flags & F_PCMCIA) || SoftexCardReady(card);
#endif
}
////////////////////////////////////////////////////////////////////////
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -