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.
|
|
/********
* Ics APIs */
#ifndef _ICSMGR_H_
#define _ICSMGR_H_
#include <windows.h>
#include "icsapi.h"
// for IsIcsAvailable()
#define ICSMGR_ICSBOT_CREATED 0x0L
#define ICSMGR_ICSBOT_ALREADY_CREATED 0x1L
#define ICSMGR_ICSBOT_CREATION_FAILED 0x2L
/*
* ICSLAP_DIAL_STATE - copied from ICS API - error states for ICS connectivity */ typedef enum { ICSLAP_STARTING = 1, ICSLAP_CONNECTING = 2, ICSLAP_CONNECTED = 3, ICSLAP_DISCONNECTING = 4, ICSLAP_DISCONNECTED = 5, ICSLAP_STOPPED = 6, ICSLAP_PERMANENT = 7, ICSLAP_UNK_DIAL_STATE = 8, ICSLAP_CALLWAITING = 9, /* may want to pass back other caller's telno */ ICS_HOMENET_UNAVAILABLE = 1000, /* added by thomasje */ ICS_TIMEOUT = 5000 /* added by thomasje */ } ICS_DIAL_STATE;
// callback function prototype used to report connections in ICS
typedef VOID (CALLBACK*PFN_ICS_CONN_CALLBACK)(ICS_DIAL_STATE);
static BOOL bIsDialThreadAlive = FALSE; static BOOL bReducedCallback = TRUE; static ICS_DIAL_STATE eIcsDialState = ICS_HOMENET_UNAVAILABLE; static BOOL bIsBroadbandIcsAvailable = FALSE;
// thread functions to look for ICS and monitor incoming
// connection broadcast packets.
DWORD IcsEngine(LPVOID lpParam); DWORD WINAPI IcsDialStatusProc(LPVOID lpParam);
enum ICSSTATUS { ICS_IS_NOT_AVAILABLE = 0, ICS_IS_AVAILABLE = 1, ICS_ENGINE_NOT_COMPLETE = 1000, ICS_ENGINE_FAILED = 1001 };
// callback routine used to notify MSOBMAIN about ICS connection changes
VOID CALLBACK OnIcsConnectionStatus(ICS_DIAL_STATE dwIcsConnectionStatus);
class CIcsMgr {
public: CIcsMgr(); ~CIcsMgr();
DWORD CreateIcsBot(); DWORD CreateIcsDialMgr(); BOOL IsIcsAvailable(); BOOL IsCallbackUsed(); VOID TriggerIcsCallback(BOOL bStatus); ICS_DIAL_STATE GetIcsDialState () { return eIcsDialState; } VOID NotifyIcsMgr(UINT msg, WPARAM wparam, LPARAM lparam); BOOL IsIcsHostReachable(); DWORD RefreshIcsDialStatus();
private:
// these variables are presently unused.
// the handles are cleared in the class' destructor.
HANDLE m_hBotThread; DWORD m_dwBotThreadId;
HANDLE m_hDialThread; DWORD m_dwDialThreadId;
PFN_ICS_CONN_CALLBACK m_pfnIcsConn;
}; #endif
|