public static IntPtr AEGetNthPtr(ref AEDesc descList, int index, CarbonEventParameterType desiredType) { IntPtr ret; CheckReturn((int)AEGetNthPtr(ref descList, index, desiredType, 0, 0, out ret, 4, 0)); return(ret); }
public static T AEGetNthPtr <T> (ref AEDesc descList, int index, CarbonEventParameterType desiredType) where T : struct { int len = Marshal.SizeOf(typeof(T)); IntPtr bufferPtr = Marshal.AllocHGlobal(len); try { CheckReturn((int)AEGetNthPtr(ref descList, index, desiredType, 0, 0, bufferPtr, len, 0)); T val = (T)Marshal.PtrToStructure(bufferPtr, typeof(T)); return(val); } finally{ Marshal.FreeHGlobal(bufferPtr); } }
//FIXME: this might not work in some encodings. need to test more. static string GetStringFromAEPtr(ref AEDesc descList, int index) { int size; CarbonEventParameterType type = CarbonEventParameterType.UnicodeText; if (AESizeOfNthItem(ref descList, index, ref type, out size) == AEDescStatus.Ok) { IntPtr buffer = Marshal.AllocHGlobal(size); try { if (AEGetNthPtr(ref descList, index, type, 0, 0, buffer, size, 0) == AEDescStatus.Ok) { return(Marshal.PtrToStringAuto(buffer, size)); } } finally { Marshal.FreeHGlobal(buffer); } } return(null); }
public static T GetEventParameter <T> (IntPtr eventRef, CarbonEventParameterName name, CarbonEventParameterType desiredType) where T : struct { int len = Marshal.SizeOf(typeof(T)); IntPtr bufferPtr = Marshal.AllocHGlobal(len); CheckReturn(GetEventParameter(eventRef, name, desiredType, 0, (uint)len, 0, bufferPtr)); T val = (T)Marshal.PtrToStructure(bufferPtr, typeof(T)); Marshal.FreeHGlobal(bufferPtr); return(val); }
static extern EventStatus GetEventParameter(IntPtr eventRef, CarbonEventParameterName name, CarbonEventParameterType desiredType, uint zero, uint size, uint zero2, IntPtr dataBuffer);
static extern EventStatus GetEventParameter(IntPtr eventRef, CarbonEventParameterName name, CarbonEventParameterType desiredType, out CarbonEventParameterType actualType, uint size, ref uint outSize, IntPtr dataBuffer);
public static IntPtr GetEventParameter(IntPtr eventRef, CarbonEventParameterName name, CarbonEventParameterType desiredType) { CarbonEventParameterType actualType; uint outSize = 0; IntPtr val = IntPtr.Zero; CheckReturn(GetEventParameter(eventRef, name, desiredType, out actualType, (uint)IntPtr.Size, ref outSize, ref val)); return(val); }
static extern AEDescStatus AEGetNthPtr(ref AEDesc descList, int index, OSType desiredType, uint keyword, out CarbonEventParameterType actualType, IntPtr buffer, int bufferSize, out int actualSize);
public static extern AEDescStatus AESizeOfNthItem(ref AEDesc descList, int index, ref CarbonEventParameterType type, out int size);
static extern AEDescStatus AEGetNthPtr(ref AEDesc descList, int index, CarbonEventParameterType desiredType, uint keyword, uint zero, out IntPtr outPtr, int bufferSize, int zero2);