By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
449,079 Members | 915 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 449,079 IT Pros & Developers. It's quick & easy.

Marshaling structure with pointer to array of strings

P: n/a
I am struggling with the following

How do I marshal/access a pointer to an array of strings within a structure

Than

Jef

----------------------------------------------------------------

namespace Win32Wrapper

...

/
typedef struct
unsigned long flag; // function rule
unsigned long timeout_msec; // maximum allowed tim
unsigned long version_major
unsigned long version_minor
my_tag_list_t *taglist; // pointer to tag lis
unsigned int start_tag; // first tag to be processe
unsigned int end_tag; // last tag to be processe
unsigned int valid_tags; // number of valid taglist entrie
unsigned int max_tags; // maximum size of taglis
signed long status; // overall function statu
signed long *istatus; // pointer to input status lis
signed long *ostatus; // pointer to output status lis
signed long **field_status; // pointer to array of arrays of statu
signed long **field_status_save;// pointer to saved field_statu
unsigned long select_list_number; // the selection list numbe
char *select_equation; // pointer to select lis
unsigned int fields; // number of field name
char **field_name; // pointer to arrays of name
void **tag_field_value; // pointer to array of arrays of value
void **field_value; // pointer to array of constant value
my_physadrs_t **physadrs; // pointer to array of arrays of addres
my_physadrs_t **physadrs_save; // to saved physadr
my_access_ids_t **access_ids; // ptr to array of lists of stuf
void *custom_table; // ptr to config dat
char *cust_file_name; // ptr to name of vendor-specific cfg fil
} myType2
*
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)
public class myType2
public uint flag; // function rule
public uint timeout_msec; // maximum allowed tim
public uint version_major
public uint version_minor
public IntPtr taglist; // pointer to tag lis
public uint start_tag; // first tag to be processe
public uint end_tag; // last tag to be processe
public uint valid_tags; // number of valid taglist entrie
public uint max_tags; // maximum size of taglis
public int status; // overall function statu
public IntPtr istatus; // pointer to input status lis
public IntPtr ostatus; // pointer to output status lis
public IntPtr field_status; // pointer to array of statu
public IntPtr field_status_save; // pointer to saved field_statu
public uint select_list_number; // the selection list numbe
public IntPtr select_equation; // pointer to select lis
public uint fields; // number of field name
public IntPtr field_name; // pointer to array of field name
public IntPtr tag_field_value; // pointer to array of value
public IntPtr field_value; // pointer to array of constant value
public IntPtr physadrs; // pointer to array of addresse
public IntPtr physadrs_save; // to saved physadr
public IntPtr access_ids; // ptr to array of lists of stuf
public IntPtr custom_table; // ptr to config dat
public IntPtr cust_file_name; // ptr to name of cfg fil
} // myType

public class RfidWrapper

...

/
EXPORT_CFUNC signed long EXPORT_STDCALL GetFieldNames(myType1 *aType1, myType2 *aType2, signed long *status)
*
[DllImport("D:\\Progra~1\\Intermec\\Intell~1\\it500 .dll")
public static extern int GetFieldNames([In, Out] myType1 aType1, [In, Out] myType2 aType2, out int Status)

....

} // public class Win32Wrapper
} // namespace MyStuff
// Calling program
....
rc = Win32Wrapper.GetFieldNames(aType1, aType2, out nStatus);

//
// How do I marshal aType2 to access field_name[] that is an array of strings???
// i.e. aType2.field_name[valid_tags]
//
....
Nov 16 '05 #1
Share this Question
Share on Google+
1 Reply


P: n/a

Marshal.ReadIntPtr() to retrieve one of the string pointers in the
array, then call Marsahal.PtrToStringAnsi() with the pointer to get
the string.

Mattias

--
Mattias Sjögren [MVP] mattias @ mvps.org
http://www.msjogren.net/dotnet/ | http://www.dotnetinterop.com
Please reply only to the newsgroup.
Nov 16 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.