2013-12-07 16 views
0

在Windows Mobile 6專業設備,我想打電話給CreateToolHelp32Snapshot函數功能,但得到的ERROR_NOT_ENOUGH_MEMORY錯誤。CreateToolHelp32Snapshot函數產生ERROR_NOT_ENOUGH_MEMORY

我已經在使用國旗TH32CS_SNAPNOHEAPS建議here。代碼是C#.NET 3.5精簡版。

我的目標是通過它的名字找到一個過程。

private const int TH32CS_SNAPPROCESS = 0x00000002; 
private const int TH32CS_SNAPNOHEAPS = 0x40000000; 
private const int INVALID_HANDLE_VALUE = -1; 

[DllImport("toolhelp.dll", SetLastError = true)] 
private static extern IntPtr CreateToolhelp32Snapshot(uint flags, uint processID); 

public static IntPtr FindProcessPID(string fullpath) 
{ 
    fullpath = fullpath.ToLower(); 
    IntPtr snapshot_handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS | TH32CS_SNAPNOHEAPS, 0); 

    if ((Int32)snapshot_handle == INVALID_HANDLE_VALUE) 
     throw new Win32Exception(Marshal.GetLastWin32Error(), "CreateToolhelp32Snapshot failed."); 

謝謝。

+0

HTTP: //support.microsoft.com/kb/950978 –

+0

您的鏈接引用了Windows CE 6.0「平臺生成器」每月更新(2008年5月)。我知道Platform Builder是VS 2005的插件。我使用VS 2008,因此它不適合。我也沒有看到Dev Env和解決方案之間的聯繫。這是一個編譯或DLL版本的問題?謝謝。 – orberkov

+0

漢斯指的是修復Windows CE操作系統本身的錯誤。該修補程序是指Windows CE 6.0中的一個錯誤,並且您提到您的設備正在使用Windows Mobile 6.0,它實際上使用Windows CE 5.0,因此潛在錯誤可能不適用於您的情況。在您發佈的代碼段中,我沒有看到任何異常情況。你可能需要檢查兩件事:1)確保你正在使用'CloseToolhelp32Snaphot'來關閉'CreateToolhelp32Snapshot'而不是'CloseHandle'返回的句柄(可能不會引起你的問題),2)驗證'Toolhelp.dll '在設備上。 –

回答