2011-01-27 39 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類中。