//////////////////////////////////////////////

        /// <summary>
        /// Constructs a tape drive with the given integer ID.
        /// All tape drives under windows have an ID, starting at 0.
        /// </summary>
        /// <param name="tapeID">ID of tape</param>
        public TapeDrive(int tapeID)
        {
            // check OS version first
            if (Environment.OSVersion.Platform != PlatformID.Win32NT)
            {
                throw(new PlatformNotSupportedException("Tape drive access requires WindowsNT 4 or higher"));
            }

            tapeHandle = TapeDriveFunctions.CreateFile(@"\\.\TAPE" + tapeID,
                                                       0x80000000 | 0x40000000, // (GENERIC_READ | GENERIC_WRITE) read/write access
                                                       0,                       // not used
                                                       null,                    // not used
                                                       3,                       // (OPEN_EXISTING) required for tape devices
                                                       0,                       // not used
                                                       0);                      // not used

            if (tapeHandle == 0)
            {
                throw(new TapeDriveNotFoundException());
            }

            info = TapeDriveFunctions.GetTapeDriveParameters(this);

            setInfo.Compression        = info.Compression;
            setInfo.DataPadding        = info.DataPadding;
            setInfo.ECC                = info.ECC;
            setInfo.EOTWarningZoneSize = info.EOTWarningZoneSize;
            setInfo.ReportSetmarks     = info.ReportSetmarks;

            tapeStream = new TapeStream(this);
        }
        //////////////////////////////////////////////
        /// <summary>
        /// Constructs a tape drive with the given integer ID.
        /// All tape drives under windows have an ID, starting at 0.
        /// </summary>
        /// <param name="tapeID">ID of tape</param>
        public TapeDrive(int tapeID)
        {
            // check OS version first
            if (Environment.OSVersion.Platform != PlatformID.Win32NT)
                throw(new PlatformNotSupportedException("Tape drive access requires WindowsNT 4 or higher"));

            tapeHandle = TapeDriveFunctions.CreateFile(@"\\.\TAPE" + tapeID,
                0x80000000 | 0x40000000,			// (GENERIC_READ | GENERIC_WRITE) read/write access
                0,                            // not used
                null,                         // not used
                3,														// (OPEN_EXISTING) required for tape devices
                0,                            // not used
                0);														// not used

            if (tapeHandle == 0)
                throw(new TapeDriveNotFoundException());

            info = TapeDriveFunctions.GetTapeDriveParameters(this);

            setInfo.Compression = info.Compression;
            setInfo.DataPadding = info.DataPadding;
            setInfo.ECC = info.ECC;
            setInfo.EOTWarningZoneSize = info.EOTWarningZoneSize;
            setInfo.ReportSetmarks = info.ReportSetmarks;

            tapeStream = new TapeStream(this);
        }