1670 lines
50 KiB
C++
1670 lines
50 KiB
C++
/*++
|
|
|
|
Copyright (c) 1999 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
config.cpp
|
|
|
|
Abstract:
|
|
|
|
TAPI Service Provider functions related to tsp config.
|
|
|
|
TSPI_providerConfig
|
|
|
|
TUISPI_providerConfig
|
|
|
|
Author:
|
|
Nikhil Bobde (NikhilB)
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
|
|
//
|
|
// Include files
|
|
//
|
|
|
|
|
|
#include "globals.h"
|
|
#include "line.h"
|
|
#include "config.h"
|
|
#include "ras.h"
|
|
#include "q931obj.h"
|
|
|
|
extern RAS_CLIENT g_RasClient;
|
|
extern Q931_LISTENER Q931Listener;
|
|
|
|
TUISPIDLLCALLBACK g_pfnUIDLLCallback = NULL;
|
|
|
|
typedef struct _H323_DIALOG_DATA
|
|
{
|
|
DWORD dwRegState;
|
|
WORD wListenPort;
|
|
|
|
} H323_DIALOG_DATA, *PH323_DIALOG_DATA;
|
|
|
|
//
|
|
// Public procedures
|
|
//
|
|
|
|
|
|
INT_PTR
|
|
CALLBACK
|
|
ProviderConfigDlgProc(
|
|
HWND hDlg,
|
|
UINT uMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
)
|
|
{
|
|
HKEY hKey;
|
|
LONG lStatus;
|
|
DWORD dwValue;
|
|
DWORD dwValueSize;
|
|
DWORD dwValueType;
|
|
DWORD dwGKEnabled;
|
|
LPTSTR pszValue;
|
|
TCHAR szAddr[H323_MAXPATHNAMELEN+1];
|
|
char szValue[H323_MAXPATHNAMELEN+1];
|
|
TCHAR szErrorMsg[H323_MAXPATHNAMELEN];
|
|
H323_DIALOG_DATA DialogData;
|
|
DWORD dwTimeoutValue;
|
|
DWORD dwPortValue;
|
|
|
|
static const DWORD IDD_GATEWAY_HelpIDs[]=
|
|
{
|
|
IDC_GATEWAY_GROUP, IDH_H323SP_USE_GATEWAY, // group
|
|
IDC_USEGATEWAY, IDH_H323SP_USE_GATEWAY, // checkbox
|
|
IDC_H323_GATEWAY, IDH_H323SP_USE_GATEWAY_COMPUTER, // edit box
|
|
IDC_PROXY_GROUP, IDH_H323SP_USE_PROXY, // group
|
|
IDC_USEPROXY, IDH_H323SP_USE_PROXY, // checkbox
|
|
IDC_H323_PROXY, IDH_H323SP_USE_PROXY_COMPUTER, // edit box
|
|
|
|
IDC_GK_GROUP, IDH_H323SP_GK_GROUP,
|
|
|
|
IDC_H323_GK, IDH_H323SP_GK,
|
|
IDC_H323_GK_PHONE, IDH_H323SP_GK_PHONE,
|
|
IDC_H323_GK_ACCT, IDH_H323SP_GK_ACCT,
|
|
|
|
IDC_USEGK, IDH_H323SP_USEGK,
|
|
IDC_USEGK_PHONE, IDH_H323SP_USEGK_PHONE,
|
|
IDC_USEGK_ACCT, IDH_H323SP_USEGK_ACCT,
|
|
IDC_REGSTATE, IDH_H323SP_REGSTATE,
|
|
IDUPDATE, IDH_H323SP_UPDATE_REGISTRATION_STATE,
|
|
|
|
IDC_CC_GROUP, IDH_H323SP_CC_GROUP,
|
|
IDC_H323_CALL_TIMEOUT, IDH_H323SP_CALL_TIMEOUT,
|
|
IDC_STATIC1, IDH_H323SP_CALL_TIMEOUT,
|
|
IDC_H323_CALL_PORT, IDH_H323SP_CALL_PORT,
|
|
IDC_STATIC2, IDH_H323SP_CALL_PORT,
|
|
IDC_LISTENPORT, IDH_H323SP_CURRENT_LISTENPORT,
|
|
IDC_STATIC3, IDH_H323SP_CURRENT_LISTENPORT,
|
|
IDUPDATE_PORT, IDH_H323SP_UPDATE_PORT,
|
|
|
|
IDC_STATIC, IDH_NOHELP, // graphic(s)
|
|
0, 0
|
|
};
|
|
|
|
// decode
|
|
switch (uMsg)
|
|
{
|
|
case WM_HELP:
|
|
|
|
// F1 key or the "?" button is pressed
|
|
(void) WinHelp(
|
|
(HWND)(((LPHELPINFO) lParam)->hItemHandle),
|
|
H323SP_HELP_FILE,
|
|
HELP_WM_HELP,
|
|
(DWORD_PTR) (LPVOID)IDD_GATEWAY_HelpIDs
|
|
);
|
|
|
|
break;
|
|
|
|
case WM_CONTEXTMENU:
|
|
|
|
// Right-mouse click on a dialog control
|
|
(void) WinHelp(
|
|
(HWND) wParam,
|
|
H323SP_HELP_FILE,
|
|
HELP_CONTEXTMENU,
|
|
(DWORD_PTR) (LPVOID) IDD_GATEWAY_HelpIDs
|
|
);
|
|
|
|
break;
|
|
|
|
case WM_INITDIALOG:
|
|
|
|
lStatus = (*g_pfnUIDLLCallback)(
|
|
g_dwPermanentProviderID,
|
|
TUISPIDLL_OBJECT_PROVIDERID,
|
|
(LPVOID)&DialogData,
|
|
sizeof(DialogData) );
|
|
|
|
// validate status
|
|
if( lStatus == NOERROR )
|
|
{
|
|
if( DialogData.dwRegState == RAS_REGISTER_STATE_REGISTERED )
|
|
{
|
|
// load status string
|
|
LoadString(g_hInstance,
|
|
IDS_REGISTERED,
|
|
szErrorMsg,
|
|
H323_MAXPATHNAMELEN
|
|
);
|
|
|
|
SetDlgItemText( hDlg, IDC_REGSTATE, szErrorMsg );
|
|
}
|
|
else if( DialogData.dwRegState == RAS_REGISTER_STATE_RRQSENT )
|
|
{
|
|
// load status string
|
|
LoadString(g_hInstance,
|
|
IDS_REGISTRATION_INPROGRESS,
|
|
szErrorMsg,
|
|
H323_MAXPATHNAMELEN
|
|
);
|
|
|
|
SetDlgItemText( hDlg, IDC_REGSTATE, szErrorMsg );
|
|
}
|
|
else
|
|
{
|
|
// load status string
|
|
LoadString(g_hInstance,
|
|
IDS_NOT_REGISTERED,
|
|
szErrorMsg,
|
|
H323_MAXPATHNAMELEN
|
|
);
|
|
|
|
SetDlgItemText( hDlg, IDC_REGSTATE, szErrorMsg );
|
|
}
|
|
|
|
if( DialogData.wListenPort != 0 )
|
|
{
|
|
SetDlgItemInt( hDlg, IDC_LISTENPORT, DialogData.wListenPort,
|
|
FALSE );
|
|
}
|
|
else
|
|
{
|
|
// load status string
|
|
LoadString( g_hInstance,
|
|
IDS_NONE,
|
|
szErrorMsg,
|
|
H323_MAXPATHNAMELEN
|
|
);
|
|
|
|
SetDlgItemText( hDlg, IDC_LISTENPORT, szErrorMsg );
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
H323DBG(( DEBUG_LEVEL_ERROR,
|
|
"error 0x%08lx reading dialog data.\n", lStatus ));
|
|
|
|
// load status string
|
|
LoadString( g_hInstance,
|
|
IDS_NOT_REGISTERED,
|
|
szErrorMsg,
|
|
H323_MAXPATHNAMELEN
|
|
);
|
|
|
|
SetDlgItemText( hDlg, IDC_REGSTATE, szErrorMsg );
|
|
|
|
// load status string
|
|
LoadString( g_hInstance,
|
|
IDS_NONE,
|
|
szErrorMsg,
|
|
H323_MAXPATHNAMELEN
|
|
);
|
|
|
|
SetDlgItemText( hDlg, IDC_LISTENPORT, szErrorMsg );
|
|
}
|
|
|
|
// open registry subkey
|
|
lStatus = RegOpenKeyEx(
|
|
HKEY_LOCAL_MACHINE,
|
|
H323_REGKEY_ROOT,
|
|
0,
|
|
KEY_READ,
|
|
&hKey
|
|
);
|
|
|
|
// validate return code
|
|
if (lStatus != ERROR_SUCCESS)
|
|
{
|
|
H323DBG(( DEBUG_LEVEL_WARNING,
|
|
"error 0x%08lx opening tsp registry key.", lStatus ));
|
|
|
|
// load error string
|
|
LoadString(g_hInstance,
|
|
IDS_REGOPENKEY,
|
|
szErrorMsg,
|
|
H323_MAXPATHNAMELEN
|
|
);
|
|
|
|
// pop up error dialog
|
|
MessageBox(hDlg,szErrorMsg,NULL,MB_OK);
|
|
|
|
// stop dialog
|
|
EndDialog(hDlg, 0);
|
|
|
|
break;
|
|
}
|
|
|
|
// initialize value name
|
|
pszValue = H323_REGVAL_Q931ALERTINGTIMEOUT;
|
|
|
|
// initialize type
|
|
dwValueType = REG_DWORD;
|
|
dwValueSize = sizeof(DWORD);
|
|
|
|
// query for registry value
|
|
lStatus = RegQueryValueEx(
|
|
hKey,
|
|
pszValue,
|
|
NULL,
|
|
&dwValueType,
|
|
(LPBYTE)&dwValue,
|
|
&dwValueSize
|
|
);
|
|
|
|
// validate return code
|
|
if( lStatus == ERROR_SUCCESS )
|
|
{
|
|
if( (dwValue >= 30000) && (dwValue <= CALL_ALERTING_TIMEOUT) )
|
|
{
|
|
SetDlgItemInt( hDlg, IDC_H323_CALL_TIMEOUT, dwValue, FALSE );
|
|
}
|
|
}
|
|
else
|
|
{
|
|
SetDlgItemInt( hDlg, IDC_H323_CALL_TIMEOUT, CALL_ALERTING_TIMEOUT,
|
|
FALSE );
|
|
}
|
|
|
|
// initialize value name
|
|
pszValue = H323_REGVAL_Q931LISTENPORT;
|
|
|
|
// initialize type
|
|
dwValueType = REG_DWORD;
|
|
dwValueSize = sizeof(DWORD);
|
|
|
|
// query for registry value
|
|
lStatus = RegQueryValueEx(
|
|
hKey,
|
|
pszValue,
|
|
NULL,
|
|
&dwValueType,
|
|
(LPBYTE)&dwValue,
|
|
&dwValueSize
|
|
);
|
|
|
|
// validate return code
|
|
if( lStatus == ERROR_SUCCESS )
|
|
{
|
|
if( (dwValue >= 1000) && (dwValue <= 32000) )
|
|
{
|
|
SetDlgItemInt( hDlg, IDC_H323_CALL_PORT, dwValue, FALSE );
|
|
}
|
|
}
|
|
else
|
|
{
|
|
SetDlgItemInt( hDlg, IDC_H323_CALL_PORT, Q931_CALL_PORT, FALSE );
|
|
}
|
|
|
|
// initialize value name
|
|
pszValue = H323_REGVAL_GATEWAYADDR;
|
|
|
|
// initialize type
|
|
dwValueType = REG_SZ;
|
|
dwValueSize = sizeof(szAddr);
|
|
|
|
// query for registry value
|
|
lStatus = RegQueryValueEx(
|
|
hKey,
|
|
pszValue,
|
|
NULL,
|
|
&dwValueType,
|
|
(LPBYTE)szAddr,
|
|
&dwValueSize
|
|
);
|
|
|
|
// validate return code
|
|
if( lStatus == ERROR_SUCCESS )
|
|
{
|
|
// display gateway address
|
|
SetDlgItemText(hDlg,IDC_H323_GATEWAY,szAddr);
|
|
}
|
|
|
|
// initialize value name
|
|
pszValue = H323_REGVAL_GATEWAYENABLED;
|
|
|
|
// initialize type
|
|
dwValueType = REG_DWORD;
|
|
dwValueSize = sizeof(DWORD);
|
|
|
|
// query for registry value
|
|
lStatus = RegQueryValueEx(
|
|
hKey,
|
|
pszValue,
|
|
NULL,
|
|
&dwValueType,
|
|
(LPBYTE)&dwValue,
|
|
&dwValueSize
|
|
);
|
|
|
|
// validate return code
|
|
if (lStatus != ERROR_SUCCESS)
|
|
{
|
|
// default
|
|
dwValue = 0;
|
|
}
|
|
|
|
// enable check box
|
|
SendDlgItemMessage(
|
|
hDlg,
|
|
IDC_USEGATEWAY,
|
|
BM_SETCHECK,
|
|
(dwValue != 0),
|
|
0
|
|
);
|
|
|
|
// display string
|
|
EnableWindow( GetDlgItem(hDlg,IDC_H323_GATEWAY), (dwValue != 0) );
|
|
|
|
// initialize value name
|
|
pszValue = H323_REGVAL_PROXYADDR;
|
|
|
|
// initialize type
|
|
dwValueType = REG_SZ;
|
|
dwValueSize = sizeof(szAddr);
|
|
|
|
// query for registry value
|
|
lStatus = RegQueryValueEx(
|
|
hKey,
|
|
pszValue,
|
|
NULL,
|
|
&dwValueType,
|
|
(LPBYTE)szAddr,
|
|
&dwValueSize
|
|
);
|
|
|
|
// validate return code
|
|
if (lStatus == ERROR_SUCCESS)
|
|
{
|
|
// display gateway address
|
|
SetDlgItemText(hDlg,IDC_H323_PROXY,szAddr);
|
|
}
|
|
|
|
// initialize value name
|
|
pszValue = H323_REGVAL_PROXYENABLED;
|
|
|
|
// initialize type
|
|
dwValueType = REG_DWORD;
|
|
dwValueSize = sizeof(DWORD);
|
|
|
|
// query for registry value
|
|
lStatus = RegQueryValueEx(
|
|
hKey,
|
|
pszValue,
|
|
NULL,
|
|
&dwValueType,
|
|
(LPBYTE)&dwValue,
|
|
&dwValueSize
|
|
);
|
|
|
|
// validate return code
|
|
if (lStatus != ERROR_SUCCESS)
|
|
{
|
|
// default
|
|
dwValue = 0;
|
|
}
|
|
|
|
// enable check box
|
|
SendDlgItemMessage(
|
|
hDlg,
|
|
IDC_USEPROXY,
|
|
BM_SETCHECK,
|
|
(dwValue != 0),
|
|
0
|
|
);
|
|
|
|
// display string
|
|
EnableWindow(
|
|
GetDlgItem(hDlg,IDC_H323_PROXY),
|
|
(dwValue != 0) );
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
//GK log on phone number
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
// initialize value name
|
|
pszValue = H323_REGVAL_GKLOGON_PHONE;
|
|
|
|
// initialize type
|
|
dwValueType = REG_SZ;
|
|
dwValueSize = sizeof(szAddr);
|
|
|
|
// query for registry value
|
|
lStatus = RegQueryValueEx(
|
|
hKey,
|
|
pszValue,
|
|
NULL,
|
|
&dwValueType,
|
|
(LPBYTE)szAddr,
|
|
&dwValueSize );
|
|
|
|
// validate return code
|
|
if (lStatus == ERROR_SUCCESS)
|
|
{
|
|
// display gateway address
|
|
SetDlgItemText(hDlg,IDC_H323_GK_PHONE,szAddr);
|
|
}
|
|
|
|
// initialize value name
|
|
pszValue = H323_REGVAL_GKLOGON_PHONEENABLED;
|
|
|
|
// initialize type
|
|
dwValueType = REG_DWORD;
|
|
dwValueSize = sizeof(DWORD);
|
|
|
|
// query for registry value
|
|
lStatus = RegQueryValueEx(
|
|
hKey,
|
|
pszValue,
|
|
NULL,
|
|
&dwValueType,
|
|
(LPBYTE)&dwValue,
|
|
&dwValueSize );
|
|
|
|
// validate return code
|
|
if( lStatus != ERROR_SUCCESS )
|
|
{
|
|
// default
|
|
dwValue = 0;
|
|
}
|
|
|
|
// enable check box
|
|
SendDlgItemMessage(
|
|
hDlg,
|
|
IDC_USEGK_PHONE,
|
|
BM_SETCHECK,
|
|
(dwValue != 0),
|
|
0 );
|
|
|
|
// display string
|
|
EnableWindow( GetDlgItem(hDlg,IDC_H323_GK_PHONE), (dwValue != 0) );
|
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
//GK log on account name
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
// initialize value name
|
|
pszValue = H323_REGVAL_GKLOGON_ACCOUNT;
|
|
|
|
// initialize type
|
|
dwValueType = REG_SZ;
|
|
dwValueSize = sizeof(szAddr);
|
|
|
|
// query for registry value
|
|
lStatus = RegQueryValueEx(
|
|
hKey,
|
|
pszValue,
|
|
NULL,
|
|
&dwValueType,
|
|
(LPBYTE)szAddr,
|
|
&dwValueSize );
|
|
|
|
// validate return code
|
|
if (lStatus == ERROR_SUCCESS)
|
|
{
|
|
// display gateway address
|
|
SetDlgItemText(hDlg,IDC_H323_GK_ACCT,szAddr);
|
|
}
|
|
|
|
// initialize value name
|
|
pszValue = H323_REGVAL_GKLOGON_ACCOUNTENABLED;
|
|
|
|
// initialize type
|
|
dwValueType = REG_DWORD;
|
|
dwValueSize = sizeof(DWORD);
|
|
|
|
// query for registry value
|
|
lStatus = RegQueryValueEx(
|
|
hKey,
|
|
pszValue,
|
|
NULL,
|
|
&dwValueType,
|
|
(LPBYTE)&dwValue,
|
|
&dwValueSize
|
|
);
|
|
|
|
// validate return code
|
|
if (lStatus != ERROR_SUCCESS)
|
|
{
|
|
// default
|
|
dwValue = 0;
|
|
}
|
|
|
|
// enable check box
|
|
SendDlgItemMessage(
|
|
hDlg,
|
|
IDC_USEGK_ACCT,
|
|
BM_SETCHECK,
|
|
(dwValue != 0),
|
|
0
|
|
);
|
|
|
|
// display string
|
|
EnableWindow(
|
|
GetDlgItem(hDlg,IDC_H323_GK_ACCT),
|
|
(dwValue != 0)
|
|
);
|
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
//GK address
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
// initialize value name
|
|
pszValue = H323_REGVAL_GKADDR;
|
|
|
|
// initialize type
|
|
dwValueType = REG_SZ;
|
|
dwValueSize = sizeof(szAddr);
|
|
|
|
// query for registry value
|
|
lStatus = RegQueryValueEx(
|
|
hKey,
|
|
pszValue,
|
|
NULL,
|
|
&dwValueType,
|
|
(LPBYTE)szAddr,
|
|
&dwValueSize
|
|
);
|
|
|
|
// validate return code
|
|
if (lStatus == ERROR_SUCCESS)
|
|
{
|
|
// display gateway address
|
|
SetDlgItemText(hDlg,IDC_H323_GK,szAddr);
|
|
}
|
|
|
|
// initialize value name
|
|
pszValue = H323_REGVAL_GKENABLED;
|
|
|
|
// initialize type
|
|
dwValueType = REG_DWORD;
|
|
dwValueSize = sizeof(DWORD);
|
|
|
|
// query for registry value
|
|
lStatus = RegQueryValueEx(
|
|
hKey,
|
|
pszValue,
|
|
NULL,
|
|
&dwValueType,
|
|
(LPBYTE)&dwValue,
|
|
&dwValueSize
|
|
);
|
|
|
|
// validate return code
|
|
if (lStatus != ERROR_SUCCESS)
|
|
{
|
|
// default
|
|
dwValue = 0;
|
|
}
|
|
|
|
// enable check box
|
|
SendDlgItemMessage(
|
|
hDlg,
|
|
IDC_USEGK,
|
|
BM_SETCHECK,
|
|
(dwValue != 0),
|
|
0
|
|
);
|
|
|
|
// display string if check box enabled
|
|
EnableWindow(GetDlgItem(hDlg,IDC_H323_GK), (dwValue != 0) );
|
|
|
|
// display log on info
|
|
EnableWindow( GetDlgItem(hDlg,IDC_GK_LOGONGROUP), (dwValue != 0) );
|
|
|
|
EnableWindow( GetDlgItem(hDlg,IDC_H323_GK_PHONE),
|
|
(dwValue != 0) && SendDlgItemMessage(hDlg,
|
|
IDC_USEGK_PHONE,
|
|
BM_GETCHECK,
|
|
(WPARAM)0,
|
|
(LPARAM)0 ) );
|
|
|
|
EnableWindow( GetDlgItem(hDlg,IDC_H323_GK_ACCT),
|
|
(dwValue != 0) && SendDlgItemMessage(hDlg,
|
|
IDC_USEGK_ACCT,
|
|
BM_GETCHECK,
|
|
(WPARAM)0,
|
|
(LPARAM)0 ) );
|
|
|
|
EnableWindow( GetDlgItem(hDlg,IDC_USEGK_PHONE), (dwValue != 0) );
|
|
|
|
EnableWindow( GetDlgItem(hDlg,IDC_USEGK_ACCT), (dwValue != 0) );
|
|
|
|
//disable the GW if GK enabled and vice versa
|
|
EnableWindow( GetDlgItem(hDlg,IDC_PROXY_GROUP), (dwValue == 0) );
|
|
EnableWindow( GetDlgItem(hDlg,IDC_USEPROXY), (dwValue == 0) );
|
|
EnableWindow( GetDlgItem(hDlg,IDC_H323_PROXY),
|
|
(dwValue == 0) && SendDlgItemMessage(hDlg,
|
|
IDC_USEPROXY,
|
|
BM_GETCHECK,
|
|
(WPARAM)0,
|
|
(LPARAM)0 ) );
|
|
|
|
//disable the proxy if GK enabled and vice versa
|
|
EnableWindow( GetDlgItem(hDlg,IDC_GATEWAY_GROUP), (dwValue == 0) );
|
|
EnableWindow( GetDlgItem(hDlg,IDC_USEGATEWAY), (dwValue == 0) );
|
|
EnableWindow( GetDlgItem(hDlg,IDC_H323_GATEWAY),
|
|
(dwValue == 0) && SendDlgItemMessage(hDlg,
|
|
IDC_USEGATEWAY,
|
|
BM_GETCHECK,
|
|
(WPARAM)0,
|
|
(LPARAM)0 ) );
|
|
|
|
// close registry
|
|
RegCloseKey(hKey);
|
|
|
|
break;
|
|
|
|
case WM_COMMAND:
|
|
|
|
// decode command
|
|
switch (LOWORD(wParam))
|
|
{
|
|
case IDAPPLY:
|
|
case IDOK:
|
|
|
|
//if GK is enabled at least one of the log on options should be enabled
|
|
dwGKEnabled = !!SendDlgItemMessage(
|
|
hDlg,
|
|
IDC_USEGK,
|
|
BM_GETCHECK,
|
|
(WPARAM)0,
|
|
(LPARAM)0 );
|
|
|
|
if( dwGKEnabled != 0 )
|
|
{
|
|
if(
|
|
!SendDlgItemMessage(hDlg, IDC_USEGK_PHONE, BM_GETCHECK, (WPARAM)0, (LPARAM)0 ) &&
|
|
!SendDlgItemMessage(hDlg, IDC_USEGK_ACCT, BM_GETCHECK, (WPARAM)0, (LPARAM)0 )
|
|
)
|
|
{
|
|
//load error string
|
|
LoadString(g_hInstance,
|
|
IDS_GKLOGON_ERROR,
|
|
szErrorMsg,
|
|
H323_MAXPATHNAMELEN );
|
|
|
|
MessageBox( hDlg, szErrorMsg, NULL, MB_OK );
|
|
|
|
//return failure
|
|
return TRUE;
|
|
}
|
|
}
|
|
|
|
dwTimeoutValue = GetDlgItemInt( hDlg,
|
|
IDC_H323_CALL_TIMEOUT,
|
|
NULL,
|
|
FALSE );
|
|
|
|
if( (dwTimeoutValue < 30000) || (dwTimeoutValue > CALL_ALERTING_TIMEOUT) )
|
|
{
|
|
//load error string
|
|
LoadString(g_hInstance,
|
|
IDS_ALERTTIMEOUT_ERROR,
|
|
szErrorMsg,
|
|
H323_MAXPATHNAMELEN );
|
|
|
|
MessageBox( hDlg, szErrorMsg, NULL, MB_OK );
|
|
|
|
//return failure
|
|
return TRUE;
|
|
}
|
|
|
|
dwPortValue = GetDlgItemInt( hDlg,
|
|
IDC_H323_CALL_PORT,
|
|
NULL,
|
|
FALSE );
|
|
|
|
if( (dwPortValue < 1000) || (dwPortValue > 32000) )
|
|
{
|
|
//load error string
|
|
LoadString(g_hInstance,
|
|
IDS_LISTENPORT_ERROR,
|
|
szErrorMsg,
|
|
H323_MAXPATHNAMELEN );
|
|
|
|
MessageBox( hDlg, szErrorMsg, NULL, MB_OK );
|
|
|
|
//return failure
|
|
return TRUE;
|
|
}
|
|
|
|
// open registry subkey
|
|
lStatus = RegOpenKeyEx(
|
|
HKEY_LOCAL_MACHINE,
|
|
H323_REGKEY_ROOT,
|
|
0,
|
|
KEY_WRITE,
|
|
&hKey
|
|
);
|
|
|
|
// validate return code
|
|
if (lStatus != ERROR_SUCCESS)
|
|
{
|
|
H323DBG((
|
|
DEBUG_LEVEL_WARNING,
|
|
"error 0x%08lx opening tsp registry key.",
|
|
lStatus ));
|
|
|
|
// load error string
|
|
LoadString(g_hInstance,
|
|
IDS_REGOPENKEY,
|
|
szErrorMsg,
|
|
H323_MAXPATHNAMELEN
|
|
);
|
|
|
|
// pop up error dialog
|
|
MessageBox(hDlg,szErrorMsg,NULL,MB_OK);
|
|
|
|
// stop dialog
|
|
EndDialog(hDlg, 0);
|
|
|
|
break;
|
|
}
|
|
|
|
// initialize value name
|
|
pszValue = H323_REGVAL_Q931ALERTINGTIMEOUT;
|
|
|
|
// initialize type
|
|
dwValueType = REG_DWORD;
|
|
dwValueSize = sizeof(DWORD);
|
|
|
|
// query for registry value
|
|
lStatus = RegSetValueEx(
|
|
hKey,
|
|
pszValue,
|
|
0,
|
|
dwValueType,
|
|
(LPBYTE)&dwTimeoutValue,
|
|
dwValueSize
|
|
);
|
|
|
|
// validate return code
|
|
if (lStatus != ERROR_SUCCESS)
|
|
{
|
|
H323DBG(( DEBUG_LEVEL_ERROR,
|
|
"error 0x%08lx writing alerting timeout.",
|
|
lStatus ));
|
|
}
|
|
|
|
// initialize value name
|
|
pszValue = H323_REGVAL_Q931LISTENPORT;
|
|
|
|
// initialize type
|
|
dwValueType = REG_DWORD;
|
|
dwValueSize = sizeof(DWORD);
|
|
|
|
// query for registry value
|
|
lStatus = RegSetValueEx(
|
|
hKey,
|
|
pszValue,
|
|
0,
|
|
dwValueType,
|
|
(LPBYTE)&dwPortValue,
|
|
dwValueSize
|
|
);
|
|
|
|
// validate return code
|
|
if (lStatus != ERROR_SUCCESS)
|
|
{
|
|
H323DBG(( DEBUG_LEVEL_ERROR,
|
|
"error 0x%08lx writing alerting timeout.",
|
|
lStatus ));
|
|
}
|
|
|
|
// initialize value name
|
|
pszValue = H323_REGVAL_GATEWAYADDR;
|
|
|
|
// retrieve gateway address from dialog
|
|
GetDlgItemText(hDlg,IDC_H323_GATEWAY,szAddr, H323_MAXDESTNAMELEN );
|
|
|
|
// initialize type
|
|
dwValueType = REG_SZ;
|
|
dwValueSize = (wcslen(szAddr) + 1) * sizeof(WCHAR);
|
|
|
|
// query for registry value
|
|
lStatus = RegSetValueEx(
|
|
hKey,
|
|
pszValue,
|
|
0,
|
|
dwValueType,
|
|
(LPBYTE)szAddr,
|
|
dwValueSize
|
|
);
|
|
|
|
// validate return code
|
|
if (lStatus != ERROR_SUCCESS)
|
|
{
|
|
H323DBG((
|
|
DEBUG_LEVEL_ERROR,
|
|
"error 0x%08lx writing gateway address.",
|
|
lStatus
|
|
));
|
|
}
|
|
|
|
// initialize value name
|
|
pszValue = H323_REGVAL_GATEWAYENABLED;
|
|
|
|
// initialize type
|
|
dwValueType = REG_DWORD;
|
|
dwValueSize = sizeof(DWORD);
|
|
|
|
// examine check box
|
|
dwValue = SendDlgItemMessage(
|
|
hDlg,
|
|
IDC_USEGATEWAY,
|
|
BM_GETCHECK,
|
|
0,
|
|
0
|
|
) ? 1 : 0;
|
|
|
|
if( (dwValue!=0) && (wcslen(szAddr)==0) &&
|
|
!SendDlgItemMessage(hDlg,IDC_USEGK,BM_GETCHECK,0,0) )
|
|
{
|
|
// load error string
|
|
LoadString(g_hInstance,
|
|
IDS_GWALIAS_ERROR,
|
|
szErrorMsg,
|
|
H323_MAXPATHNAMELEN
|
|
);
|
|
|
|
MessageBox( hDlg, szErrorMsg, NULL, MB_OK );
|
|
|
|
//return failure
|
|
return TRUE;
|
|
}
|
|
|
|
// query for registry value
|
|
lStatus = RegSetValueEx(
|
|
hKey,
|
|
pszValue,
|
|
0,
|
|
dwValueType,
|
|
(LPBYTE)&dwValue,
|
|
dwValueSize
|
|
);
|
|
|
|
// validate return code
|
|
if (lStatus != ERROR_SUCCESS)
|
|
{
|
|
H323DBG((
|
|
DEBUG_LEVEL_ERROR,
|
|
"error 0x%08lx writing gateway flag.",
|
|
lStatus
|
|
));
|
|
}
|
|
|
|
// initialize value name
|
|
pszValue = H323_REGVAL_PROXYADDR;
|
|
|
|
// retrieve gateway address from dialog
|
|
GetDlgItemText(hDlg,IDC_H323_PROXY,szAddr, H323_MAXDESTNAMELEN );
|
|
|
|
// initialize type
|
|
dwValueType = REG_SZ;
|
|
dwValueSize = (wcslen(szAddr) + 1) * sizeof(WCHAR);
|
|
|
|
// query for registry value
|
|
lStatus = RegSetValueEx(
|
|
hKey,
|
|
pszValue,
|
|
0,
|
|
dwValueType,
|
|
(LPBYTE)szAddr,
|
|
dwValueSize
|
|
);
|
|
|
|
// validate return code
|
|
if (lStatus != ERROR_SUCCESS)
|
|
{
|
|
H323DBG((
|
|
DEBUG_LEVEL_ERROR,
|
|
"error 0x%08lx writing proxy address.",
|
|
lStatus
|
|
));
|
|
}
|
|
|
|
// initialize value name
|
|
pszValue = H323_REGVAL_PROXYENABLED;
|
|
|
|
// initialize type
|
|
dwValueType = REG_DWORD;
|
|
dwValueSize = sizeof(DWORD);
|
|
|
|
// examine check box
|
|
dwValue = SendDlgItemMessage(
|
|
hDlg,
|
|
IDC_USEPROXY,
|
|
BM_GETCHECK,
|
|
0,
|
|
0
|
|
) ? 1 : 0;
|
|
|
|
if( (dwValue!=0) && (wcslen(szAddr)==0) &&
|
|
!SendDlgItemMessage(hDlg,IDC_USEGK,BM_GETCHECK,0,0) )
|
|
{
|
|
// load error string
|
|
LoadString(g_hInstance,
|
|
IDS_PROXYALIAS_ERROR,
|
|
szErrorMsg,
|
|
H323_MAXPATHNAMELEN
|
|
);
|
|
|
|
MessageBox( hDlg, szErrorMsg, NULL, MB_OK );
|
|
|
|
//return failure
|
|
return TRUE;
|
|
}
|
|
|
|
// query for registry value
|
|
lStatus = RegSetValueEx(
|
|
hKey,
|
|
pszValue,
|
|
0,
|
|
dwValueType,
|
|
(LPBYTE)&dwValue,
|
|
dwValueSize
|
|
);
|
|
|
|
// validate return code
|
|
if (lStatus != ERROR_SUCCESS)
|
|
{
|
|
H323DBG((
|
|
DEBUG_LEVEL_ERROR,
|
|
"error 0x%08lx writing proxy flag.",
|
|
lStatus
|
|
));
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
//GK address
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
// initialize value name
|
|
pszValue = H323_REGVAL_GKADDR;
|
|
|
|
// retrieve gateway address from dialog
|
|
GetDlgItemText(hDlg,IDC_H323_GK,szAddr, H323_MAXDESTNAMELEN);
|
|
|
|
// initialize type
|
|
dwValueType = REG_SZ;
|
|
dwValueSize = (wcslen(szAddr) + 1) * sizeof(WCHAR);
|
|
|
|
// query for registry value
|
|
lStatus = RegSetValueEx(
|
|
hKey,
|
|
pszValue,
|
|
0,
|
|
dwValueType,
|
|
(LPBYTE)szAddr,
|
|
dwValueSize
|
|
);
|
|
|
|
// validate return code
|
|
if (lStatus != ERROR_SUCCESS)
|
|
{
|
|
H323DBG((
|
|
DEBUG_LEVEL_ERROR,
|
|
"error 0x%08lx writing gatekeeper address.",
|
|
lStatus
|
|
));
|
|
}
|
|
|
|
// initialize value name
|
|
pszValue = H323_REGVAL_GKENABLED;
|
|
|
|
// initialize type
|
|
dwValueType = REG_DWORD;
|
|
dwValueSize = sizeof(DWORD);
|
|
|
|
if( dwGKEnabled && (wcslen(szAddr)==0) )
|
|
{
|
|
// load error string
|
|
LoadString(g_hInstance,
|
|
IDS_GKALIAS_ERROR,
|
|
szErrorMsg,
|
|
H323_MAXPATHNAMELEN
|
|
);
|
|
|
|
MessageBox( hDlg, szErrorMsg, NULL, MB_OK );
|
|
|
|
//return failure
|
|
return TRUE;
|
|
}
|
|
|
|
// query for registry value
|
|
lStatus = RegSetValueEx(
|
|
hKey,
|
|
pszValue,
|
|
0,
|
|
dwValueType,
|
|
(LPBYTE)&dwGKEnabled,
|
|
dwValueSize
|
|
);
|
|
|
|
// validate return code
|
|
if (lStatus != ERROR_SUCCESS)
|
|
{
|
|
H323DBG((
|
|
DEBUG_LEVEL_ERROR,
|
|
"error 0x%08lx writing gatekeeper flag.",
|
|
lStatus
|
|
));
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
//GK log on phone
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
// initialize value name
|
|
pszValue = H323_REGVAL_GKLOGON_PHONEENABLED;
|
|
|
|
// initialize type
|
|
dwValueType = REG_DWORD;
|
|
dwValueSize = sizeof(DWORD);
|
|
|
|
// examine check box
|
|
dwValue = SendDlgItemMessage(
|
|
hDlg,
|
|
IDC_USEGK_PHONE,
|
|
BM_GETCHECK,
|
|
0,
|
|
0
|
|
) ? 1 : 0;
|
|
|
|
// query for registry value
|
|
lStatus = RegSetValueEx(
|
|
hKey,
|
|
pszValue,
|
|
0,
|
|
dwValueType,
|
|
(LPBYTE)&dwValue,
|
|
dwValueSize
|
|
);
|
|
|
|
// validate return code
|
|
if (lStatus != ERROR_SUCCESS)
|
|
{
|
|
H323DBG((
|
|
DEBUG_LEVEL_ERROR,
|
|
"error 0x%08lx writing gatekeeper flag.",
|
|
lStatus
|
|
));
|
|
}
|
|
|
|
// initialize value name
|
|
pszValue = H323_REGVAL_GKLOGON_PHONE;
|
|
|
|
// retrieve gateway address from dialog
|
|
GetDlgItemText(hDlg,IDC_H323_GK_PHONE,szAddr, H323_MAXDESTNAMELEN);
|
|
|
|
// initialize type
|
|
dwValueType = REG_SZ;
|
|
dwValueSize = (wcslen(szAddr) + 1) * sizeof(WCHAR);
|
|
|
|
//check if logon-phone option is enabled and logon-phone alias is empty
|
|
if( dwGKEnabled && dwValue && (dwValueSize == sizeof(WCHAR)) )
|
|
{
|
|
// load error string
|
|
LoadString(g_hInstance,
|
|
IDS_GKLOGON_PHONEALIAS_ERROR,
|
|
szErrorMsg,
|
|
H323_MAXPATHNAMELEN
|
|
);
|
|
|
|
MessageBox( hDlg, szErrorMsg, NULL, MB_OK );
|
|
|
|
//return failure
|
|
return TRUE;
|
|
}
|
|
|
|
//validate e164
|
|
if( IsValidE164String(szAddr) == FALSE )
|
|
{
|
|
// load error string
|
|
LoadString(g_hInstance,
|
|
IDS_PHONEALIAS_ERROR,
|
|
szErrorMsg,
|
|
H323_MAXPATHNAMELEN
|
|
);
|
|
|
|
MessageBox( hDlg, szErrorMsg, NULL, MB_OK );
|
|
|
|
//return failure
|
|
return TRUE;
|
|
}
|
|
// query for registry value
|
|
lStatus = RegSetValueEx(
|
|
hKey,
|
|
pszValue,
|
|
0,
|
|
dwValueType,
|
|
(LPBYTE)szAddr,
|
|
dwValueSize
|
|
);
|
|
|
|
// validate return code
|
|
if (lStatus != ERROR_SUCCESS)
|
|
{
|
|
|
|
H323DBG((
|
|
DEBUG_LEVEL_ERROR,
|
|
"error 0x%08lx writing gatekeeper address.",
|
|
lStatus
|
|
));
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
//GK log on account
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
// initialize value name
|
|
pszValue = H323_REGVAL_GKLOGON_ACCOUNTENABLED;
|
|
|
|
// initialize type
|
|
dwValueType = REG_DWORD;
|
|
dwValueSize = sizeof(DWORD);
|
|
|
|
// examine check box
|
|
dwValue = SendDlgItemMessage(
|
|
hDlg,
|
|
IDC_USEGK_ACCT,
|
|
BM_GETCHECK,
|
|
0,
|
|
0
|
|
) ? 1 : 0;
|
|
|
|
// query for registry value
|
|
lStatus = RegSetValueEx(
|
|
hKey,
|
|
pszValue,
|
|
0,
|
|
dwValueType,
|
|
(LPBYTE)&dwValue,
|
|
dwValueSize
|
|
);
|
|
|
|
// validate return code
|
|
if (lStatus != ERROR_SUCCESS)
|
|
{
|
|
H323DBG((
|
|
DEBUG_LEVEL_ERROR,
|
|
"error 0x%08lx writing gatekeeper flag.",
|
|
lStatus
|
|
));
|
|
}
|
|
|
|
// initialize value name
|
|
pszValue = H323_REGVAL_GKLOGON_ACCOUNT;
|
|
|
|
// retrieve gateway address from dialog
|
|
GetDlgItemText(hDlg,IDC_H323_GK_ACCT,szAddr, H323_MAXDESTNAMELEN );
|
|
|
|
// initialize type
|
|
dwValueType = REG_SZ;
|
|
dwValueSize = (wcslen(szAddr) + 1) * sizeof(WCHAR);
|
|
|
|
//check if logon-acct option is enabled and logon-acct alias in empty
|
|
if( dwGKEnabled && dwValue && (dwValueSize==sizeof(WCHAR)) )
|
|
{
|
|
// load error string
|
|
LoadString(g_hInstance,
|
|
IDS_GKLOGON_ACCTALIAS_ERROR,
|
|
szErrorMsg,
|
|
H323_MAXPATHNAMELEN
|
|
);
|
|
|
|
MessageBox( hDlg, szErrorMsg, NULL, MB_OK );
|
|
|
|
//return failure
|
|
return TRUE;
|
|
}
|
|
|
|
// query for registry value
|
|
lStatus = RegSetValueEx(
|
|
hKey,
|
|
pszValue,
|
|
0,
|
|
dwValueType,
|
|
(LPBYTE)szAddr,
|
|
dwValueSize
|
|
);
|
|
|
|
// validate return code
|
|
if (lStatus != ERROR_SUCCESS)
|
|
{
|
|
H323DBG((
|
|
DEBUG_LEVEL_ERROR,
|
|
"error 0x%08lx writing gatekeeper address.",
|
|
lStatus
|
|
));
|
|
}
|
|
|
|
// close registry
|
|
RegCloseKey(hKey);
|
|
|
|
if( LOWORD(wParam) == IDOK )
|
|
{
|
|
// close dialog
|
|
EndDialog(hDlg, 0);
|
|
}
|
|
break;
|
|
|
|
case IDCANCEL:
|
|
|
|
// close dialog
|
|
EndDialog(hDlg, 0);
|
|
break;
|
|
|
|
case IDUPDATE:
|
|
|
|
lStatus = (*g_pfnUIDLLCallback)(
|
|
g_dwPermanentProviderID,
|
|
TUISPIDLL_OBJECT_PROVIDERID,
|
|
(LPVOID)&DialogData,
|
|
sizeof(DialogData) );
|
|
|
|
// validate status
|
|
if( lStatus == NOERROR )
|
|
{
|
|
if( DialogData.dwRegState == RAS_REGISTER_STATE_REGISTERED )
|
|
{
|
|
LoadString( g_hInstance,
|
|
IDS_REGISTERED,
|
|
szErrorMsg,
|
|
H323_MAXPATHNAMELEN
|
|
);
|
|
|
|
SetDlgItemText( hDlg, IDC_REGSTATE, szErrorMsg );
|
|
}
|
|
else if( DialogData.dwRegState == RAS_REGISTER_STATE_RRQSENT )
|
|
{
|
|
LoadString( g_hInstance,
|
|
IDS_REGISTRATION_INPROGRESS,
|
|
szErrorMsg,
|
|
H323_MAXPATHNAMELEN
|
|
);
|
|
|
|
SetDlgItemText( hDlg, IDC_REGSTATE, szErrorMsg );
|
|
}
|
|
else
|
|
{
|
|
LoadString( g_hInstance,
|
|
IDS_NOT_REGISTERED,
|
|
szErrorMsg,
|
|
H323_MAXPATHNAMELEN
|
|
);
|
|
|
|
SetDlgItemText( hDlg, IDC_REGSTATE, szErrorMsg );
|
|
}
|
|
}
|
|
else
|
|
{
|
|
H323DBG(( DEBUG_LEVEL_ERROR,
|
|
"error 0x%08lx reading dialog data.\n", lStatus ));
|
|
|
|
LoadString( g_hInstance,
|
|
IDS_NOT_REGISTERED,
|
|
szErrorMsg,
|
|
H323_MAXPATHNAMELEN
|
|
);
|
|
|
|
SetDlgItemText( hDlg, IDC_REGSTATE, szErrorMsg );
|
|
}
|
|
break;
|
|
|
|
case IDUPDATE_PORT:
|
|
|
|
lStatus = (*g_pfnUIDLLCallback)(
|
|
g_dwPermanentProviderID,
|
|
TUISPIDLL_OBJECT_PROVIDERID,
|
|
(LPVOID)&DialogData,
|
|
sizeof(DialogData) );
|
|
|
|
// validate status
|
|
if( (lStatus == NOERROR) && (DialogData.wListenPort != 0) )
|
|
{
|
|
SetDlgItemInt( hDlg, IDC_LISTENPORT, DialogData.wListenPort,
|
|
FALSE );
|
|
}
|
|
else
|
|
{
|
|
H323DBG(( DEBUG_LEVEL_FORCE,
|
|
"error 0x%08lx reading dialog data.\n", lStatus ));
|
|
|
|
LoadString( g_hInstance,
|
|
IDS_NONE,
|
|
szErrorMsg,
|
|
H323_MAXPATHNAMELEN
|
|
);
|
|
|
|
SetDlgItemText( hDlg, IDC_LISTENPORT, szErrorMsg );
|
|
}
|
|
|
|
break;
|
|
|
|
case IDC_USEGATEWAY:
|
|
|
|
// display string if check box enabled
|
|
EnableWindow(GetDlgItem(hDlg,IDC_H323_GATEWAY),
|
|
(BOOL)SendDlgItemMessage(
|
|
hDlg,
|
|
IDC_USEGATEWAY,
|
|
BM_GETCHECK,
|
|
(WPARAM)0,
|
|
(LPARAM)0
|
|
));
|
|
break;
|
|
|
|
case IDC_USEPROXY:
|
|
|
|
// display string if check box enabled
|
|
EnableWindow(GetDlgItem(hDlg,IDC_H323_PROXY),
|
|
(BOOL)SendDlgItemMessage(
|
|
hDlg,
|
|
IDC_USEPROXY,
|
|
BM_GETCHECK,
|
|
(WPARAM)0,
|
|
(LPARAM)0
|
|
));
|
|
break;
|
|
|
|
case IDC_USEGK:
|
|
|
|
dwValue= !!SendDlgItemMessage(
|
|
hDlg,
|
|
IDC_USEGK,
|
|
BM_GETCHECK,
|
|
(WPARAM)0,
|
|
(LPARAM)0 );
|
|
|
|
// display string if check box enabled
|
|
EnableWindow( GetDlgItem( hDlg, IDC_H323_GK ), (dwValue != 0) );
|
|
|
|
// display log on info
|
|
EnableWindow( GetDlgItem(hDlg,IDC_GK_LOGONGROUP), (dwValue != 0) );
|
|
|
|
EnableWindow( GetDlgItem(hDlg,IDC_H323_GK_PHONE),
|
|
(dwValue != 0) && SendDlgItemMessage(hDlg,
|
|
IDC_USEGK_PHONE,
|
|
BM_GETCHECK,
|
|
(WPARAM)0,
|
|
(LPARAM)0 ) );
|
|
|
|
EnableWindow( GetDlgItem(hDlg,IDC_H323_GK_ACCT),
|
|
(dwValue != 0) && SendDlgItemMessage(hDlg,
|
|
IDC_USEGK_ACCT,
|
|
BM_GETCHECK,
|
|
(WPARAM)0,
|
|
(LPARAM)0 ) );
|
|
|
|
EnableWindow( GetDlgItem(hDlg,IDC_USEGK_PHONE), (dwValue != 0) );
|
|
|
|
EnableWindow( GetDlgItem(hDlg,IDC_USEGK_ACCT), (dwValue != 0) );
|
|
|
|
//disable the GW if GK enabled and vice versa
|
|
EnableWindow( GetDlgItem(hDlg,IDC_PROXY_GROUP), (dwValue == 0) );
|
|
EnableWindow( GetDlgItem(hDlg,IDC_USEPROXY), (dwValue == 0) );
|
|
EnableWindow( GetDlgItem(hDlg,IDC_H323_PROXY),
|
|
(dwValue == 0) && SendDlgItemMessage(hDlg,
|
|
IDC_USEPROXY,
|
|
BM_GETCHECK,
|
|
(WPARAM)0,
|
|
(LPARAM)0 ) );
|
|
|
|
//disable the proxy if GK enabled and vice versa
|
|
EnableWindow( GetDlgItem(hDlg,IDC_GATEWAY_GROUP), (dwValue == 0) );
|
|
EnableWindow( GetDlgItem(hDlg,IDC_USEGATEWAY), (dwValue == 0) );
|
|
EnableWindow( GetDlgItem(hDlg,IDC_H323_GATEWAY),
|
|
(dwValue == 0) && SendDlgItemMessage(hDlg,
|
|
IDC_USEGATEWAY,
|
|
BM_GETCHECK,
|
|
(WPARAM)0,
|
|
(LPARAM)0 ) );
|
|
|
|
break;
|
|
|
|
case IDC_USEGK_PHONE:
|
|
|
|
// display string if check box enabled
|
|
EnableWindow(GetDlgItem(hDlg,IDC_H323_GK_PHONE),
|
|
(BOOL)SendDlgItemMessage(
|
|
hDlg,
|
|
IDC_USEGK_PHONE,
|
|
BM_GETCHECK,
|
|
(WPARAM)0,
|
|
(LPARAM)0
|
|
));
|
|
break;
|
|
|
|
case IDC_USEGK_ACCT:
|
|
|
|
// display string if check box enabled
|
|
EnableWindow(GetDlgItem(hDlg,IDC_H323_GK_ACCT),
|
|
(BOOL)SendDlgItemMessage(
|
|
hDlg,
|
|
IDC_USEGK_ACCT,
|
|
BM_GETCHECK,
|
|
(WPARAM)0,
|
|
(LPARAM)0
|
|
));
|
|
break;
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
// success
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
|
|
// //
|
|
// TSPI procedures //
|
|
// //
|
|
|
|
|
|
LONG
|
|
TSPIAPI
|
|
TSPI_providerConfig(
|
|
HWND hwndOwner,
|
|
DWORD dwPermanentProviderID
|
|
)
|
|
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
The original TSPI UI-generating functions (TSPI_lineConfigDialog,
|
|
TSPI_lineConfigDialogEdit, TSPI_phoneConfigDialog, TSPI_providerConfig,
|
|
TSPI_providerInstall, and TSPI_providerRemove) are obsolete and will
|
|
never be called by TAPISRV.EXE. However, if the service provider desires
|
|
to be listed as one that can be added by the Telephony control panel,
|
|
it must export TSPI_providerInstall; if it wants to have the Remove
|
|
button enabled in the Telephony CPL when it is selected, it must export
|
|
TSPI_providerRemove, and it if wants the Setup button to be enabled
|
|
in the Telephony CPL when it is selected, it must export
|
|
TSPI_providerConfig.
|
|
|
|
The Telephony CPL checks for the presence of these functions in the
|
|
service provider TSP file in order to adjust its user interface to
|
|
reflect which operations can be performed.
|
|
|
|
See TUISPI_lineConfigDialog for dialog code.
|
|
|
|
Arguments:
|
|
|
|
hwndOwner - Specifies the handle of the parent window in which the function
|
|
may create any dialog windows required during the configuration.
|
|
|
|
dwPermanentProviderID - Specifies the permanent ID, unique within the
|
|
service providers on this system, of the service provider being
|
|
configured.
|
|
|
|
Return Values:
|
|
|
|
Returns zero if the request is successful or a negative error number if
|
|
an error has occurred. Possible return values are:
|
|
|
|
LINEERR_NOMEM - Unable to allocate or lock memory.
|
|
|
|
LINEERR_OPERATIONFAILED - The specified operation failed for unknown
|
|
reasons.
|
|
|
|
--*/
|
|
|
|
{
|
|
UNREFERENCED_PARAMETER(hwndOwner); // no dialog here
|
|
UNREFERENCED_PARAMETER(dwPermanentProviderID); // not needed anymore
|
|
|
|
H323DBG(( DEBUG_LEVEL_TRACE, "TSPI_lineProviderConfig - Entered." ));
|
|
|
|
H323DBG(( DEBUG_LEVEL_TRACE, "TSPI_lineProviderConfig - Exited." ));
|
|
|
|
// success
|
|
return NOERROR;
|
|
}
|
|
|
|
|
|
LONG
|
|
TSPIAPI
|
|
TUISPI_providerConfig(
|
|
TUISPIDLLCALLBACK pfnUIDLLCallback,
|
|
HWND hwndOwner,
|
|
DWORD dwPermanentProviderID
|
|
)
|
|
{
|
|
INT_PTR nResult;
|
|
|
|
g_pfnUIDLLCallback = pfnUIDLLCallback;
|
|
g_dwPermanentProviderID = dwPermanentProviderID;
|
|
|
|
H323DBG(( DEBUG_LEVEL_TRACE, "TSPI_providerConfig - Entered." ));
|
|
|
|
// invoke dialog box
|
|
nResult = DialogBoxW(
|
|
g_hInstance,
|
|
MAKEINTRESOURCE(IDD_TSPCONFIG),
|
|
hwndOwner,
|
|
ProviderConfigDlgProc,
|
|
);
|
|
|
|
H323DBG(( DEBUG_LEVEL_TRACE, "TSPI_providerConfig - Exited." ));
|
|
|
|
// status based on whether dialog executed properly
|
|
return ((DWORD)nResult == 0) ? NOERROR : LINEERR_OPERATIONFAILED;
|
|
}
|
|
|
|
|
|
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
The TSPI_providerGenericDialogData function delivers to the service
|
|
provider data that was sent from the UI DLL running in an application
|
|
context through the TUISPIDLLCALLBACK function. The contents of the
|
|
memory block pointed to by lpParams is defined by the service provider
|
|
and UI DLL. The service provider can modify the contents of the
|
|
parameter block; when this function returns, TAPI copies the modified
|
|
data back into the original UI DLL parameter block.
|
|
|
|
Implementation is mandatory if the UI DLL associated with the service
|
|
provider calls TUISPIDLLCALLBACK.
|
|
|
|
Arguments:
|
|
|
|
dwObjectID - An object identifer of the type specified by dwObjectType
|
|
|
|
dwObjectType - One of the TUISPIDLL_OBJECT_ constants, specifying the
|
|
type of object identified by dwObjectID
|
|
|
|
TUISPIDLL_OBJECT_LINEID - dwObjectID is a line device identifier
|
|
(dwDeviceID).
|
|
|
|
TUISPIDLL_OBJECT_PHONEID - dwObjectID is a phone device identifier
|
|
(dwDeviceID)
|
|
|
|
TUISPIDLL_OBJECT_PROVIDERID - dwObjectID is a permament provider
|
|
identifier.
|
|
|
|
TUISPIDLL_OBJECT_DIALOGINSTANCE - dwObjectID is an HDRVDIALOGINSTANCE,
|
|
as returned to the service provider when it sent a
|
|
LINE_CREATEDIALOGINSTANCE message.
|
|
|
|
lpParams - Pointer to a memory area used to hold a parameter block. The
|
|
contents of this parameter block are specific to the service provider
|
|
and its associated UI DLL.
|
|
|
|
dwSize - The size in bytes of the parameter block.
|
|
|
|
Return Values:
|
|
|
|
Returns zero if successful, or one of these negative error values:
|
|
|
|
LINEERR_INVALPARAM, LINEERR_NOMEM, LINEERR_OPERATIONFAILED
|
|
|
|
--*/
|
|
|
|
LONG
|
|
TSPIAPI
|
|
TSPI_providerGenericDialogData(
|
|
DWORD_PTR dwObjectID,
|
|
DWORD dwObjectType,
|
|
LPVOID lpParams,
|
|
DWORD dwSize
|
|
)
|
|
{
|
|
PH323_DIALOG_DATA pDialogData = (PH323_DIALOG_DATA)lpParams;
|
|
|
|
H323DBG(( DEBUG_LEVEL_TRACE, "TSPI_providerGenericDialogData Entered" ));
|
|
|
|
if( (dwObjectType != TUISPIDLL_OBJECT_PROVIDERID) ||
|
|
(dwSize != sizeof(H323_DIALOG_DATA))
|
|
)
|
|
{
|
|
H323DBG(( DEBUG_LEVEL_ERROR,
|
|
"Invalid message from dwObjectID 0x%08lx\n", dwObjectID ));
|
|
|
|
// failure
|
|
return LINEERR_INVALPARAM;
|
|
}
|
|
|
|
//
|
|
// NOTE: if we want to make sure this message is from our UI DLL
|
|
// then we cannot rely on the provider ID since this function may
|
|
// be called before TSPI_providerInit.
|
|
//
|
|
|
|
// process command
|
|
pDialogData->dwRegState = g_RasClient.GetRegState();
|
|
pDialogData->wListenPort = Q931Listener.GetListenPort();
|
|
|
|
H323DBG(( DEBUG_LEVEL_TRACE, "TSPI_providerGenericDialogData Exited: reg state:%d, listen port:%d",
|
|
pDialogData->dwRegState,
|
|
pDialogData->wListenPort ));
|
|
|
|
// success
|
|
return NOERROR;
|
|
}
|