Función TapeClassLogicalBlockToPhysicalBlock (minitape.h)
La rutina TapeClassLogicalBlockToPhysicalBlock traduce una dirección de bloque pseudológica a una dirección de bloque físico. Esta rutina es para dispositivos SCSI-1.
Sintaxis
TAPE_PHYS_POSITION TapeClassLogicalBlockToPhysicalBlock(
[in] UCHAR DensityCode,
[in] ULONG LogicalBlockAddress,
[in] ULONG BlockLength,
[in] BOOLEAN FromBOT
);
Parámetros
[in] DensityCode
Especifica el código de densidad de medios de cinta. Esta rutina admite cintas con los siguientes códigos de densidad: QIC_24, QIC_120, QIC_150, QIC_525, QIC_1000, QIC_2GB, QIC_1350 y QIC_2100.
[in] LogicalBlockAddress
Especifica una dirección de bloque pseudológica.
[in] BlockLength
Especifica el tamaño del bloque lógico, en bytes.
[in] FromBOT
TRUE indica que el cálculo del bloque físico debe comenzar al principio de la cinta y tener en cuenta el encabezado del dispositivo físico. FALSE indica que la cinta tiene dos particiones, que la dirección de bloque está en la partición de directorio y, por lo tanto, no es necesario tener en cuenta ningún encabezado de dispositivo físico en el cálculo.
Valor devuelto
TapeClassLogicalBlockToPhysicalBlock devuelve una estructura que contiene la dirección de bloque físico:
struct typedef _TAPE_PHYS_POSITION {
ULONG SeekBlockAddress;
ULONG SpaceBlockCount;
} TAPE_PHYS_POSITION, PTAPE_PHYS_POSITION;
Comentarios
Un controlador de miniclase de cinta llama a TapeClassLogicalBlockToPhysicalBlock para traducir una dirección de bloque lógico de una aplicación a una dirección de bloque físico para un dispositivo de cinta. TapeClassLogicalBlockToPhysicalBlock no es necesario para controladores SCSI-2 o posteriores porque los dispositivos que cumplen con los estándares SCSI-2 o posteriores admiten el direccionamiento de bloques lógicos.
Para colocar una cinta en la dirección de bloque físico devuelta por esta rutina, un controlador de miniclase de cinta emite dos comandos SCSI: un comando LOCATE para colocar la cinta en SeekBlockAddress y, a continuación, un comando SPACE para avanzar en la cinta SpaceBlockCount. El valor spaceBlockCount es necesario si los bloques pseudológicos de la cinta son más pequeños que los bloques físicos; en ese caso, es posible que el límite del bloque lógico no se alinee con un límite de bloque físico.
Si un controlador de miniclase de cinta llama a esta rutina con un código de densidad de cinta no compatible, TapeClassLogicalBlockToPhysicalBlock no realiza ninguna traducción. Devuelve la dirección de bloque lógico en SeekBlockAddress y devuelve cero en SpaceBlockCount.
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Escritorio |
Encabezado | minitape.h (incluya Minitape.h) |
Library | Tape.lib |