Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

The KWLAN-Tool is a simple control-panel-applet which shows some useful advanced information on aavailablewireless networks and the WLAN-chip itself.

On the Status-tab you see all access-points in range. The blue bar at the top indicates signal-strength.

The Advanced-tab holds two buttons to enable and disable the WLAN device. This is useful to conserve power on battery-powered devices.
Here is the code-snippet how it is done:

BOOL PowerBGW211( BOOL fEnable)
{
  BOOL ret = FALSE;
  HANDLE hNdisPwr;
  HANDLE hNdis;
  NDISPWR_SAVEPOWERSTATE SavePowerState;
  TCHAR DeviceName[8];

  memset( &DeviceName[0], 0, sizeof( DeviceName));
  wcscpy( &DeviceName[0], TEXT("BGW1"));

  hNdisPwr = CreateFile( (PTCHAR)NDISPWR_DEVICE_NAME, 0x00, 0x00, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, (HANDLE)INVALID_HANDLE_VALUE);

  if (hNdisPwr != INVALID_HANDLE_VALUE)
  {
    SavePowerState.pwcAdapterName = &DeviceName[0];
    if ( fEnable)
      SavePowerState.CePowerState   = PwrDeviceUnspecified;
    else
      SavePowerState.CePowerState   = D4;

    if (!DeviceIoControl( hNdisPwr, IOCTL_NPW_SAVE_POWER_STATE, &SavePowerState, sizeof(NDISPWR_SAVEPOWERSTATE), NULL, 0x00, NULL, NULL))
      MessageBox( NULL, TEXT("Could not set Device PowerState!"), TEXT("Error"), MB_OK);
    
    CloseHandle(hNdisPwr);
  }

  {
    CEDEVICE_POWER_STATE Dx = PwrDeviceUnspecified;
    TCHAR                szName[MAX_PATH];        
    int                  nChars;        

    nChars = _sntprintf( szName, MAX_PATH-1, _T("%s\\%s"), PMCLASS_NDIS_MINIPORT, &DeviceName[0]);
    szName[MAX_PATH-1]=0;
    if(nChars != (-1)) 
    {
      if (fEnable)
        SetDevicePower(szName, POWER_NAME, PwrDeviceUnspecified);
      else      
	SetDevicePower(szName, POWER_NAME, D4);
    }
  }

  hNdis = CreateFile( DD_NDIS_DEVICE_NAME, GENERIC_READ | GENERIC_WRITE,
                      FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_ALWAYS,
                      0, NULL);
  
  if ( hNdis != INVALID_HANDLE_VALUE)
  {
    DWORD dwReturned;

    if (fEnable)
      ret = DeviceIoControl( hNdis, IOCTL_NDIS_BIND_ADAPTER, &DeviceName[0], (_tcslen(&DeviceName[0])+2) * sizeof(TCHAR), NULL, 0, NULL, NULL);
    else
      ret = DeviceIoControl( hNdis, IOCTL_NDIS_UNBIND_ADAPTER, &DeviceName[0], (_tcslen(&DeviceName[0])+2) * sizeof(TCHAR), NULL, 0, NULL, NULL);
    CloseHandle( hNdis);
  }
  return ret;
}

With PCTI-tab you can obtain information about the WLAN-chip. Press Load PCTI Firmware. This will load a special test-firmware, which is able to get the information.
Press Load Driver Firmware to return to normal operation mode.

Download & Install

Source-Code

Binary

Copy kwlan.cpl to the \windows-directory of the device.
Than run Start→Settings→Control Panel.
Start the tool with the KWLAN-icon.

  • No labels