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@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-list@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