Share via


建立備份應用程式

若要在磁帶上執行輸入或輸出,備份應用程式必須先取得磁帶裝置的句柄。 下列程式代碼範例示範如何使用 CreateFile 函式來開啟磁帶裝置。

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

若要將目錄樹狀目錄備份到磁帶,應用程式必須使用 FindFirstFile 和 FindNextFile 函式來周游目錄樹狀結構。 每次找到檔案時,應用程式都應該使用 GetFileAttributes 函式來取得檔案屬性。

如果有硬式連結,應用程式應該判斷連結數目,並將檔案的唯一標識符儲存在數據表中以供日後比較。 第一次找到檔案時,應用程式應該使用 CreateFile 開啟檔案,以及 BackupRead 函式來開始備份。 然後,它可以重複使用 WriteFile 函式,將 BackupRead 所使用的緩衝區中的所有資訊傳送到磁帶。 第二次找到檔案時,應用程式可以將一般檔案資訊寫入磁帶,後面接著具有BACKUP_LINK標識符的數據流。

將檔案從磁帶還原到磁碟時,應用程式必須使用 CreateFileBackupWrite ReadFile 函式。 針對磁帶上的每個檔案,應用程式應該使用 CreateFile 在磁碟上建立新的檔案,以及 BackupWrite 開始還原檔案。 然後,應用程式應該重複使用 ReadFile,直到從磁帶讀取到 BackupWrite滿的緩衝區為止。

如果BackupWrite緩衝區中的其中一個數據流具有BACKUP_LINK數據流標識碼,應用程式必須建立硬連結。 如果建立連結所需的數據不存在, BackupWrite 會失敗。 應用程式可以使用預先存在的目錄來尋找和還原原始數據,也可以通知使用者要還原的檔案數據位於不同的位置。