public Result Read(GameCardHandle handle, long offset, Span <byte> destination)
        {
            if (IsGameCardHandleInvalid(handle))
            {
                return(ResultFs.InvalidGameCardHandleOnRead.Log());
            }
            if (!IsGameCardInserted())
            {
                return(ResultFs.GameCardNotInserted.Log());
            }

            return(CardImageStorage.Read(offset, destination));
        }
        public Result GetGameCardDeviceId(Span <byte> outBuffer)
        {
            if (outBuffer.Length < 0x10)
            {
                return(ResultFs.InvalidBufferForGameCard.Log());
            }
            if (!IsGameCardInserted())
            {
                return(ResultFs.GameCardNotInserted.Log());
            }

            // Skip the security mode check

            // Instead of caching the CardKeyArea data, read the value directly
            return(CardImageStorage.Read(0x7110, outBuffer.Slice(0, 0x10)));
        }