2011-01-27 67 views
0

我有用于在Windows CE中禁用/启用WIFI的示例代码。运行Windows CE示例代码时出错

[DllImport("coredll.dll", SetLastError = true)] 
private static extern int SetDevicePower(string pvDevice, int dwDeviceFlags, DevicePowerState DeviceState); 

private enum DevicePowerState : int 
{ 
    Unspecified = -1, 
    D0 = 0, // Full On: full power, full functionality 
    D1, // Low Power On: fully functional at low power/performance 
    D2, // Standby: partially powered with automatic wake 
    D3, // Sleep: partially powered with device initiated wake 
    D4, // Off: unpowered 
} 

private const int POWER_NAME = 0x00000001; 

public Form1() 
{ 
    InitializeComponent(); 
} 

//Utilities.WiFi.FindDriverKey() is simply a function that returns the whole registry key name 
//of the key containing the NDIS MINIPORT class GUID defined in he SDK’s pm.h: 

private void button1_Click(object sender, EventArgs e) 
{ 
    string driver = Utilities.WiFi.FindDriverKey(); 
    SetDevicePower(driver, POWER_NAME, DevicePowerState.D0); 
} 


private void button2_Click(object sender, EventArgs e) 
{ 

    string driver = Utilities.WiFi.FindDriverKey(); 
    SetDevicePower(driver, POWER_NAME, DevicePowerState.D4); 
} 


private static string FindDriverKey() 
{ 
    string ret = string.Empty; 

    //#define PMCLASS_NDIS_MINIPORT   TEXT("{98C5250D-C29A-4985-AE5F-AFE5367E5006}") 
    //(From "c:\Program Files (x86)\Windows Mobile 6 SDK\PocketPC\Include\Armv4i\pm.h") 
    string WiFiDriverClass = "{98C5250D-C29A-4985-AE5F-AFE5367E5006}"; 

    foreach (string tmp in Registry.LocalMachine.OpenSubKey("System\\CurrentControlSet\\Control\\Power\\State", false).GetValueNames()) 
    { 
     if (tmp.Contains(WiFiDriverClass)) 
     { 
      ret = tmp; 
      break; 
     } 
    } 

    return ret; 
} 

不过,我得到这个错误:

The name 'Utilities' does not exist in the current context

为什么会出现这个错误?

回答

2

它可能是因为FindDriverKey()曾经是Utilities类或命名空间。在致电FindDriverKey()之前拨打Utilities.Wifi,你应该全部设置。或者,您可以创建实用程序名称空间,然后创建一个名为Wifi的静态类,并将FindDriverKey()函数放入Wifi类中。