Эквивалент Marshal.PtrToString* методы для массива байтов
-
06-09-2019 - |
Вопрос
Если у меня есть неуправляемый указатель, и я хочу перенести указанное количество байтов из этого местоположения в массив байтов, каков наилучший способ сделать это?
т. е.что является эквивалентом Marshal.Методы PtrToString *, но где адресатом является Byte()
Спасибо
Решение
Marshal.Copy
имеет перегрузки для копирования массивов байтов в / из указателя.
Автор: Byte()
является ли это взаимодействием с COM в стиле VB6?Почему вы хотите проверить базовый тип COM с помощью OLE-COM Viewer (входит в состав Windows SDK tools, установленных вместе с VS), чтобы открыть созданную VB dll и посмотреть, что написано в ее typelib.
Другие советы
Попробуйте следующий код
public static byte[] PtrToByteArray(IntPtr ptr, int len) {
var array = new byte[len];
for ( int i = 0; i < len; i++ ) {
array[i] = (byte)Marshal.PtrToStructure(ptr, typeof(byte));
ptr = new IntPtr(ptr.ToInt64()+IntPtr.Size);
}
}
Не связан с StackOverflow