Re[3]: Программное изменение IP адреса под WinCE
|
От: |
mject
|
|
| Дата: | 18.03.05 11:22 |
|
Оценка: |
|
Пожалуйста:
//-----------------------------------------------------------------------------
void ChangeIPAddress( UINT ipAddr, UINT ipMask, UINT ipGateway )
{
HKEY hKey;
LONG lRes = RegOpenKeyEx( HKEY_LOCAL_MACHINE, _T("Comm\\PCI\\RTL81391\\Parms\\TcpIp"), 0, 0, &hKey );
if( lRes == ERROR_SUCCESS && hKey != NULL )
{
DWORD dw = 0;
RegSetValueEx( hKey, _T("EnableDHCP"), 0, REG_DWORD, (PBYTE)&dw, sizeof(DWORD)); //disable DHCP
TCHAR buf[32];
in_addr addr;
addr.S_un.S_addr = ipAddr;
char* p = inet_ntoa( addr );
mbstowcs( buf, p, strlen( p ) + 1 );
RegSetValueEx( hKey, _T("IpAddress"), 0, REG_MULTI_SZ, (PBYTE)buf, (wcslen( buf )+1) * sizeof(TCHAR) );
addr.S_un.S_addr = ipMask;
p = inet_ntoa( addr );
mbstowcs( buf, p, strlen( p ) + 1 );
RegSetValueEx( hKey, _T("Subnetmask"), 0, REG_MULTI_SZ, (PBYTE)buf, (wcslen( buf )+1) * sizeof(TCHAR) );
addr.S_un.S_addr = ipGateway;
p = inet_ntoa( addr );
mbstowcs( buf, p, strlen( p ) + 1 );
RegSetValueEx( hKey, _T("DefaultGateway"), 0, REG_MULTI_SZ, (PBYTE)buf, (wcslen( buf )+1) * sizeof(TCHAR) );
RegFlushKey( hKey );
RegCloseKey( hKey );
}
//Open NDIS driver
HANDLE hNdis;
hNdis = CreateFile( _T("NDS0:"), GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL );
if( hNdis == INVALID_HANDLE_VALUE )
{
WriteProgrammError( __FILE__, __LINE__, ERROR_CODE_STD );
return;
}
// Send the device command.
DWORD xcount;
LPCTSTR szAdapterName = _T("PCI\\RTL81391");
int ret = DeviceIoControl( hNdis,
IOCTL_NDIS_REBIND_ADAPTER,
(PVOID)szAdapterName, ( _tcslen(szAdapterName) + 1 ) * sizeof(TCHAR),
NULL, 0, &xcount, NULL );
if( !ret )
WriteProgrammError( __FILE__, __LINE__, ERROR_CODE_STD );
CloseHandle( hNdis );
}
//-----------------------------------------------------------------------------
Пока на собственное сообщение не было ответов, его можно удалить.