public ItemId[] GetItems() { ArrayList items = new ArrayList(); IntPtr itemP = p; while (!ItemIdList.IsTerminator(itemP)) { ItemId item = ItemId.Create(itemP); items.Add(item); itemP = (IntPtr)((int)itemP + ItemId.HeaderSize + item.DataLength); } return((ItemId[])items.ToArray(typeof(ItemId))); }
object ICustomMarshaler.MarshalNativeToManaged(IntPtr pNativeData) { return(ItemIdList.Create(pNativeData)); }
internal static extern int SHGetIDListFromObject(IntPtr iUnknown, [Out, MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(ItemIdListMarshaler))] out ItemIdList pidl);