Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

62 lines
1.2 KiB

#pragma once
#include "winsock2.h"
#include <stllock.h>
class CIpAddressMonitor
/*
This is a class to monitor the number of active networks on the local machine.
It does so by using the Winsock 2.0 SIO_ADDRESS_LIST_CHANGE ioctl. Currently it
only monitors IP addresses, but it could monitor other networks that conform to
the Winsock model.
*/
{
public:
CIpAddressMonitor();
~CIpAddressMonitor();
typedef void (CALLBACK * LISTEN_CALLBACK_FN)( PVOID arg );
HRESULT
Listen(
LISTEN_CALLBACK_FN fn,
PVOID arg
);
void CancelListen();
bool IsListening();
long GetAddressCount();
protected:
CCritSec m_Mutex;
long m_AddressCount;
SOCKET m_ListenSocket;
OVERLAPPED m_Overlapped;
LISTEN_CALLBACK_FN m_CallbackFn;
PVOID m_CallbackArg;
//--------------------------------------------------------------------
HRESULT CreateListenSocket();
HRESULT UpdateAddressCount();
static void CALLBACK
ListenCompletionRoutine(
IN DWORD dwError,
IN DWORD cbTransferred,
IN LPWSAOVERLAPPED lpOverlapped,
IN DWORD dwFlags
);
};