求助Heap32ListFirst使用问题
我想用mobile中toolhelper的Heap32ListFirst计算进程占用内存数可是每次调用的时候返回值都是0(0代表失败),不知道是不是我调用出了问题
它的函数原型为
BOOL WINAPI Heap32ListFirst(
HANDLE hSnapshot,
LPHEAPLIST32 lphl
);
我调用的时候是这样写的
[DllImport("toolhelp.dll")]
private static extern int Heap32ListFirst(IntPtr hSnapshot, ref HEAPLIST32 lphl)
其中HEAPLIST32为一结构原型是这样的
struct tagHEAPLIST32
{ SIZE_T dwSize;
DWORD th32ProcessID; // owning process
ULONG_PTR th32HeapID; // heap (in owning process's context!)
DWORD dwFlags;
}
在c#中我定义是这样的
public struct HEAPLIST32
{
public uint dwSize;
public uint th32ProcessID;
public IntPtr th32HeapID;
public uint dwFlags;
}
在调用函数是大概是这样写的
HEAPLIST32 heapList=new HEAPLIST32();
IntPtr hHeapSnap = IntPtr.Zero; //创建指定进程下的堆快照
hHeapSnap = CreateToolhelp32Snapshot(0x00000001, dwOwnerPID);
if (hHeapSnap == IntPtr.Zero)
{
return 0;
}
//填充结构成员
heapList.dwSize = (uint)Marshal.SizeOf(heapList);
if (Heap32ListFirst(hHeapSnap,ref heapList) != 0)
{
}
else
{
}
结果我怎么运行Heap32ListFirst返回值都是0,请问高手我哪里写错了 ,该如何解决
补充:.NET技术 , C#