468,753 Members | 1,131 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 468,753 developers. It's quick & easy.

Array of pointer in C#

Hi,
Could you please help me how to declare an araay of pointer in C#.
In my program I declared an structure

public struct SEventQ
{
public uint uiUserData;
public uint uiEvent;
public uint uiParam0;
public uint uiParam1;
}

Now I want to delare an array of pointer look likes
unsafe SEventQ [] *EvQ = new SEventQ[10];
Thanks,

Kathy Tran
Nov 16 '05 #1
7 2444
Kathy,

Why do you want an array of pointers. Are you performing some sort of
interop which requires an array of pointers to these structures to be taken,
or do you need an array of structure?

If you wanted an array of pointers, I believe you would do:

SEventQ **EvQ;

However, you couldn't say "new SEventQ*", since you can't "create" a
pointer in that manner.

What is it that you are trying to do?
--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard.caspershouse.com

"Kathy Tran" <Kathy Tr**@discussions.microsoft.com> wrote in message
news:C4**********************************@microsof t.com...
Hi,
Could you please help me how to declare an araay of pointer in C#.
In my program I declared an structure

public struct SEventQ
{
public uint uiUserData;
public uint uiEvent;
public uint uiParam0;
public uint uiParam1;
}

Now I want to delare an array of pointer look likes
unsafe SEventQ [] *EvQ = new SEventQ[10];
Thanks,

Kathy Tran

Nov 16 '05 #2
Hi Nicholas Paldino ,
Thanks for responding my question. I am performing some of interop which
requires an array of pointers to these structures to be taken. In my program
I want to go through an array of pointer, with each element in array I assign
some values in structure and then pass each element to un unmanaged code
function

[DllImport("PikaAPI.dll")]
unsafe public static extern int PK_AUDIO_InputAddBuffer(SEventQ *pEvent);

but I am very confusing and do not how to declare an array of pointer.

Thank,
Kathy Tran

"Nicholas Paldino [.NET/C# MVP]" wrote:
Kathy,

Why do you want an array of pointers. Are you performing some sort of
interop which requires an array of pointers to these structures to be taken,
or do you need an array of structure?

If you wanted an array of pointers, I believe you would do:

SEventQ **EvQ;

However, you couldn't say "new SEventQ*", since you can't "create" a
pointer in that manner.

What is it that you are trying to do?
--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard.caspershouse.com

"Kathy Tran" <Kathy Tr**@discussions.microsoft.com> wrote in message
news:C4**********************************@microsof t.com...
Hi,
Could you please help me how to declare an araay of pointer in C#.
In my program I declared an structure

public struct SEventQ
{
public uint uiUserData;
public uint uiEvent;
public uint uiParam0;
public uint uiParam1;
}

Now I want to delare an array of pointer look likes
unsafe SEventQ [] *EvQ = new SEventQ[10];
Thanks,

Kathy Tran


Nov 16 '05 #3
Kathy,

What is the original declaration (in C/C++) of the method? The one that
you have is not an array of pointers, but rather, just a pointer to the
structure, which is the same as an array of structures (not an array of
pointers to a structure).
--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard.caspershouse.com

"Kathy Tran" <Kathy Tr**@discussions.microsoft.com> wrote in message
news:E9**********************************@microsof t.com...
Hi Nicholas Paldino ,
Thanks for responding my question. I am performing some of interop which
requires an array of pointers to these structures to be taken. In my
program
I want to go through an array of pointer, with each element in array I
assign
some values in structure and then pass each element to un unmanaged code
function

[DllImport("PikaAPI.dll")]
unsafe public static extern int PK_AUDIO_InputAddBuffer(SEventQ *pEvent);

but I am very confusing and do not how to declare an array of pointer.

Thank,
Kathy Tran

"Nicholas Paldino [.NET/C# MVP]" wrote:
Kathy,

Why do you want an array of pointers. Are you performing some sort
of
interop which requires an array of pointers to these structures to be
taken,
or do you need an array of structure?

If you wanted an array of pointers, I believe you would do:

SEventQ **EvQ;

However, you couldn't say "new SEventQ*", since you can't "create" a
pointer in that manner.

What is it that you are trying to do?
--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard.caspershouse.com

"Kathy Tran" <Kathy Tr**@discussions.microsoft.com> wrote in message
news:C4**********************************@microsof t.com...
> Hi,
> Could you please help me how to declare an araay of pointer in C#.
> In my program I declared an structure
>
> public struct SEventQ
> {
> public uint uiUserData;
> public uint uiEvent;
> public uint uiParam0;
> public uint uiParam1;
> }
>
> Now I want to delare an array of pointer look likes
> unsafe SEventQ [] *EvQ = new SEventQ[10];
>
>
> Thanks,
>
> Kathy Tran


Nov 16 '05 #4
This MSDN article has examples for this kind of thing:

http://msdn.microsoft.com/msdnmag/issues/02/08/CQA/

I hope one of the examples helps.

- Jonathan W.
"Kathy Tran" <Kathy Tr**@discussions.microsoft.com> wrote in message
news:E9**********************************@microsof t.com...
Hi Nicholas Paldino ,
Thanks for responding my question. I am performing some of interop which
requires an array of pointers to these structures to be taken. In my
program
I want to go through an array of pointer, with each element in array I
assign
some values in structure and then pass each element to un unmanaged code
function

[DllImport("PikaAPI.dll")]
unsafe public static extern int PK_AUDIO_InputAddBuffer(SEventQ *pEvent);

but I am very confusing and do not how to declare an array of pointer.

Thank,
Kathy Tran

"Nicholas Paldino [.NET/C# MVP]" wrote:
Kathy,

Why do you want an array of pointers. Are you performing some sort
of
interop which requires an array of pointers to these structures to be
taken,
or do you need an array of structure?

If you wanted an array of pointers, I believe you would do:

SEventQ **EvQ;

However, you couldn't say "new SEventQ*", since you can't "create" a
pointer in that manner.

What is it that you are trying to do?
--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard.caspershouse.com

"Kathy Tran" <Kathy Tr**@discussions.microsoft.com> wrote in message
news:C4**********************************@microsof t.com...
> Hi,
> Could you please help me how to declare an araay of pointer in C#.
> In my program I declared an structure
>
> public struct SEventQ
> {
> public uint uiUserData;
> public uint uiEvent;
> public uint uiParam0;
> public uint uiParam1;
> }
>
> Now I want to delare an array of pointer look likes
> unsafe SEventQ [] *EvQ = new SEventQ[10];
>
>
> Thanks,
>
> Kathy Tran


Nov 16 '05 #5
Hi Nicholas Paldino,
This is the original declaration in C

typedef struct TBufferHeader_tag
{
PK_PCHAR lpData;
PK_U32 dwBufferLength;
PK_U32 dwBytesRecorded;
PK_U32 dwUser;
PK_U32 dwFlags;
PK_U32 dwTimeStamp;
struct TBufferHeader_tag *lpNext;
PK_U32 reserved;
} TBufferHeader, *PBufferHeader;

Syntax
PK_STATUS PK_AUDIO_InputAddBuffer
(
IN TResourceHandle hPort, // TResourceHandle is an int
IN PBufferHeader pBuffer
);

My program will call the above function

Kathy Tran
"Nicholas Paldino [.NET/C# MVP]" wrote:
Kathy,

What is the original declaration (in C/C++) of the method? The one that
you have is not an array of pointers, but rather, just a pointer to the
structure, which is the same as an array of structures (not an array of
pointers to a structure).
--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard.caspershouse.com

"Kathy Tran" <Kathy Tr**@discussions.microsoft.com> wrote in message
news:E9**********************************@microsof t.com...
Hi Nicholas Paldino ,
Thanks for responding my question. I am performing some of interop which
requires an array of pointers to these structures to be taken. In my
program
I want to go through an array of pointer, with each element in array I
assign
some values in structure and then pass each element to un unmanaged code
function

[DllImport("PikaAPI.dll")]
unsafe public static extern int PK_AUDIO_InputAddBuffer(SEventQ *pEvent);

but I am very confusing and do not how to declare an array of pointer.

Thank,
Kathy Tran

"Nicholas Paldino [.NET/C# MVP]" wrote:
Kathy,

Why do you want an array of pointers. Are you performing some sort
of
interop which requires an array of pointers to these structures to be
taken,
or do you need an array of structure?

If you wanted an array of pointers, I believe you would do:

SEventQ **EvQ;

However, you couldn't say "new SEventQ*", since you can't "create" a
pointer in that manner.

What is it that you are trying to do?
--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard.caspershouse.com

"Kathy Tran" <Kathy Tr**@discussions.microsoft.com> wrote in message
news:C4**********************************@microsof t.com...
> Hi,
> Could you please help me how to declare an araay of pointer in C#.
> In my program I declared an structure
>
> public struct SEventQ
> {
> public uint uiUserData;
> public uint uiEvent;
> public uint uiParam0;
> public uint uiParam1;
> }
>
> Now I want to delare an array of pointer look likes
> unsafe SEventQ [] *EvQ = new SEventQ[10];
>
>
> Thanks,
>
> Kathy Tran


Nov 16 '05 #6
Hi Nicholas Paldino ,
The original declaration is
typedef struct TBufferHeader_tag
{
PK_PCHAR lpData;
PK_U32 dwBufferLength;
PK_U32 dwBytesRecorded;
PK_U32 dwUser;
PK_U32 dwFlags;
PK_U32 dwTimeStamp;
struct TBufferHeader_tag *lpNext;
PK_U32 reserved;
} TBufferHeader, *PBufferHeader;
The functon my program are going to call is
Syntax
PK_STATUS PK_AUDIO_InputAddBuffer
(
IN TResourceHandle hPort, // TResourceHandle is an int
IN PBufferHeader pBuffer
);

I am trying to use
[DllImport("PikaAPI.dll")]
unsafe public static extern int PK_AUDIO_InputAddBuffer(uint
TResourceHandle, TBufferHeader *pBuffer);

But I got errors when I compiled
Cannot take the address or size of a variable of a managed type
(TBufferHeader)

Thanks for any help
Kathy Tran

"Nicholas Paldino [.NET/C# MVP]" wrote:
Kathy,

What is the original declaration (in C/C++) of the method? The one that
you have is not an array of pointers, but rather, just a pointer to the
structure, which is the same as an array of structures (not an array of
pointers to a structure).
--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard.caspershouse.com

"Kathy Tran" <Kathy Tr**@discussions.microsoft.com> wrote in message
news:E9**********************************@microsof t.com...
Hi Nicholas Paldino ,
Thanks for responding my question. I am performing some of interop which
requires an array of pointers to these structures to be taken. In my
program
I want to go through an array of pointer, with each element in array I
assign
some values in structure and then pass each element to un unmanaged code
function

[DllImport("PikaAPI.dll")]
unsafe public static extern int PK_AUDIO_InputAddBuffer(SEventQ *pEvent);

but I am very confusing and do not how to declare an array of pointer.

Thank,
Kathy Tran

"Nicholas Paldino [.NET/C# MVP]" wrote:
Kathy,

Why do you want an array of pointers. Are you performing some sort
of
interop which requires an array of pointers to these structures to be
taken,
or do you need an array of structure?

If you wanted an array of pointers, I believe you would do:

SEventQ **EvQ;

However, you couldn't say "new SEventQ*", since you can't "create" a
pointer in that manner.

What is it that you are trying to do?
--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard.caspershouse.com

"Kathy Tran" <Kathy Tr**@discussions.microsoft.com> wrote in message
news:C4**********************************@microsof t.com...
> Hi,
> Could you please help me how to declare an araay of pointer in C#.
> In my program I declared an structure
>
> public struct SEventQ
> {
> public uint uiUserData;
> public uint uiEvent;
> public uint uiParam0;
> public uint uiParam1;
> }
>
> Now I want to delare an array of pointer look likes
> unsafe SEventQ [] *EvQ = new SEventQ[10];
>
>
> Thanks,
>
> Kathy Tran


Nov 16 '05 #7
what you have is not an array, it's a linked list. and your function
signature is wrong. My guess is that the resource handle should be an opaque
pointer that's marshalled as IntPtr. And you'd have to marshal the
TBufferHeader* as a IntPtr as well. In your structure definition, lpData
should be an IntPtr to a unmanaged buffer, and lpNext should be a IntPtr to
the next element in the linked list. problem is that you'd have to make a
lot of manual calls to Marshal.AlocHGlobal and Marshal.StructureToPtr to get
your data set up back and forth.

I'd suggest that you read and understand platform invoke fully before
attempting.
http://msdn.microsoft.com/library/de...lfunctions.asp

"Kathy Tran" wrote:
Hi Nicholas Paldino ,
The original declaration is
typedef struct TBufferHeader_tag
{
PK_PCHAR lpData;
PK_U32 dwBufferLength;
PK_U32 dwBytesRecorded;
PK_U32 dwUser;
PK_U32 dwFlags;
PK_U32 dwTimeStamp;
struct TBufferHeader_tag *lpNext;
PK_U32 reserved;
} TBufferHeader, *PBufferHeader;
The functon my program are going to call is
Syntax
PK_STATUS PK_AUDIO_InputAddBuffer
(
IN TResourceHandle hPort, // TResourceHandle is an int
IN PBufferHeader pBuffer
);

I am trying to use
[DllImport("PikaAPI.dll")]
unsafe public static extern int PK_AUDIO_InputAddBuffer(uint
TResourceHandle, TBufferHeader *pBuffer);

But I got errors when I compiled
Cannot take the address or size of a variable of a managed type
(TBufferHeader)

Thanks for any help
Kathy Tran

"Nicholas Paldino [.NET/C# MVP]" wrote:
Kathy,

What is the original declaration (in C/C++) of the method? The one that
you have is not an array of pointers, but rather, just a pointer to the
structure, which is the same as an array of structures (not an array of
pointers to a structure).
--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard.caspershouse.com

"Kathy Tran" <Kathy Tr**@discussions.microsoft.com> wrote in message
news:E9**********************************@microsof t.com...
Hi Nicholas Paldino ,
Thanks for responding my question. I am performing some of interop which
requires an array of pointers to these structures to be taken. In my
program
I want to go through an array of pointer, with each element in array I
assign
some values in structure and then pass each element to un unmanaged code
function

[DllImport("PikaAPI.dll")]
unsafe public static extern int PK_AUDIO_InputAddBuffer(SEventQ *pEvent);

but I am very confusing and do not how to declare an array of pointer.

Thank,
Kathy Tran

"Nicholas Paldino [.NET/C# MVP]" wrote:

> Kathy,
>
> Why do you want an array of pointers. Are you performing some sort
> of
> interop which requires an array of pointers to these structures to be
> taken,
> or do you need an array of structure?
>
> If you wanted an array of pointers, I believe you would do:
>
> SEventQ **EvQ;
>
> However, you couldn't say "new SEventQ*", since you can't "create" a
> pointer in that manner.
>
> What is it that you are trying to do?
>
>
> --
> - Nicholas Paldino [.NET/C# MVP]
> - mv*@spam.guard.caspershouse.com
>
>
>
> "Kathy Tran" <Kathy Tr**@discussions.microsoft.com> wrote in message
> news:C4**********************************@microsof t.com...
> > Hi,
> > Could you please help me how to declare an araay of pointer in C#.
> > In my program I declared an structure
> >
> > public struct SEventQ
> > {
> > public uint uiUserData;
> > public uint uiEvent;
> > public uint uiParam0;
> > public uint uiParam1;
> > }
> >
> > Now I want to delare an array of pointer look likes
> > unsafe SEventQ [] *EvQ = new SEventQ[10];
> >
> >
> > Thanks,
> >
> > Kathy Tran
>
>
>


Nov 16 '05 #8

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

5 posts views Thread by Richard Delorme | last post: by
204 posts views Thread by Alexei A. Frounze | last post: by
8 posts views Thread by intrepid_dw | last post: by
1 post views Thread by Tomás | last post: by
26 posts views Thread by aruna.mysore | last post: by
1 post views Thread by CARIGAR | last post: by
reply views Thread by zhoujie | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.