Вернуться к статье
Листинг 1. Классы для загрузки NAL.
class CDllHelper
{
public:
HINSTANCE m_hInstance;
BOOL DoFree( void );
BOOL DoInitialize( LPCTSTR lpszModuleName );
CDllHelper( LPCTSTR lpszModuleName = NULL );
virtual ~CDllHelper();
private:
CString csModuleName;
};
CDllHelper:: CDllHelper( LPCTSTR lpszModuleName )
{
m_hInstance = NULL;
csModuleName = «»;
if(lpszModuleName != NULL )
DoInitialize( lpszModuleName );
}
CDllHelper::~CDllHelper()
{
DoFree();
}
BOOL CDllHelper::DoInitialize(LPCTSTR lpszModuleName)
{
BOOL bRetVal = FALSE;
DoFree();
if( lpszModuleName != NULL )
{
m_hInstance = LoadLibrary( lpszModuleName );
if( m_hInstance != NULL )
{
csModuleName = lpszModuleName;
bRetVal = TRUE;
}
}
return bRetVal;
}
BOOL CDllHelper::DoFree()
{
BOOL bRetVal = FALSE;
if( m_hInstance != NULL )
{
FreeLibrary( m_hInstance );
m_hInstance = NULL;
csModuleName = «»;
bRetVal = TRUE;
}
return bRetVal;
}
Листинг 2. Класс для работы с NAL.
class CNal : public CDllHelper
{
public:
BOOL Initialize( void );
CNal();
virtual ~CNal();
DWORD EnumNetworks( void );
LPNETWORKINFO GetNetworkInfo(DWORD NetworkID);
HNETWORK OpenNetwork(DWORD NetworkID, HPASSWORD hPassword, NETWORKPROC lpNetworkProc,
LPVOID lpUserContext, LPSTATISTICSPARAM lpStatisticsParam );
DWORD CloseNetwork(HNETWORK hNetwork, DWORD CloseFlags);
DWORD StartCapturing(HNETWORK hNetwork, HBUFFER hBuffer);
DWORD StopCapturing(HNETWORK hNetwork);
DWORD ContinueCapturing(HNETWORK hNetwork);
DWORD PauseCapturing(HNETWORK hNetwork);
DWORD SetNetworkFilter(HNETWORK hNetwork, LPCAPTUREFILTER lpCaptureFilter, HBUFFER hBuffer);
DWORD GetBufferTotalFramesCaptured(HBUFFER hBuffer);
LPSYSTEMTIME GetBufferTimeStamp(HBUFFER hBuffer, LPSYSTEMTIME SystemTime);
LPFRAME GetNetworkFrame(HBUFFER hBuffer, DWORD FrameNumber);
HBUFFER AllocNetworkBuffer(DWORD NetworkID, DWORD BufferSize);
HBUFFER FreeNetworkBuffer(HBUFFER hBuffer);
};
Вернуться к статье
Листинг 3. Запуск трассировки.
BOOL CRTNetworkAnalizerDlg::StartTrace( void )
{
BOOL bRetVal = FALSE;
HPASSWORD hPassword = NULL;
hPassword = m_bhsupp.CreatePassword(«»);
m_hNetwork = m_nal.OpenNetwork( GetNetworkID(),hPassword,
&CallBackProc,(LPVOID)1,&m_StatisticsParam );
if( m_hNetwork != NULL )
{
m_hBuffer = m_nal.AllocNetworkBuffer( GetNetworkID(),BUFFERSIZE
* BUFFER_FACTOR );
if( m_hBuffer != NULL )
{
memset( &m_filter,0,sizeof(CAPTUREFILTER) );
m_filter.FilterFlags = CAPTUREFILTER_FLAGS_INCLUDE_ALL
_SAPS | CAPTUREFILTER_FLAGS_INCLUDE_ALL_ETYPES;
m_nal.SetNetworkFilter( m_hNetwork,&m_filter,m_hBuffer );
m_nal.StartCapturing( m_hNetwork,m_hBuffer );
rt_StartTimer();
bRetVal = TRUE;
}
}
return bRetVal;
}
Вернуться к статье