C# CaptureDumpFileOnDevice返回0和GetLastError=错误\u无效\u参数(87)
我的.Net应用程序在windows ce 6(在Toradex上)上运行。 有时它会卡住,我想创建一个转储文件。 我已经创建了一个调用C# CaptureDumpFileOnDevice返回0和GetLastError=错误\u无效\u参数(87),c#,windows,dump,C#,Windows,Dump,我的.Net应用程序在windows ce 6(在Toradex上)上运行。 有时它会卡住,我想创建一个转储文件。 我已经创建了一个调用 CaptureDumpFileOnDevice(DWORD dwProcessId, DWORD dwThreadId, LPCWSTR pwzExtraFilesPath) 但是它总是返回0和GetLastError=ERROR\u无效的\u参数。即使我为Ids(表示当前进程和当前线程)传递值0,为路径传递值null 我在注册表中找不到相关的键(请参阅),
CaptureDumpFileOnDevice(DWORD dwProcessId, DWORD dwThreadId, LPCWSTR pwzExtraFilesPath)
但是它总是返回0
和GetLastError
=ERROR\u无效的\u参数
。即使我为Ids
(表示当前进程和当前线程)传递值0
,为路径传递值null
我在注册表中找不到相关的键(请参阅),因此我添加了'DumpDirectory'和'DontUpload'键
错误\u无效\u参数
李>
[DllImport("Coredll.dll")]
private static extern int CaptureDumpFileOnDevice
( uint dwProcessId,
uint dwThreadId,
string pwzExtraFilesPath);
[DllImport("coredll.dll")]
private static extern uint GetLastError();
static void Main(string[] args)
{
var result = CaptureDumpFileOnDevice(0, 0, null);
if (result == 0)
{
Console.WriteLine("Error! failed to capture dump file for thread id {0} got {1}, {2}",
threadId, Marshal.GetLastWin32Error(), GetLastError());
}
}
这看起来完全错了。
尝试:
当您想要传递字符串时,请使用
Marshal.StringToCoTaskMemUni(YourStringHere)
要通过null
,请改为通过IntPtr.Zero
这看起来完全错了。
尝试:
当您想要传递字符串时,请使用
Marshal.StringToCoTaskMemUni(YourStringHere)
为了传递
null
,请传递IntPtr.Zero
。显示如何调用此函数。var result=CaptureDumpFileOnDevice(0,0,null);如果(result==0){Console.WriteLine(“Error!未能捕获线程id{0}的转储文件,{1},{2}”,threadId,Marshal.GetLastWin32Error(),GetLastError());}那么CaptureDumpFileOnDevice
在应用程序中究竟是如何定义的,这是一个C++函数,你有任何P/INVIKE签名吗?我也尝试过使用特定的进程ID和它的线程ID,但是我得到了同样的结果[DLimPurt(“CordEr.dll”)]私有静态外置int捕获DimpFielon设备(Uint DeProcess,Uint DWStuaSID,字符串pWZTopFaFielSpess);[DllImport(“coredll.dll”)]私有静态外部uint GetLastError();显示为如何调用此函数。var result=CaptureDumpFileOnDevice(0,0,null);如果(result==0){Console.WriteLine(“Error!未能捕获线程id{0}的转储文件,{1},{2}”,threadId,Marshal.GetLastWin32Error(),GetLastError());}那么CaptureDumpFileOnDevice
在应用程序中究竟是如何定义的,这是一个C++函数,你有任何P/INVIKE签名吗?我也尝试过使用特定的进程ID和它的线程ID,但是我得到了同样的结果[DLimPurt(“CordEr.dll”)]私有静态外置int捕获DimpFielon设备(Uint DeProcess,Uint DWStuaSID,字符串pWZTopFaFielSpess);[DllImport(“coredll.dll”)]私有静态外部uint GetLastError();试过了。还是一样的结果:(试过了。还是一样的结果:(
Marshal.StringToCoTaskMemUni(YourStringHere)