Membuat Aplikasi Cadangan

Untuk melakukan input atau output pada pita, aplikasi cadangan harus terlebih dahulu mendapatkan handel perangkat pita. Sampel kode berikut menunjukkan kepada Anda cara menggunakan fungsi CreateFile untuk membuka perangkat pita.

HANDLE hTape;   // handle to tape device
 
hTape = CreateFile(TEXT("\\\\.\\TAPE0"),         // tape dev to open
                   GENERIC_READ | GENERIC_WRITE, // read/write access
                   0,                            // not used
                   0,                            // not used
                   OPEN_EXISTING,                // req for tape devs
                   0,                            // not used
                   NULL);                        // not used

Untuk mencadangkan pohon direktori ke pita, aplikasi harus menggunakan fungsi FindFirstFile dan FindNextFile untuk melintasi pohon direktori. Setiap kali file ditemukan, aplikasi harus mendapatkan atribut file dengan menggunakan fungsi GetFileAttributes.

Jika ada tautan keras, aplikasi harus menentukan jumlah tautan, dan menyimpan pengidentifikasi unik file dalam tabel untuk perbandingan di masa mendatang. Pertama kali file ditemukan, aplikasi harus menggunakan CreateFile untuk membuka file, dan fungsi BackupRead untuk memulai pencadangan. Kemudian dapat menggunakan fungsi WriteFile berulang kali untuk mentransfer semua informasi dalam buffer yang digunakan oleh BackupRead ke pita. Kedua kalinya file ditemukan (diperiksa terhadap tabel pengidentifikasi file ketika ada tautan keras), aplikasi dapat menulis informasi file umum ke pita, diikuti oleh aliran yang memiliki pengidentifikasi yang BACKUP_LINK.

Saat memulihkan file dari pita ke disk, aplikasi harus menggunakan fungsi CreateFile, BackupWrite, dan ReadFile. Untuk setiap file pada pita, aplikasi harus menggunakan CreateFile untuk membuat file baru pada disk, dan BackupWrite untuk mulai memulihkan file. Kemudian aplikasi harus menggunakan ReadFile berulang kali sampai semua informasi untuk file dibaca dari pita ke buffer yang diisi oleh BackupWrite.

Jika salah satu aliran di buffer BackupWrite memiliki pengidentifikasi aliran BACKUP_LINK , aplikasi harus membuat tautan keras. Jika data yang diperlukan untuk membuat tautan tidak ada, BackupWrite gagal. Aplikasi dapat menggunakan katalog yang sudah ada sebelumnya untuk menemukan dan memulihkan data asli, atau dapat memberi tahu pengguna bahwa data file yang akan dipulihkan berada di lokasi yang berbeda.