How to add IOCTL_NDIS_REBIND_ADAPTER definition to my platform?
From: Selin Metin (nospam_at_nospam.com.tr)
Date: 07/30/04
- Next message: Sujith: "Re: How to add IOCTL_NDIS_REBIND_ADAPTER definition to my platform?"
- Previous message: Ying Rong Jun: "How can support the "Shutdown" function in the WINCE.net?"
- Next in thread: Sujith: "Re: How to add IOCTL_NDIS_REBIND_ADAPTER definition to my platform?"
- Reply: Sujith: "Re: How to add IOCTL_NDIS_REBIND_ADAPTER definition to my platform?"
- Reply: K. S. Huang: "Re: How to add IOCTL_NDIS_REBIND_ADAPTER definition to my platform?"
- Messages sorted by: [ date ] [ thread ]
Date: Fri, 30 Jul 2004 11:56:56 +0300
Hi everyone,
I'm trying to change the IP of my device at runtime. I wrote an application
for this which gets the network parameters and sets the registry keys
according to the user input. I checked my application both with the emulator
and the cepc. After I change the settings from DHCP assigned address to the
static IP address, I can see the newly assigned address in the Network and
Dial-up Connections\<my_adapter_name> dialog box. However when I type
ipconfig /all in the command prompt I get the old DHCP assigned network
parameters.
AFAIK, I have to unbind my adapter and rebind it again for the changes to
take effect, but when I try to do this I get the following error:
E:\WINCE420\PUBLIC\IcopDene\Commtrans\IPSetting.cpp(387) : error C2065:
'IOCTL_NDIS_REBIND_ADAPTER' : undeclared identifier
Error PB2505: Error executing cl.exe.
When I include the ntddndis.h file to my application I get other definition
errors for the following:
C:\Program Files\Microsoft eMbedded C++
4.0\Common\EVC\MyProjects\CommTrans\IPSetting.cpp(388) : error C2065:
'CTL_CODE' : undeclared identifier
C:\Program Files\Microsoft eMbedded C++
4.0\Common\EVC\MyProjects\CommTrans\IPSetting.cpp(388) : error C2065:
'FILE_DEVICE_PHYSICAL_NETCARD' : undeclared identifier
C:\Program Files\Microsoft eMbedded C++
4.0\Common\EVC\MyProjects\CommTrans\IPSetting.cpp(388) : error C2065:
'METHOD_OUT_DIRECT' : undeclared identifier
C:\Program Files\Microsoft eMbedded C++
4.0\Common\EVC\MyProjects\CommTrans\IPSetting.cpp(388) : error C2065:
'FILE_ANY_ACCESS' : undeclared identifier
Error executing cl.exe.
CommTrans.exe - 4 error(s), 0 warning(s)
I tried to link the ndislib.lib module to my project but this didn't help.
How can I correctly achieve this?
This is my code:
////////////////////////////////////////////////////////////////////////////
////////////////////
CString str;
DWORD Addr;
TCHAR szTemp[256];
HKEY hKey;
LONG hRes;
DWORD Len;
BYTE lpBuffer;
_tcscpy (szTemp, TEXT("Comm\\"));
_tcscat (szTemp, (LPWSTR)(LPCTSTR)m_szAdapterName);
_tcscat (szTemp, TEXT("\\Parms\\TcpIp"));
hKey = NULL;
hRes = RegOpenKeyEx (HKEY_LOCAL_MACHINE, szTemp, 0, 0, &hKey);
if (ERROR_SUCCESS == hRes && hKey != NULL)
{
lpBuffer = 0;
RegSetValueEx (hKey, TEXT("EnableDHCP"), 0, REG_DWORD,
&lpBuffer, sizeof(DWORD));
GetDlgItem(IDC_IPADDRESS)->GetWindowText(str);
Addr = StringToAddr((LPWSTR)(LPCTSTR)str);
if (!IsValidIPAddress(Addr))
return;
IPAddrToStr (szTemp, Addr);
Len = _tcslen(szTemp)+1;
szTemp[Len++] = TEXT('\0');
RegSetValueEx (hKey, TEXT("IpAddress"), 0, REG_MULTI_SZ,
(BYTE *)szTemp, sizeof(TCHAR)*Len);
GetDlgItem(IDC_SUBNETMASK)->GetWindowText(str);
Addr = StringToAddr((LPWSTR)(LPCTSTR)str);
if (!IsValidIPAddress(Addr))
return;
IPAddrToStr (szTemp, Addr);
Len = _tcslen(szTemp)+1;
szTemp[Len++] = TEXT('\0');
RegSetValueEx (hKey, TEXT("Subnetmask"), 0, REG_MULTI_SZ,
(BYTE *)szTemp, sizeof(TCHAR)*Len);
GetDlgItem(IDC_DEFGATEWAY)->GetWindowText(str);
if (!str.IsEmpty()) {
Addr = StringToAddr((LPWSTR)(LPCTSTR)str);
if (!IsValidIPAddress(Addr))
return;
}
else
Addr = 0;
IPAddrToStr (szTemp, Addr);
Len = _tcslen(szTemp)+1;
szTemp[Len++] = TEXT('\0');
RegSetValueEx (hKey, TEXT("DefaultGateway"), 0, REG_MULTI_SZ,
(BYTE *)szTemp, sizeof(TCHAR)*Len);
GetDlgItem(IDC_PRIMARYDNS)->GetWindowText(str);
if (!str.IsEmpty()) {
Addr = StringToAddr((LPWSTR)(LPCTSTR)str);
if (!IsValidIPAddress(Addr))
return;
}
else
Addr = 0;
IPAddrToStr (szTemp, Addr);
Len = _tcslen(szTemp)+1;
szTemp[Len++] = TEXT('\0');
RegSetValueEx (hKey, TEXT("DNS"), 0, REG_MULTI_SZ,
(BYTE *)szTemp, sizeof(TCHAR)*Len);
GetDlgItem(IDC_PRIMARYWINS)->GetWindowText(str);
if (!str.IsEmpty()) {
Addr = StringToAddr((LPWSTR)(LPCTSTR)str);
if (!IsValidIPAddress(Addr))
return;
}
else
Addr = 0;
IPAddrToStr (szTemp, Addr);
Len = _tcslen(szTemp)+1;
szTemp[Len++] = TEXT('\0');
RegSetValueEx (hKey, TEXT("WINS"), 0, REG_MULTI_SZ,
(BYTE *)szTemp, sizeof(TCHAR)*Len);
RegCloseKey (hKey);
}
// Open the NDIS driver.
HANDLE hNdis = CreateFile(_T("NDS0:"), GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_EXISTING, 0, NULL );
// Send the device command.
TCHAR errs[ 512 ];
DWORD xcount;
if (DeviceIoControl(hNdis, IOCTL_NDIS_REBIND_ADAPTER, m_szAdapterName,
_tcslen(m_szAdapterName) + sizeof(TCHAR), // buf contains the name of the
adapter
NULL, 0, &xcount, NULL ) )
{
OutputDebugString( _T( "Adapter rebound\r\n" ) );
}
else
{
_stprintf( errs, _T("DeviceIoControl failed. error = %d\r\n"),
GetLastError());
OutputDebugString(errs);
}
CloseHandle(hNdis);
////////////////////////////////////////////////////////////////////////////
/////////////////////////////
- Next message: Sujith: "Re: How to add IOCTL_NDIS_REBIND_ADAPTER definition to my platform?"
- Previous message: Ying Rong Jun: "How can support the "Shutdown" function in the WINCE.net?"
- Next in thread: Sujith: "Re: How to add IOCTL_NDIS_REBIND_ADAPTER definition to my platform?"
- Reply: Sujith: "Re: How to add IOCTL_NDIS_REBIND_ADAPTER definition to my platform?"
- Reply: K. S. Huang: "Re: How to add IOCTL_NDIS_REBIND_ADAPTER definition to my platform?"
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|
|