문제가 있습니다. 이것은 C 구조체의 정의입니다.참조 유형/배열을 포함하는 구조체를 마샬링
typedef struct _UNIMDM_CHG_DEVCFG {
DWORD dwCommand;
LPCWSTR lpszDeviceClass;
LPVARSTRING lpDeviceConfig;
DWORD dwOption;
DWORD dwValue;
} UNIMDM_CHG_DEVCFG;
Windows CE에서 .NET Compact Framework 3.5를 사용합니다. 내가 예를 들어,이 구조를 마샬링하는 방법에는 여러 가지 시도 :
[StructLayout(LayoutKind.Sequential)]
internal struct UnimodemChangeDeviceConfiguration
{
public int dwCommand;
public byte[] lpszDeviceClass;
public byte[] lpDeviceConfig;
public int dwOption;
public int dwValue;
}
이 구조의 인스턴스에 Marshal.SizeOf를 호출 할 때 문제를, 그것에서 NotSupportedException이 발생합니다. 왜? lpszDeviceClass에 문자열을 사용했지만 문제가 다시 발생했습니다. 포인터 유형을 마샬링 할 수없는 것 같습니다.
나는 그것을 살펴 봤지만 그 클래스는 올바르게 쓰여지지 않았다. 나는 자기 자신을 썼다. 문제는 다른 구현에서 LPVARSTRING이 함수에 직접 전달된다는 것입니다 (구조의 일부가 아님). – Bogi