This enum is used with the marshal attribute.
public serializable enum UnmanagedType { End = 0x0; Void = 0x1; Boolean = 0x2; I1 = 0x3; U1 = 0x4; I2 = 0x5; U2 = 0x6; I4 = 0x7; U4 = 0x8; I8 = 0x9; U8 = 0xa; R4 = 0xb; R8 = 0xc; SysChar = 0xd; Variant = 0xe; Currency = 0xf; Ptr = 0x10; Decimal = 0x11; Date = 0x12; BStr = 0x13; LPStr = 0x14; LPWStr = 0x15; LPTStr = 0x16; FixedSysString = 0x17; ObjectRef = 0x18; IUnknown = 0x19; IDispatch = 0x1a; Struct = 0x1b; Interface = 0x1c; SafeArray = 0x1d; FixedArray = 0x1e; Int = 0x1f; UInt = 0x20; NestedStruct = 0x21; ByValStr = 0x22; AnsiBStr = 0x23; TBStr = 0x24; // select BSTR or ANSIBSTR // depending on platform Max = 0x25; // first invalid element type