?Okay, the NodeInfo structure must be marshled in this way to make it works :
/// <summary>
/// Structure to handle node informations
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public class NodeInfo
{
/// <summary>
/// String indicating the CPU model.
/// </summary>
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public string model;
/// <summary>
/// Memory size in kilobytes
/// </summary>
[MarshalAs(UnmanagedType.SysUInt)]
public UIntPtr memory;
/// <summary>
/// The number of active CPUs.
/// </summary>
[MarshalAs(UnmanagedType.SysUInt)]
public UIntPtr cpus;
/// <summary>
/// Expected CPU frequency.
/// </summary>
[MarshalAs(UnmanagedType.SysUInt)]
public UIntPtr mhz;
/// <summary>
/// The number of NUMA cell, 1 for uniform mem access.
/// </summary>
[MarshalAs(UnmanagedType.SysUInt)]
public UIntPtr nodes;
/// <summary>
/// Number of CPU socket per node.
/// </summary>
[MarshalAs(UnmanagedType.SysUInt)]
public UIntPtr sockets;
/// <summary>
/// Number of core per socket.
/// </summary>
[MarshalAs(UnmanagedType.SysUInt)]
public UIntPtr cores;
/// <summary>
/// Number of threads per core.
/// </summary>
[MarshalAs(UnmanagedType.SysUInt)]
public UIntPtr threads;
}
I will put it in next patches.
Cheers,
Arnaud
From: arnaud.champion(a)devatom.fr
Sent: Sunday, October 31, 2010 9:47 AM
To: 黄亮
Cc: libvir-list(a)redhat.com
Subject: Re: [libvirt] Node.GetInfo error
Ok,
at first GetLastError return an Error object. So you should anything like :
Errors.Error err = Errors.GetLastError();
MessageBox.Show(err.Message);
For the NodeInfo structure, I think the problem is the same that was for DomainInfo,
I'll check marshaling. Then respond you with the correct infos.
Arnaud
PS : can you also put libvirt-list(a)redhat.com in copy of your mails, to keep everyone in
the loop ?
From: 黄亮
Sent: Sunday, October 31, 2010 8:20 AM
To: arnaud.champion
Subject: Node.GetInfo error
Hi,
Sorry for disturbing again. But I get error while using Node.GetInfo.
Code:
NodeInfo aNodeInfo = new NodeInfo();
if (Node.GetInfo(con, aNodeInfo) < 0)
{
//MessageBox.Show("Node Info Error");
MessageBox.Show(Errors.GetLastError().ToString());
return 0f;
}
I'm sure con != IntPtr.Zero. I tried to use Errors.GetLastError(), it returns int. But
I don't know what to do with it.
So, any suggestions ? Thanks
Regards
2010-10-31
--------------------------------------------------------------------------------
Lancer
--------------------------------------------------------------------------------
--
libvir-list mailing list
libvir-list(a)redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list