?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.champ...@devatom.fr 
Sent: Sunday, October 31, 2010 9:47 AM
To: 黄亮 
Cc: libvir-list@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-l...@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@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to