Condividi tramite


Creazione di un'applicazione di backup

Per eseguire input o output su un nastro, un'applicazione di backup deve prima ottenere un handle del dispositivo nastro. L'esempio di codice seguente illustra come usare la funzione CreateFile per aprire un dispositivo nastro.

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

Per eseguire il backup di un albero di directory su un nastro, un'applicazione deve usare le funzioni FindFirstFile e FindNextFile per attraversare l'albero delle directory. Ogni volta che viene trovato un file, l'applicazione deve ottenere gli attributi del file usando la funzione GetFileAttributes.

Se sono presenti collegamenti rigidi, un'applicazione deve determinare il numero di collegamenti e salvare l'identificatore univoco del file in una tabella per i confronti futuri. La prima volta che viene trovato un file, l'applicazione deve usare CreateFile per aprire il file e la funzione BackupRead per avviare il backup. Quindi può usare ripetutamente la funzione WriteFile per trasferire tutte le informazioni nel buffer usato da BackupRead sul nastro. La seconda volta che viene trovato un file (controllato sulla tabella degli identificatori di file quando sono presenti collegamenti rigidi), l'applicazione può scrivere le informazioni generali sul file nel nastro, seguito da un flusso con un identificatore BACKUP_LINK.

Quando si ripristinano file da nastro a disco, un'applicazione deve usare le funzioni CreateFile, BackupWrite e ReadFile. Per ogni file su nastro, l'applicazione deve usare CreateFile per creare un nuovo file su disco e BackupWrite per iniziare a ripristinare il file. L'applicazione deve quindi usare ripetutamente ReadFile finché tutte le informazioni per il file non vengono lette dal nastro nel buffer riempito da BackupWrite.

Se uno dei flussi nel buffer BackupWrite ha un identificatore di flusso BACKUP_LINK, l'applicazione deve stabilire un collegamento rigido. Se i dati necessari per stabilire il collegamento non esistono, BackupWrite ha esito negativo. L'applicazione può usare un catalogo preesistente per individuare e ripristinare i dati originali oppure può notificare all'utente che i dati del file da ripristinare si trovano in un percorso diverso.