windows-nt/Source/XPSP1/NT/admin/services/drizzle/newjob/caddress.h

63 lines
1.2 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
#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
);
};