В WinAPI приведена структура
typedef struct {
UINT idLength;
UINT* ids;
} AsnObjectIdentifier;
как правильно представить в данной структуре
UINT * ids
Здравствуйте, Bron, Вы писали:
B>В WinAPI приведена структура
B>B>typedef struct {
B> UINT idLength;
B> UINT* ids;
B>} AsnObjectIdentifier;
B>
B>как правильно представить в данной структуре
B>UINT * ids
UIntPtr?
Здравствуйте, Bron, Вы писали:
B>В WinAPI приведена структура
B>B>typedef struct {
B> UINT idLength;
B> UINT* ids;
B>} AsnObjectIdentifier;
B>
B>как правильно представить в данной структуре
B>UINT * ids
Формально:
[StructLayout(LayoutKind.Sequential)]
public struct AsnObjectIdentifier
{
public uint idLength;
public IntPtr ids;
}
При формировании структуры придется сделать следующее:
— создать глобальный блок памяти с помощью Marshal.AllocHGlobal
— скопировать в него данные с помощью Marshal.Copy
— записать в поля структуры соответственно длину блока и указатель на блок памяти
— после использования освободить блок памяти с помощью Marshal.FreeHGlobal
Я бы лучше попробовал следующее:
[StructLayout(LayoutKind.Sequential)]
public struct AsnObjectIdentifier
{
public uint idLength;
public uint[] ids;
}
По идее должно сработать автоматически.
[ StructLayout( LayoutKind.Sequential )]
public struct AsnObjectIdentifier
{
public UINT idLength;
public IntPtr ids;
}
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение