473,503 Members | 1,681 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Converting Unmanaged array Struct to Managed One

18 New Member
Hi All,

The question is regarding Unmanaged and Managed code conversion in C# for structures.

I have two structures like:

public struct Detail
{
public int age;
public string address;

public Detail(int _age, string _address)
{
age = _age;
address = _address;
}
}

public struct Name
{
public Detail[] names;
}


While passing the code to StructureToPtr function:

Name some = new Name();

some.names[0].age = 23;
some.names[0].address = "123,ABC Farms";

int Size = Marshal.SizeOf(some);
IntPtr data = Marchal.AllocHGlobal(Size);
Marshal.StructureToPtr(some, data, true);

This code is showing error as Parameters are not correct, and if i tried to pass the same code without using array, it worked perfectly.

Can anyone please suggest me what should i try to resolve the problem.
Sep 17 '08 #1
1 2779
Banfa
9,065 Recognized Expert Moderator Expert
Name some = new Name();

some.names[0].age = 23;
some.names[0].address = "123,ABC Farms";

int Size = Marshal.SizeOf(some);
IntPtr data = Marchal.AllocHGlobal(Size);
Marshal.StructureToPtr(some, data, true);

This code is showing error as Parameters are not correct, and if i tried to pass the same code without using array, it worked perfectly.
This would be expected when you don't use an array some is an object, when you do use an array some is an array of objects, since StructureToPtr takes an object handle as its first parameter if can not cope with the array. Even if it did it would be marshalling the array object not the objects in the array.

I would guess you will need to marshal each object in the array individually.

If you have not already check the MSDN function reference for this function.
Sep 17 '08 #2

Sign in to post your reply or Sign up for a free account.

Similar topics

5
4374
by: _BNC | last post by:
I've converted " byte" to "byte *" at times, using 'unsafe' and fixed { .... }, but the reverse does not seem to work. In this case, a C++ DLL returns a byte * and a length. What is the best...
2
2091
by: MR | last post by:
I am new to VS.C++ and am having a hard time when i have to share data between managed and unmanaged code. For example, I need to read binary data from a file and then call an non-CLR dll function...
6
5883
by: Aston Martin | last post by:
Hi All, ********************** My Situation ********************** I am working on project that involves passing a structure to unmanaged code from .Net world (well using C#). Perhaps an example...
1
4542
by: Don.Leri | last post by:
Hi, I have a logger.dll (unmanaged c++ dll compiled in vs2005). I have a C# interop to use that dll in managed code implemented in Interfaces.dll (used by other C# dlls). I also have a...
6
7454
by: DaTurk | last post by:
Hi, I have several interfaces in CLI that I access via c#. My problem is, is that down in the unmanaged c++, which the CLI lies on top of, I have a lot of c_str() happening. But all of my...
1
2568
by: DaTurk | last post by:
I'm having an issue converting an unmanaged struct to a CLI managed struct. It's a value struct and this cannot be changed. public value struct UpdateItem { public: System::String ...
16
8757
by: pkoniusz | last post by:
Hello everybody, Been just thinking how actually one could convert the following unmanaged code to the managed C++: struct JustAnExample { char value1; int value2; // etc ....
6
8949
by: =?Utf-8?B?QWxleGFuZGVyZmU=?= | last post by:
Hi, I have a C# program that uses an unmanaged dll that has a function similar to the signature below : void f(out MyStruct arr, out int num); // num = actual array length returned The array...
2
1271
by: Charming12 | last post by:
Hi All, The question is regarding Unmanaged and Managed code conversion in C# for structures. I have two structures like: public struct Detail { public int age; public string address;
0
7202
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
7278
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
7328
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
1
6991
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
4672
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...
0
3167
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The...
0
3154
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
0
1512
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated ...
0
380
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.