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

📄 txrxbase.cpp

📁 这个是无线网卡WirelessLAN 测试程序NDIS
💻 CPP
字号:
// TxRxBase.cpp: implementation of the CTxRxBase class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "TxRxBase.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CTxRxBase::CTxRxBase()
:m_ThreadRunning(0)
{
	ZeroMemory(&m_HookAdapter, sizeof(HookAdapter));
}

CTxRxBase::~CTxRxBase()
{
	m_ThreadRunning = 0;

	Sleep(100);
	
	if( m_HookAdapter.m_OverLapped.hEvent )
	{
		CloseHandle( m_HookAdapter.m_OverLapped.hEvent );
	}
}

BOOLEAN CTxRxBase::HP_UpdateAdapterCurrentAddress( PHookAdapter pAdapter )
{
	W32N_REQUEST   W32N_Request;
	NDIS_STATUS      nNdisStatus;

	//
	// Get Link Address, If Necessary
	//

	W32N_Request.NdisRequest.RequestType = NdisRequestQueryInformation;

    W32N_Request.NdisRequest.DATA.QUERY_INFORMATION.InformationBuffer = pAdapter->m_CurrentAddress;
    W32N_Request.NdisRequest.DATA.QUERY_INFORMATION.InformationBufferLength = 32;
    W32N_Request.NdisRequest.DATA.QUERY_INFORMATION.BytesWritten = 0;
    W32N_Request.NdisRequest.DATA.QUERY_INFORMATION.BytesNeeded = 0;

    W32N_Request.NdisRequest.DATA.QUERY_INFORMATION.Oid = OID_802_3_CURRENT_ADDRESS;

	nNdisStatus = W32N_MakeNdisRequest(
                     pAdapter->m_hDevice,
                     &W32N_Request,
                     &pAdapter->m_OverLapped,
                     TRUE               // Synchronous
                     );
	
	if( nNdisStatus )
	{
         return( FALSE );
    }

	return TRUE;
}

BOOLEAN CTxRxBase::HP_SetPacketFilter( PHookAdapter pAdapter, ULONG nPacketFilter )
{
	W32N_REQUEST   W32N_Request;
	NDIS_STATUS    nNdisStatus;

	W32N_Request.NdisRequest.RequestType = NdisRequestSetInformation;

	W32N_Request.NdisRequest.DATA.SET_INFORMATION.Oid = OID_GEN_CURRENT_PACKET_FILTER;
	W32N_Request.NdisRequest.DATA.SET_INFORMATION.InformationBuffer = &nPacketFilter;
	W32N_Request.NdisRequest.DATA.SET_INFORMATION.InformationBufferLength = sizeof( ULONG );
	W32N_Request.NdisRequest.DATA.SET_INFORMATION.BytesRead = 0;
	W32N_Request.NdisRequest.DATA.SET_INFORMATION.BytesNeeded = 0;

	nNdisStatus = W32N_MakeNdisRequest(
                     pAdapter->m_hDevice,
                     &W32N_Request,
                     &pAdapter->m_OverLapped,
                     TRUE      // Synchronous
                     );

	if( nNdisStatus )
	{
		return( FALSE );
	}

	return( TRUE );
}

bool CTxRxBase::Create(HANDLE hDevice)
{
	if (!hDevice) return FALSE;
	
	this->m_HookAdapter.m_hDevice = hDevice;
	this->m_AdapterInfo.hNICAdapterDevice= hDevice;

	m_HookAdapter.m_OverLapped.hEvent = CreateEvent(
                           NULL,      // Security Attributes
                           FALSE,   // Auto-Reset
                           FALSE,   // Initial State Signaled
                           NULL      // Event-object Name
                           );
	if( !m_HookAdapter.m_OverLapped.hEvent )
	{
		return FALSE;
	}
      
	ResetEvent( m_HookAdapter.m_OverLapped.hEvent );

	HP_UpdateAdapterCurrentAddress(&m_HookAdapter);

	W32N_DisableLoopback(
                     m_HookAdapter.m_hDevice,
                     MSrcAddr + 0,        // Offset Of Source Address Into Packet
                     ETHER_ADDR_LENGTH,   // Length Of Address
                     m_HookAdapter.m_CurrentAddress    // Address Byte Bytes
                     );

	return TRUE;
}


⌨️ 快捷键说明

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