Исключение аргумента выдается PtrToStructure

Это зависит от сопоставления поля - если это - (нечувствительный к регистру) ci или (чувствительный к регистру) cs. Уникальный индекс применялся бы соответственно.

5
задан g t 31 May 2017 в 06:50
поделиться

2 ответа

Вы не можете вызвать эту конкретную перегрузку Marshal.PtrToStructure с типом значения (то есть struct ).

Если вы вызовете с помощью этой перегрузки вы можете получить обратно экземпляр вашего типа.

6
ответ дан 14 December 2019 в 04:44
поделиться

Извините, что не привожу пример кода, но вот ссылка , которая может вам помочь.

Вот ключевой текст из приведенной выше ссылки:

Проблема не связана с RegisterTraceGuids API.

Согласно документу Marshal.PtrToStructure (IntPtr, Объект) http://msdn.microsoft.com/en-us/library/30ex8z62.aspx , это вызывает исключение ArgumentException, которое вы видели, когда макет структуры не последовательный или явный или структура тип значения в штучной упаковке.

В этом случае структура объявлен как последовательный, однако элементы в массиве (traceGuidReg [i]) заключены в рамку на управляемая куча из-за массива объект, поэтому вы получили ошибку "the структура не должна быть классом значений. "

Вам нужно будет использовать перегрузку Marshal.PtrToStructure Метод (IntPtr, Тип) http://msdn.microsoft.com/en-us/library/4ca6d5z7.aspx и присвоить результат PtrToStructure к элементам массива.

2
ответ дан 14 December 2019 в 04:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: