Публикации по теме 'marshalling'


Наступательный P / Invoke: использование Win32 из управляемого кода
С появлением агрессивных инструментов .NET, особенно C #, мы наблюдаем значительное расширение операционных возможностей, особенно в том, что касается запуска нашего кода в памяти (например, Cobalt Strike's execute-assembly ). Хотя C # предоставляет большую функциональность на поверхности, иногда нам нужно использовать функции операционной системы, которые недоступны из управляемого кода. К счастью, .NET предлагает интеграцию с Windows API с помощью технологии, называемой Platform Invoke,..

Вопросы по теме 'marshalling'

Могу ли я создать модульный тест для метода, который упорядочивает значение из IntPtr?
Я использую нативную библиотеку, которая возвращает IntPtr в ячейку памяти, содержащую значение атрибута. Я знаю, каков тип атрибута, и у меня есть метод сортировки значения (берущего IntPtr и тип атрибута) из памяти, на которую указывает указатель....
928 просмотров
schedule 05.01.2023

Вызов загадочной функции C++ CLI
Итак, я пытаюсь вызвать функцию, которая представляет собой управляемую оболочку вокруг объекта OCX. С большими трудностями. Функция есть; foo(System::Object ^% theBuffer) где theBuffer — это массив байтов. Шаблон для неуправляемого OCX,...
991 просмотров
schedule 27.05.2022

Создать SecureString из неуправляемой строки Unicode
Я хочу попытаться наилучшим образом связать функцию Windows API CryptUnprotectData и .net SecureString. CryptUnprotectData возвращает структуру DATA_BLOB, состоящую из массива байтов и длины байта. В моей программе это будет строка Unicode UTF-16....
1228 просмотров
schedule 21.11.2022

Что требуется для включения маршалинга для COM-интерфейса?
У меня есть 32-разрядный COM-компонент ATL без библиотеки типов. У него есть фабрика классов для одного данного класса, реализующая несколько интерфейсов. Когда я использую его в качестве внутрипроцессного сервера, все работает нормально -...
1486 просмотров
schedule 21.03.2022

Маршалинг массивов из VB.NET в COM-объект
У меня есть программа VB6, которая вызывает метод COM, передавая 2 массива в качестве параметров и ожидая заполнения 2 массивов в ответ. Код таков, где ItemID и ItemClientHandles являются параметрами входного массива, а MyItemServerHandles и Errors...
3134 просмотров
schedule 28.06.2023

Чтение/запись при возникновении исключения защищенной памяти (.net)
Мне сообщает исключение, которое выдается в последней строке, что я пытаюсь читать/записывать в защищенную память. Что я здесь делаю неправильно? Спасибо int count = (int)WinApi.SendMessage(_chatHwnd, WinApi.LB_GETCOUNT, 0, 0);...
760 просмотров
schedule 08.07.2022

C#: указатель на структуру внутри структуры
Я пытаюсь использовать сортировку в С#. В С++ у меня есть эта структура: struct aiScene { unsigned int mFlags; C_STRUCT aiNode* mRootNode; unsigned int mNumMeshes; C_STRUCT aiMesh** mMeshes; unsigned int mNumMaterials;...
3389 просмотров
schedule 08.09.2022

Маршалинг с C # на C ++
Мне нужно передать InParameter из моего приложения C # в экспортируемую функцию из VC ++ DLL. Функция принимает 2 параметра: int func_name (FILE* fp, BYTE& by); fp - параметр "Вход", а by - параметр "Выход". Я думал о маршалинге с...
2009 просмотров
schedule 20.06.2022

Маршалинг массива пользовательского типа между VB6 и .net
Я создаю вызываемую COM-сборку .net и теперь пытаюсь использовать ее из устаревших COM-клиентов (в моем случае клиент VB6). Сборка должна предоставлять интерфейс в стиле API, поэтому типичное объявление функции будет выглядеть так: int...
1009 просмотров
schedule 15.05.2022

Объявления интерфейса COM
При создании объявлений COM-интерфейса на С# существуют ли какие-либо «правила», которых вы должны придерживаться? Я думаю, что есть и хотел бы получить некоторую информацию о нем. Например, я играюсь с интерфейсами ITaskbarList, ITaskbarList2 и...
1253 просмотров
schedule 16.12.2022

Взаимодействие С#/С++ - нужна помощь в определении моей структуры данных
Я работаю над приложением С#, которое пытается использовать функциональные возможности, предоставляемые через DLL С++. Мне немного трудно заставить определения DLLImport работать прямо сейчас. Вот сторона C++ уравнения: struct Result {...
1070 просмотров
schedule 30.03.2022

Маршаллинг строк, C++ в C#: «преобразование не поддерживается библиотекой»
Резюме: При попытке использовать сортировку для передачи строковых данных в C++ DLL из C# я получаю 'msclr::interop::error_reporting_helper‹_To_Type,_From_Type>::marshal_as': это преобразование не поддерживается библиотекой или файл...
1938 просмотров
schedule 24.08.2022

Маршалинговая структура со встроенным указателем из C# в неуправляемый драйвер
Я пытаюсь связать С# (.NET Compact Framework 3.5) с потоковым драйвером Windows CE 6 R2, используя вызовы P/Invoked DeviceIoControl(). Для одного из кодов IOCTL драйверу требуется входной буфер DeviceIoControl, представляющий собой следующую...
5834 просмотров
schedule 27.07.2023

Как я могу игнорировать поле при маршаллинге структуры с помощью P/Invoke
Я хочу маршалировать структуру для использования с P/Invoke, но эта структура содержит поле, относящееся только к моему управляемому коду, поэтому я не хочу, чтобы оно маршализировалось, поскольку оно не принадлежит собственной структуре. Это вообще...
5759 просмотров
schedule 01.09.2022

Как я могу предотвратить утечку памяти в CompileAssemblyFromSource?
У меня есть код C#, который использует CSharpCodeProvider.CompileAssemblyFromSource для создания сборки в памяти. После сборки мусора мое приложение использует больше памяти, чем до создания сборки. Мой код находится в веб-приложении ASP.NET, но я...
13899 просмотров

Расположение типа значения .NET в памяти
У меня есть следующие типы значений .NET: [StructLayout(LayoutKind.Sequential)] public struct Date { public UInt16 V; } [StructLayout(LayoutKind.Sequential)] public struct StringPair { public String A; public String B; public...
3628 просмотров
schedule 04.01.2023

данные маршала слишком короткие
Моему приложению требуется поддерживать большие объекты данных в сеансе. Существует около 3-4 объектов данных, каждый из которых создается путем анализа CSV-файла, содержащего 150 X 20 ячеек, содержащих строки из 3-4 символов. Мое приложение...
16611 просмотров
schedule 08.06.2022

Указание кодовой страницы для сортировки строк PInvoke с использованием C#
Я вызываю DLL с помощью PInvoke. Функция DLL возвращает строку C в кодовой странице 437. Есть ли способ, чтобы маршалинг .Net преобразовывал строку в юникод, или может кто-нибудь предложить, какие параметры я должен указать для DllImport() и...
1926 просмотров
schedule 22.10.2022

Растровое изображение в int[] с использованием Marshal.Copy()
Я использую Marshal.Copy() для копирования информации о пикселях из массива Bitmap в массив int[] , проблема заключается в том, что информация, поступающая в этот массив, поступает неправильно, например: [0] = -8682109;...
4176 просмотров
schedule 11.04.2022

Управляемая и неуправляемая структуры имеют разный размер
Я работаю с неуправляемой библиотекой через P/Invoke, и она использует три структуры (хотя все они имеют одинаковый базовый макет, поэтому я опубликую только одну): struct Agraph_t { int tag:4; int kind:4; int handle:24; char...
1086 просмотров
schedule 23.07.2023