当前位置:编程学习 > C#/ASP.NET >>

求助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#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,