Структура с FieldOffset атрибутами, исключение при присвоении значения

Рейтинг: 2Ответов: 1Опубликовано: 24.04.2015

Есть структура:

[StructLayout(LayoutKind.Explicit)]
public unsafe struct rdpSettings
{
    [FieldOffset(0 * 8)] public forte* instance;

    /* Core Protocol Parameters */
    [FieldOffset(16 * 8)] public UInt32 width;
    [FieldOffset(17 * 8)] public UInt32 height;
    [FieldOffset(18 * 8)] public UInt32 rdpVersion;
    [FieldOffset(19 * 8)] public UInt32 colorDepth;
    [FieldOffset(20 * 8)] public UInt32 kbdLayout;
    [FieldOffset(21 * 8)] public UInt32 kbdType;
    [FieldOffset(22 * 8)] public UInt32 kbdSubType;
    [FieldOffset(23 * 8)] public UInt32 kbdFnKeys;
    [FieldOffset(24 * 8)] public UInt32 clientBuild;
    [FieldOffset(25 * 8)] public UInt32 requestedProtocols;
    [FieldOffset(26 * 8)] public UInt32 selectedProtocol;
    [FieldOffset(27 * 8)] public UInt32 encryptionMethod;
    [FieldOffset(28 * 8)] public UInt32 encryptionLevel;
    [FieldOffset(29 * 8)] public int authentication;
    [FieldOffset(30 * 8)] public UInt32 negotiationFlags;
    [FieldOffset(31 * 8)] public int negotiateSecurity;

    /* Connection Settings */
    [FieldOffset(48 * 8)] public UInt32 port;

И метод, в котором структуре присваиваются значения:

public bool Connect(string hostname, int port, string username, string domain, string password)
{
     settings->port = (uint)port; // System.NullReferenceException 

Строку с исключением пометил. В чем причина ошибки?

p.s. не кидайтесь тапками если вопрос простой, я в этой "нативной хрени" ни бельмеса =)

Ответы

▲ 4Принят

А settings случайно не является пустым указателем?