Описание тега structlayout

3 ответа

Использует неожиданное поведение FieldOffset

Я пытаюсь понять явное расположение структуры и наложение структуры, и я не вижу поведения, которое я ожидаю. Учитывая код ниже: class Program { static void Main(string[] args) { byte[] bytes = new byte[17]; bytes[0] = 0x01; // Age is 1 //IntField1 …
25 фев '11 в 02:49
0 ответов

Предупреждение FxCop не исчезнет

Объект этого класса будет передан в вызов API. Я реализовал первое предложение из предупреждения ниже: Чтобы снизить риск для безопасности, маршалируйте поле Resource.k__BackingField как Unicode, установив StructLayout.CharSet для "Resource" в CharS…
28 дек '17 в 16:52
1 ответ

Добавление атрибута StructLayout к типу F# с неявным конструктором

У меня есть: type Package = abstract member Date : int abstract member Save : unit -> unit [<type:StructLayout(LayoutKind.Sequential, Pack=1, CharSet=CharSet.Ansi)>] type Instant(date : int, value : int) = let mutable _date = date let mutab…
31 окт '12 в 09:19
1 ответ

Могу ли я убедиться, что resharper не меняет порядок полей в этом классе?

Я использую этот класс NetResource для отправки файлов на сетевой диск, и это выглядит так: [StructLayout(LayoutKind.Sequential)] public class NetResource { public ResourceScope Scope; public ResourceType ResourceType; public ResourceDisplayType Dis…
30 окт '18 в 13:31
1 ответ

Структура неправильно выровнена: System.TypeLoadException

Я пытаюсь создать следующую структуру в C#, это сложная структура, основанная на C, я пробовал большинство вариантов маршалинга, но я всегда получаю 'System.TypeLoadException'. (Дополнительная информация: не удалось загрузить тип "WindowsFormsApplic…
1 ответ

LayoutKind.Sequential не используется, если в substruct есть LayoutKind.Explicit

При запуске этого кода: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; namespace StructLayoutTest { class Program { unsafe static void Main() { Console.WriteLine(IntPtr.Siz…
02 май '13 в 08:28
2 ответа

C# StructLayout Pack=?? для использования со значениями bool

В C# я создаю несколько различных структур, которые содержат 16 переменных типа bool. У меня будет несколько различных из этих структур, которые затем будут объединены с другими типами данных в более сложные структуры. Мне нужно, чтобы они обрабатыв…
31 авг '16 в 13:59
6 ответов

Почему LayoutKind.Sequential работает по-другому, если структура содержит поле DateTime?

Почему LayoutKind.Sequential работает по-другому, если структура содержит поле DateTime? Рассмотрим следующий код (консольное приложение, которое должно быть скомпилировано с включенным "unsafe"): using System; using System.Runtime.InteropServices; …
09 ноя '10 в 10:14
2 ответа

Как преобразовать фиксированный байт / символ [100] в управляемый символ [] в C#?

Каков наилучший способ преобразования фиксированного байта или символа [100] в управляемый символ [] в C#? Мне пришлось использовать арифметику с указателями, и мне интересно, есть ли более простой способ - что-то вроде memcpy или другого способа? u…
3 ответа

Исправлен sbyte[] в строке C#

Я пытаюсь получить строку из памяти, используя StrucLayout а также FieldOffset Но у меня много проблем с пониманием того, как byte работает. Вот мой код банкомата: [StructLayout(LayoutKind.Explicit)] public unsafe struct InfoDetails { [FieldOffset(0…
18 май '18 в 07:22
2 ответа

PInvoke для DWORD-выровненных дескрипторов памяти

Я пытался написать эквивалент C# для ACCESS_DENIED_ACE структура, как определено в MSDN: typedef struct _ACCESS_DENIED_ACE { ACE_HEADER Header; ACCESS_MASK Mask; DWORD SidStart; } ACCESS_DENIED_ACE, *PACCESS_DENIED_ACE; куда SidStart является первым…
25 июл '12 в 10:07
1 ответ

Почему C# может справиться с этим явно идиотским продвижением объектов во время выполнения?

Мне очень нравится язык C#. Я просто играю вокруг, и никогда не буду использовать код ниже в производственном коде. Очевидно, что компилятор одурачен компоновкой структуры. Но почему получается, что строка в классе Super все еще может быть записана …
07 апр '17 в 14:20
2 ответа

Изменить структуру структуры из p/invoke

Я ищу рекомендации по изменению структуры struct/class объектов, возвращаемых / передаваемых в функцию a p/invoke. Я искал ответ на этот вопрос, но, возможно, я просто слишком устал, и я не ищу эффективно. Простейший пример, который я могу придумать…
08 ноя '12 в 08:46
3 ответа

Как можно не делать предположений о структурных макетах C++?

Я только что узнал от Bug в компиляторе VC++ 14.0 (2015)? что не следует делать предположения о том, как макет структуры окажется в памяти. Тем не менее, я не понимаю, как это часто встречается в коде, который я видел. Например, графический интерфей…
30 авг '16 в 02:34
1 ответ

Неопределенное поведение с полевым смещением

Я успешно удалил объект структуры из допустимого указателя с помощью функции PtrToStructure (в vb.NET), проблема в том, что поле "FrameRects" имеет недопустимые значения по сравнению со значениями, полученными из образца C++: код vb.NET: StructLayou…
30 июл '17 в 10:39
0 ответов

C# StructLayout Pack получить System.NullReferenceException, проблема выравнивания?

Прежде всего, я бы сказал, что я не застрял, потому что есть много обходных путей для меня! Лучшее из того, что мне больше не нужен пакет 1Byte:P Но, честно говоря, я довольно озадачен поведением. Я использую Unity, он отлично работает на Windows, н…
07 мар '14 в 14:29
2 ответа

C# StructLayout. Явный вопрос

Я пытаюсь понять, почему второй пример ниже работает без проблем, но первый пример дает мне исключение ниже. Мне кажется, что оба примера должны дать исключение на основе описания. Кто-нибудь может просветить меня? Необработанное исключение: System.…
25 июл '09 в 19:05
7 ответов

Есть ли альтернатива для атрибута "Pack" StructLayout в Compact Framework?

Я хотел бы сделать следующее: [StructLayout(LayoutKind.Sequential, Pack = 1)] public struct SomeStruct { public byte SomeByte; public int SomeInt; public short SomeShort; public byte SomeByte2; } Есть ли альтернатива, так как Pack не поддерживается …
14 июл '09 в 19:54
2 ответа

Массивы, разделяющие память в.NET4.0 - это возможно с помощью отражений или StructLayout?

У меня есть огромные переходные массивы, созданные быстро. Некоторые хранятся, некоторые - GC-d. Это дефрагментирует кучу, и приложение потребляет ок. В 2,5 раза больше памяти, чем было бы действительно необходимо в результате OutOfMemoryException. …
14 июн '13 в 08:42
2 ответа

Должен ли я использовать LayoutKind.Auto для своих структур, если они не работают в COM Interop?

По умолчанию структуры в C# реализованы с [StructLayout( LayoutKind.Sequential )] по причинам, в основном утверждающим, что эти типы объектов обычно используются для взаимодействия COM, и их поля должны оставаться в том порядке, в котором они были о…
29 ноя '09 в 19:53