private void WriteDiscInfo(IntPtr tagsPtr, IntPtr discInfoPtr) { if (this.DiscNumber == null && this.TotalDiscs == null) { NativeMethods.MP4TagsSetDisk(tagsPtr, IntPtr.Zero); } else { NativeMethods.MP4TagDisk discInfo = new NativeMethods.MP4TagDisk(); if (discInfoPtr != IntPtr.Zero) { discInfoPtr.ReadStructure <NativeMethods.MP4TagDisk>(); } if (this.DiscNumber.Value != discInfo.index || this.TotalDiscs != discInfo.total) { discInfo.index = (this.DiscNumber == null ? (short)0 : this.DiscNumber.Value); discInfo.total = (this.TotalDiscs == null ? (short)0 : this.TotalDiscs.Value); IntPtr discPtr = Marshal.AllocHGlobal(Marshal.SizeOf(discInfo)); Marshal.StructureToPtr(discInfo, discPtr, false); NativeMethods.MP4TagsSetDisk(tagsPtr, discPtr); Marshal.FreeHGlobal(discPtr); } } }
private void ReadDiskInfo(IntPtr diskInfoPointer) { if (diskInfoPointer == IntPtr.Zero) { return; } NativeMethods.MP4TagDisk diskInfo = diskInfoPointer.ReadStructure <NativeMethods.MP4TagDisk>(); this.DiscNumber = diskInfo.index; this.TotalDiscs = diskInfo.total; }