Σχηματοποιώντας "διαδρομή 0 κακή" δισκέτα
Αυτό το πρόγραμμα χρησιμοποιείται για να σχηματοποιήσει εκείνες τις δισκέτες που έχουν τους κακούς τομείς στη διαδρομή τους 0 και πότε είναι σχηματοποιημένες με το DOS ή τα Windows, μηνύματα λάθους επίδειξης όπως "τη διαδρομή 0 ΚΑΚΉ". Εντούτοις μπορείτε επίσης να τον χρησιμοποιήσετε στις κανονικές δισκέτες σχήματος.
Η κωδικοποίηση του προγράμματος έχει δοθεί στο δίσκο που περιλαμβάνεται με αυτό το βιβλίο με το όνομα "TTFORMAT. γ". Η λογική εργασίας του προγράμματος είναι ίδια με το πρόγραμμα που δημοσιεύεται στο περιοδικό υπολογιστών PCQUEST, στην έκδοση Φεβρουαρίου 2003.
Σε αυτό το πρόγραμμα, προσπαθούμε να καταστήσουμε αυτόν τον τύπο δισκετών επαναχρησιμοποιήσιμο με τη μορφοποίηση τους. Οι ήχοι προγράμματος ότι μπορείτε να χειριστείτε τη δισκέτα ακόμη και με μερικούς κακούς τομείς σε το. Εντούτοις, εάν ο πρώτος τομέας του δίσκου είναι κακός, η δισκέτα δεν μπορεί να σχηματοποιηθεί.
Το πρόγραμμα ξαναγράφει όλες τις πληροφορίες καταλόγου DBR, του FAT και ρίζας. Εάν υπάρχουν κακοί τομείς στην επιφάνεια του δίσκου, είναι χαρακτηρισμένοι όπως κακοί στο FAT.
Στην κωδικοποίηση του προγράμματος, η δομή BPB χρησιμοποιείται στο συγγραφέα το φραγμό παραμέτρου ΖΩΝΤΑΝΟΎ ΟΝΤΟΣ του DBR. Το boot_sector δομών χρησιμοποιείται για να γράψει το DBR του δίσκου. Η δομή address_field χρησιμοποιείται για την αλληλεπίδραση με τον αριθμό τον κύλινδρο, τα κεφάλια, και τους τομείς ανά διαδρομή και με το μέγεθος του τομέα.
Οι διαφορετικές λειτουργίες που χρησιμοποιούνται στην κωδικοποίηση του προγράμματος και της περιγραφής τους έχουν δοθεί στον πίνακα που δίνεται έπειτα.
Λειτουργία |
Περιγραφή |
Random_VolumeID() |
Αυτή η λειτουργία παρέχει την ταυτότητα όγκου του δίσκου. (Πώς το DOS παράγει ο αύξων αριθμός της δισκέτας έχει συζητηθεί δίπλα σε αυτόν τον πίνακα) |
mark_bad() |
Κακός τομέας των σημαδιών που χρησιμοποιεί τη λειτουργία 04H του INT 13H για να ελέγξει τους τομείς. |
sector_no_to_physical() |
Αυτή η λειτουργία χρησιμοποιείται για να μετατρέψει τον αριθμό τομέων στις διαδρομές, τα κεφάλια και τους τομείς |
format_term() |
Για να ολοκληρώσει τη μορφοποίηση και να βγεί το πρόγραμμα |
write_boot_info() |
Γράφει τον τομέα των μποτών του δίσκου |
set_media_type_for_format() |
Η λειτουργία χρησιμοποιείται για να θέσει τον τύπο MEDIA για το σχήμα χρησιμοποιώντας τη λειτουργία 18H του INT 13H |
volume_label() |
Η λειτουργία παίρνει την ετικέτα όγκου για να γράψει την ετικέτα όγκου του δίσκου |
format() |
Σκουπίζει την επιφάνεια του δίσκου κατά τη διάρκεια της μορφοποίησης καθώς επίσης και του χειρισμού της κακής αρίθμησης τομέων. |
get_drive_parameters() |
Η λειτουργία χρησιμοποιεί το INT 13H, λειτουργία 08H για να πάρει τις παραμέτρους κίνησης. |
mark_bad() |
Φυλάσσει τις πληροφορίες της κακής συστάδας στο σημάδι στο FAT |
ask_for_continue() |
Λειτουργία που επιβεβαιώνει πρίν σχηματοποιεί το δίσκο |
check_bad() |
Λειτουργία που ελέγχει εάν η επιστρεφόμενη θέση είναι κώδικας λάθους για τον ΚΑΚΟ τομέα |
error() |
Αυτή η λειτουργία επιδεικνύει το μήνυμα λάθους για τον αντίστοιχο κώδικα λάθους |
lock_volume() |
Η λειτουργία χρησιμοποιείται για να κλειδώσει το Drive χρησιμοποιώντας το INT 21H, λειτουργία 44H και υπο- λειτουργία 0DH |
unlock_volume() |
Η λειτουργία χρησιμοποιείται για να ξεκλειδώσει το Drive χρησιμοποιώντας το INT 21H, λειτουργία 44H και υπο- λειτουργία 0DH |
physical_to_sector_no() |
Η λειτουργία χρησιμοποιείται για να υπολογίσει τον αριθμό τομέων από τη διαδρομή, το κεφάλι και τον αριθμό τομέα |
Ο αύξων αριθμός όγκου της δισκέτας υπολογίζεται μέχρι το DOS σύμφωνα με την τρέχουσα ημερομηνία και το χρόνο του ρολογιού συστημάτων.
Το πρώτο μέρος του αύξοντος αριθμού υπολογίζεται κατά το ποσό του χρόνου (δευτερόλεπτα και εκατοστά ενός δευτερολέπτου) και της ημερομηνίας (μήνας και ημέρα). Το δεύτερο μέρος του αύξοντος αριθμού είναι ίσο με το ποσό του χρόνου (ώρες και πρακτικά) και της ημερομηνίας (έτος).
Όλοι οι υπολογισμοί εκτελούνται στο δεκαεξαδικό σύστημα. Παραδείγματος χάριν, υποθέστε ότι σχηματοποιήσατε τη δισκέτα στο περιβάλλον DOS στις 11:16:28:65 στο 10/23/2003, Τώρα υπολογίστε τον αύξοντα αριθμό του δίσκου.
Ο χρόνος με (δευτερόλεπτα και εκατοστά των δευτερολέπτων) το σχήμα είναι
= (28 and 65)
= (1CH and 41H)
Write it as 1C41
Ομοίως, η ημερομηνία με (μήνας και ημέρα) το σχήμα είναι
= (10 and 23)
= (0AH and 17H)
Write it as 0A17
Ομοίως, ο χρόνος με (ώρες και πρακτικά) το σχήμα είναι,
= (11 and 16)
= (0BH and 10H)
Write it as 0B10
Και το έτος θα είναι
= 2003
= 07D3
Τώρα, υπολογίστε τον αύξοντα αριθμό της δισκέτας, σύμφωνα με την περιγραφή που δίνεται πριν. Το πρώτο μέρος του αύξοντος αριθμού είναι καλά (1C41 + 0A17) = 2658 και το δεύτερο μέρος του αύξοντος αριθμού θα είναι (0B10 + 07D3) = 12E3.
|
page 1 | 2 | 3 | 4 | 5 | 6 |
|
|
|