public MednaDisc(string pathToDisc) { if (!IsLibraryAvailable) throw new InvalidOperationException("MednaDisc library is not available!"); handle = mednadisc_LoadCD(pathToDisc); if (handle == IntPtr.Zero) throw new InvalidOperationException("Failed to load MednaDisc: " + pathToDisc); //read the mednafen toc TOCTracks = new MednadiscTOCTrack[101]; fixed (MednadiscTOCTrack* _tracks = &TOCTracks[0]) fixed(MednadiscTOC* _toc = &TOC) mednadisc_ReadTOC(handle, _toc, _tracks); //leave the disc open until this is disposed so we can read sectors from it }
/// <exception cref="InvalidOperationException"><see cref="IsLibraryAvailable"/> is <see langword="false"/> (could not load <c>mednadisc.dll</c>), or unmanaged call failed</exception> public MednaDisc(string pathToDisc) { if (!IsLibraryAvailable) { throw new InvalidOperationException($"{nameof(MednaDisc)} library is not available!"); } handle = mednadisc_LoadCD(pathToDisc); if (handle == IntPtr.Zero) { throw new InvalidOperationException($"Failed to load {nameof(MednaDisc)}: {pathToDisc}"); } //read the mednafen toc TOCTracks = new MednadiscTOCTrack[101]; fixed(MednadiscTOCTrack *_tracks = &TOCTracks[0]) fixed(MednadiscTOC * _toc = &TOC) mednadisc_ReadTOC(handle, _toc, _tracks); //leave the disc open until this is disposed so we can read sectors from it }
public static extern void mednadisc_ReadTOC(IntPtr disc, MednadiscTOC* toc, MednadiscTOCTrack* tracks101);