Fonction TapeClassalBlockToPhysicalBlock (minitape.h)
La routine TapeClassLogicalBlockToPhysicalBlock traduit une adresse de bloc pseudo-logique en adresse de bloc physique. Cette routine concerne les appareils SCSI-1.
Syntaxe
TAPE_PHYS_POSITION TapeClassLogicalBlockToPhysicalBlock(
[in] UCHAR DensityCode,
[in] ULONG LogicalBlockAddress,
[in] ULONG BlockLength,
[in] BOOLEAN FromBOT
);
Paramètres
[in] DensityCode
Spécifie le code de densité du média de bande. Cette routine prend en charge les bandes avec les codes de densité suivants : QIC_24, QIC_120, QIC_150, QIC_525, QIC_1000, QIC_2GB, QIC_1350 et QIC_2100.
[in] LogicalBlockAddress
Spécifie une adresse de bloc pseudo-logique.
[in] BlockLength
Spécifie la taille du bloc logique, en octets.
[in] FromBOT
TRUE indique que le calcul du bloc physique doit commencer au début de la bande et prendre en compte l’en-tête de l’appareil physique. FALSE indique que la bande a deux partitions, que l’adresse de bloc se trouve sur la partition de répertoire et qu’aucun en-tête d’appareil physique ne doit donc être pris en compte dans le calcul.
Valeur retournée
TapeClassalBlockToPhysicalBlock retourne une structure contenant l’adresse de bloc physique :
typedef struct _TAPE_PHYS_POSITION {
ULONG SeekBlockAddress ;
ULONG SpaceBlockCount ;
} TAPE_PHYS_POSITION, PTAPE_PHYS_POSITION ;
Remarques
Un pilote de miniclasse de bande appelle TapeClassLogicalBlockToPhysicalBlock pour traduire une adresse de bloc logique d’une application en adresse de bloc physique pour un périphérique à bande. TapeClassalBlockToPhysicalBlock n’est pas nécessaire pour les pilotes SCSI-2 ou versions ultérieures, car les appareils qui respectent les normes SCSI-2 ou ultérieures prennent en charge l’adressage de blocs logiques.
Pour positionner une bande sur l’adresse de bloc physique retournée par cette routine, un pilote de miniclasse de bande émet deux commandes SCSI : une commande LOCATE pour positionner la bande sur SeekBlockAddress, puis une commande SPACE pour faire avancer la bande SpaceBlockCount. La valeur SpaceBlockCount est nécessaire si les blocs pseudologicaux de la bande sont plus petits que les blocs physiques ; dans ce cas, la limite de blocs logiques peut ne pas s’aligner sur une limite de bloc physique.
Si un pilote de miniclasse de bande appelle cette routine avec un code de densité de bande non pris en charge, TapeClassLogicalBlockToPhysicalBlock n’effectue aucune traduction. Il retourne l’adresse de bloc logique dans SeekBlockAddress et zéro dans SpaceBlockCount.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | minitape.h (inclure Minitape.h) |
Bibliothèque | Tape.lib |