📄 car6k.hpp
字号:
ULONG m_BitrateKpbs;
USHORT m_ChannelList[32];
ULONG m_cChannelList;
// Boolean indicating whether m_SSID is valid and that
// we want to be associated with it.
boolean m_WantToBeConnected;
// SSID to which we are to associate
NDIS_802_11_SSID m_SSID;
// Boolean indicating we are currently trying to associate to m_SSID
boolean m_ConnectInProgress;
// Boolean indicating whether we are connected to a peer (e.g. AP)
boolean m_Connected;
// BSSID of the peer to which we are connected
BYTE m_PeerBSSID[ETHERNET_MAC_ADDRESS_LENGTH];
// Channel used to connect to the peer
USHORT m_ConnectedChannel;
boolean m_RadioDisabled;
USHORT m_beaconInterval;
NDIS_802_11_NETWORK_TYPE m_NetworkTypeInUse;
LONG m_TxPending;
// Type of BSSs for which we want INFO EVENTs indicated
WMI_BSS_FILTER m_WMIBssFilter;
NDIS_WORK_ITEM m_WorkItem;
NDIS_WORK_ITEM m_ResetPowerWorkItem;
NDIS_EVENT m_tgtReadyEvent;
NDIS_EVENT m_WMIReadyEvent;
NDIS_EVENT m_tgtStatsEvent;
// Variables used to support BSSID_LIST retrieval from WMI
NDIS_WLAN_BSSID_EX *m_pBSSIDList;
ULONG m_cbBSSIDList;
PULONG m_pcbBSSIDListNeeded;
ULONG m_BSSIDListNumberOfItems;
//Variables used to store the association information provided by WMI
BYTE m_AssocReqLen;
BYTE m_AssocRespLen;
BYTE m_BeaconIeLen;
PBYTE m_pAssocInfo;
USHORT m_ListenInterval;
#ifdef SUPPORT_WPA2
//Variables used to cache the PMKID set by supplicant
NDIS_802_11_PMKID *m_pPMKID;
#endif
// This index is used to rotate the Grpwise cipher type.
USHORT m_GrpwiseCryptoIndex;
CRYPTO_TYPE m_PairwiseCryptoType;
CRYPTO_TYPE m_GrpwiseCryptoType;
// MAC Address of the AP that we want to associate with,
// or 0xFFFFFFFFFFFF if we can associate with any AP
NDIS_802_11_MAC_ADDRESS m_DesiredAPBSSID;
BYTE m_Key[4][32];
ULONG m_cbKey[4];
ULONGLONG m_KeyRSC[4];
ULONG m_KeyIndex[4];
BYTE m_KeyUsage[4];
UINT m_NumDataEndpts;
UINT m_RegCode;
UCHAR m_TxPwr;
WLAN_STA_CONFIG m_Config;
NDIS_DEVICE_POWER_STATE m_PowerState;
NDIS_802_11_POWER_MODE m_80211_PowerMode;
ULONG m_ResumeWlanState;
DWORD m_LastSysState;
HANDLE m_PowerChangeEvent;
A_UINT32 m_TargetId;
public:
CAR6KMini();
~CAR6KMini();
void Init();
#ifdef NDIS_BUS_DRIVER
PVOID m_pBusDriverHandle;
#endif
// NDIS version used
BYTE m_NdisDriverMajorVersion;
BYTE m_NdisDriverMinorVersion;
NDIS_STATUS Initialize(IN NDIS_HANDLE MiniportAdapterHandle, IN NDIS_HANDLE pConfigHandle);
void Halt();
BOOLEAN CheckForHang();
NDIS_STATUS Reset(OUT PBOOLEAN pAddressingReset);
virtual void SendPackets(IN PPNDIS_PACKET PacketArray, IN UINT NumberOfPackets);
virtual void ReturnPacket(IN PNDIS_PACKET Packet);
virtual NDIS_STATUS SetInformation(IN NDIS_OID Oid, IN PVOID Buffer, IN ULONG cbBuffer, OUT PULONG pcbRead, OUT PULONG pcbNeeded);
virtual NDIS_STATUS QueryInformation(IN NDIS_OID Oid, OUT PVOID Buffer, IN ULONG cbBuffer, OUT PULONG pcbWritten, OUT PULONG pcbNeeded);
// OID_GEN Query Handlers
virtual PNDIS_OID GetSupportedOidList(OUT PNDIS_OID pOidBuffer, IN OUT PULONG pMaxOidsToAddToBuffer, IN OUT PULONG pTotalNumberOfSupportedOids);
virtual ULONG GetGenVendorDriverVersion();
virtual ULONG GetGenMacOptions();
virtual NDIS_HARDWARE_STATUS GetGenHardwareStatus();
virtual NDIS_MEDIA_STATE GetGenMediaConnectStatus();
virtual ULONG GetGenLinkSpeed();
virtual ULONG GetGenTransmitBufferSpace();
virtual ULONG GetGenReceiveBufferSpace();
virtual ULONG GetGenTransmitBlockSize();
virtual ULONG GetGenReceiveBlockSize();
virtual ULONG GetGenVendorId();
virtual const char * GetGenVendorDescription();
virtual USHORT GetGenDriverVersion();
virtual ULONG GetSupportedPacketTypes();
virtual ULONG GetGenXmitOk();
virtual ULONG GetGenRcvOk();
virtual ULONG GetGenXmitError();
virtual ULONG GetGenRcvError();
virtual ULONG GetGenRcvNoBuffer();
virtual void GetPnpCapabilities(NDIS_PNP_CAPABILITIES *);
virtual NDIS_STATUS QueryPnpPower(NDIS_DEVICE_POWER_STATE *);
// OID_802_3 Query Handlers
virtual BYTE * Get802_3PermanentAddress();
virtual BYTE * Get802_3CurrentAddress();
virtual ULONG Get802_3MacOptions();
virtual ULONG Get802_3RcvErrorAlignment();
virtual ULONG Get802_3XmitOneCollision();
virtual ULONG Get802_3XmitMoreCollision();
// OID_802_11 Query Handlers
virtual NDIS_STATUS Get802_11AssociatedAPBSSID(OUT NDIS_802_11_MAC_ADDRESS *);
virtual void Get802_11SSID(OUT NDIS_802_11_SSID *);
virtual void Get802_11NetworkTypesSupported(OUT NDIS_802_11_NETWORK_TYPE **, OUT PULONG pNumTypes);
virtual void Get802_11NetworkTypeInUse(OUT PNDIS_802_11_NETWORK_TYPE);
virtual NDIS_STATUS Get802_11TxPowerLevel(OUT NDIS_802_11_TX_POWER_LEVEL *);
virtual NDIS_STATUS Get802_11RSSI(OUT NDIS_802_11_RSSI *);
virtual NDIS_STATUS Get802_11RSSITrigger(OUT NDIS_802_11_RSSI *);
virtual void Get802_11InfrastructureMode(OUT NDIS_802_11_NETWORK_INFRASTRUCTURE *);
virtual NDIS_STATUS Get802_11FragmentationThreshold(OUT NDIS_802_11_FRAGMENTATION_THRESHOLD *pThreshold);
virtual NDIS_STATUS Get802_11RTSThreshold(OUT NDIS_802_11_RTS_THRESHOLD *pThreshold);
virtual NDIS_STATUS Get802_11NumberOfAntennas(OUT ULONG *pNumberOfAntennas);
virtual NDIS_STATUS Get802_11RxAntennaSelected(OUT NDIS_802_11_ANTENNA *pAntenna);
virtual NDIS_STATUS Get802_11TxAntennaSelected(OUT NDIS_802_11_ANTENNA *pAntenna);
virtual void Get802_11SupportedRates(OUT BYTE *Rates);
virtual NDIS_STATUS Get802_11DesiredRates(OUT NDIS_802_11_RATES *Rates);
virtual void Get802_11Configuration(OUT PNDIS_802_11_CONFIGURATION pConfiguration);
virtual NDIS_STATUS Get802_11Statistics(OUT PNDIS_802_11_STATISTICS pStatistics);
virtual NDIS_STATUS Get802_11PowerMode(OUT PNDIS_802_11_POWER_MODE pPowerMode);
virtual void Get802_11BSSIDList(OUT PNDIS_802_11_BSSID_LIST_EX pList, ULONG cbBuffer, PULONG pcbNeeded);
//#ifdef SUPPORT_WPA2
// virtual void Get802_11AuthenticationMode(OUT NDIS_802_11_AUTHENTICATION_MODE_WPA2 *pMode);
//#else
virtual void Get802_11AuthenticationMode(OUT NDIS_802_11_AUTHENTICATION_MODE *pMode);
//#endif
virtual NDIS_STATUS Get802_11PrivacyFilter(OUT PNDIS_802_11_PRIVACY_FILTER pFilter);
virtual void Get802_11EncryptionStatus(OUT PNDIS_802_11_ENCRYPTION_STATUS pStatus);
virtual NDIS_STATUS Get802_11AssociationInformation(OUT PNDIS_802_11_ASSOCIATION_INFORMATION pInfo, ULONG cbBuffer, PULONG pcbNeeded);
#ifdef SUPPORT_WPA2
virtual NDIS_STATUS Get802_11PMKID(OUT NDIS_802_11_PMKID *pPMKID, IN ULONG cbBuffer, OUT ULONG *pcbNeeded);
virtual NDIS_STATUS Get802_11Capability(OUT NDIS_802_11_CAPABILITY *pCap, IN ULONG cbBuffer, OUT ULONG *pcbNeeded);
#endif
A_STATUS ar6000_get_target_stats(void);
// OID_802_11 Set Handlers
virtual NDIS_STATUS SetPnpPower(NDIS_DEVICE_POWER_STATE *);
virtual NDIS_STATUS Set802_11AssociatedAPBSSID(IN NDIS_802_11_MAC_ADDRESS *);
virtual NDIS_STATUS Set802_11SSID(IN NDIS_802_11_SSID *);
virtual NDIS_STATUS Set802_11NetworkTypeInUse(IN NDIS_802_11_NETWORK_TYPE);
virtual NDIS_STATUS Set802_11TxPowerLevel(NDIS_802_11_TX_POWER_LEVEL);
virtual NDIS_STATUS Set802_11RSSITrigger(NDIS_802_11_RSSI);
virtual NDIS_STATUS Set802_11InfrastructureMode(NDIS_802_11_NETWORK_INFRASTRUCTURE);
virtual NDIS_STATUS Set802_11FragmentationThreshold(NDIS_802_11_FRAGMENTATION_THRESHOLD);
virtual NDIS_STATUS Set802_11RTSThreshold(NDIS_802_11_RTS_THRESHOLD);
virtual NDIS_STATUS Set802_11RxAntennaSelected(ULONG Antenna);
virtual NDIS_STATUS Set802_11TxAntennaSelected(ULONG Antenna);
virtual NDIS_STATUS Set802_11DesiredRates(NDIS_802_11_RATES *Rates);
virtual NDIS_STATUS Set802_11Configuration(IN NDIS_802_11_CONFIGURATION *pConfiguration);
virtual NDIS_STATUS Set802_11Disassociate();
virtual NDIS_STATUS Set802_11PowerMode(IN NDIS_802_11_POWER_MODE PowerMode);
virtual NDIS_STATUS Set802_11BSSIDListScan();
virtual NDIS_STATUS Set802_11PrivacyFilter(IN NDIS_802_11_PRIVACY_FILTER Filter);
virtual NDIS_STATUS Set802_11ReloadDefaults(IN NDIS_802_11_RELOAD_DEFAULTS);
//#ifdef SUPPORT_WPA2
// virtual NDIS_STATUS Set802_11AuthenticationMode(IN NDIS_802_11_AUTHENTICATION_MODE_WPA2 Mode);
//#else
virtual NDIS_STATUS Set802_11AuthenticationMode(IN NDIS_802_11_AUTHENTICATION_MODE Mode);
//#endif
virtual NDIS_STATUS Set802_11EncryptionStatus(IN NDIS_802_11_ENCRYPTION_STATUS EncryptionStatus);
virtual NDIS_STATUS Set802_11AddWEP(IN NDIS_802_11_WEP *pWEP);
virtual NDIS_STATUS Set802_11RemoveWEP(IN NDIS_802_11_KEY_INDEX);
virtual NDIS_STATUS Set802_11AddKey(IN NDIS_802_11_KEY *);
virtual NDIS_STATUS Set802_11RemoveKey(IN NDIS_802_11_REMOVE_KEY *);
virtual NDIS_STATUS Set802_11AssociationInformation(IN NDIS_802_11_ASSOCIATION_INFORMATION *pInfo, ULONG cbInfo);
#ifdef SUPPORT_WPA2
virtual NDIS_STATUS Set802_11PMKID(OUT NDIS_802_11_PMKID* pPMKID, IN ULONG cbBuffer);
#endif
virtual NDIS_STATUS Set802_11Test(IN NDIS_802_11_TEST *, IN ULONG cbBuffer);
//OID_CAR6K query Handlers
NDIS_STATUS GetPnpPower(ULONG *);
NDIS_STATUS GetResumeWlanState(ULONG *);
NDIS_STATUS GetFirmwareVersion(ULONG *);
//OID_CAR6K Set Handlers
NDIS_STATUS SetCAr6k802_11AuthAlg(ULONG);
NDIS_STATUS SetResumeWlanState(ULONG);
NDIS_STATUS SetCAr6kBmiDone(PVOID);
NDIS_STATUS SetCAr6kBmiReadMemory(BMI_READ_MEMORY_PARAM *);
NDIS_STATUS SetCAr6kBmiWriteMemory(BMI_WRITE_MEMORY_PARAM *);
NDIS_STATUS SetCAr6kBmiExecute(BMI_EXECUTE_PARAM *);
NDIS_STATUS SetCAr6kBmiSetAppStart(BMI_SET_APP_START_PARAM *);
NDIS_STATUS SetCAr6kBmiReadSocRegister(BMI_READ_SOC_REG_PARAM *);
NDIS_STATUS SetCAr6kBmiWriteSocRegister(BMI_WRITE_SOC_REG_PARAM *);
#ifdef HTC_RAW_INTERFACE
NDIS_STATUS SetCAr6kHtcRawOpen(void);
NDIS_STATUS SetCAr6kHtcRawClose(void);
NDIS_STATUS SetCAr6kHtcRawRead(HTC_RAW_READ_PARAM *);
NDIS_STATUS SetCAr6kHtcRawWrite(HTC_RAW_WRITE_PARAM *);
#endif
void TargetAvailableEventHandler(HTC_TARGET *pHTCTarget, HIF_DEVICE *pHIFDevice);
void TargetUnavailableEventHandler(HTC_TARGET *pHTCTarget);
A_STATUS RegisterEndpointEventHandlers(HTC_ENDPOINT_ID endPointId);
A_STATUS StartEndpoints();
void StopEndpoints();
A_STATUS configTargetParams();
A_UINT32 getResetPowerState();
// Parse Registry
NDIS_STATUS ParseRegistryParameters(NDIS_HANDLE ConfigHandle, WLAN_STA_CONFIG *pConfig);
A_STATUS configRegistryParameters();
void ResetPowerWorkItem();
void isMcForUs(MAC_ADDRESS *pAddr, BOOL *mcForUs);
private:
NDIS_STATUS TransmitBufferListAllocate();
PAR6K_TRANSMIT_BUFFER TransmitBufferListRemoveHead();
void TransmitBufferListInsertHead(PAR6K_TRANSMIT_BUFFER pBuffer);
PNDIS_PACKET TransmitNdisPacketListRemoveHead();
void TransmitNdisPacketListInsertTail(PNDIS_PACKET pBuffer);
NDIS_STATUS TransmitBufferBuild(PAR6K_TRANSMIT_BUFFER pBuffer, PNDIS_PACKET pPacket);
void SendNdisPacket(PNDIS_PACKET, PAR6K_TRANSMIT_BUFFER);
public:
void IndicateReceivePackets();
public:
void HTCBufferSentEvent(PVOID cookie);
void HTCControlSendCompleted(PVOID cookie);
void HTCDataSendCompleted(PVOID cookie);
void ReceiveWMIControlPacket(HTC_EVENT_INFO *evInfo);
void ReceiveWMIDataPacket(HTC_EVENT_INFO *evInfo);
void AllocateHTCPacketBuffers(HTC_ENDPOINT_ID eid, UINT numBuffers);
// WMI Wrappers
NDIS_STATUS SendWMIConnectCommand(IN NDIS_802_11_SSID *SSID);
NDIS_STATUS SendWMIDisconnectCommand();
// WMI Callback functions
void WMILinkQualityIndication(IN BYTE RSSI);
void WMIBitrateIndication(IN ULONG BitrateKbps);
void WMIChannelListIndication(IN USHORT *pChannelList, IN BYTE numChannels);
void WMIReadyIndication(IN PBYTE pMacAddress);
void WMIConnectIndication(IN USHORT Channel, IN PBYTE PeerBSSID,
IN USHORT listenInterval, IN BYTE assocReqLen,
IN BYTE assocRespLen, IN PBYTE assocInfo, IN BYTE beaconIeLen);
void WMIDisconnectIndication();
A_STATUS WMISendControlPacket(IN PVOID osbuf, IN HTC_ENDPOINT_ID endPointId);
void WMIBSSIDInfoAdd(IN bss_t *pWmiBss);
void WMIDsetOpenReq(IN UINT, IN UINT, IN UINT, IN UINT);
void WMIDsetDataReq(IN UINT, IN UINT, IN UINT, IN UINT, IN UINT, IN UINT);
void WMISetNumDataEndpts(IN UINT);
void WMIRegDomainEvent(IN UINT);
void WMINeighborReportEvent(IN UINT, IN WMI_NEIGHBOR_INFO *info);
void WMITxPwr(IN UCHAR);
void WMIMicErrEvent(A_UINT8 keyid, A_BOOL isMcast);
void WMITargetStatsEvent(WMI_TARGET_STATS *);
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -