TapeClassLogicalBlockToPhysicalBlock 함수(minitape.h)
TapeClassLogicalBlockToPhysicalBlock 루틴은 pseudological 블록 주소를 실제 블록 주소로 변환합니다. 이 루틴은 SCSI-1 디바이스용입니다.
구문
TAPE_PHYS_POSITION TapeClassLogicalBlockToPhysicalBlock(
[in] UCHAR DensityCode,
[in] ULONG LogicalBlockAddress,
[in] ULONG BlockLength,
[in] BOOLEAN FromBOT
);
매개 변수
[in] DensityCode
테이프 미디어 밀도 코드를 지정합니다. 이 루틴은 QIC_24, QIC_120, QIC_150, QIC_525, QIC_1000, QIC_2GB, QIC_1350 및 QIC_2100 포함된 테이프를 지원합니다.
[in] LogicalBlockAddress
pseudological 블록 주소를 지정합니다.
[in] BlockLength
논리 블록 크기(바이트)를 지정합니다.
[in] FromBOT
TRUE 는 물리적 블록 계산이 테이프의 시작 부분에서 시작되고 물리적 디바이스 헤더를 고려해야 했음을 나타냅니다. FALSE 는 테이프에 두 개의 파티션이 있음을 나타내며, 블록 주소가 디렉터리 파티션에 있으므로 실제 디바이스 헤더를 계산에 포함할 필요가 없습니다.
반환 값
TapeClassLogicalBlockToPhysicalBlock 은 물리적 블록 주소를 포함하는 구조를 반환합니다.
typedef 구조체 _TAPE_PHYS_POSITION {
ULONG SeekBlockAddress;
ULONG SpaceBlockCount;
} TAPE_PHYS_POSITION, PTAPE_PHYS_POSITION;
설명
테이프 미니클래스 드라이버는 TapeClassLogicalBlockToPhysicalBlock 을 호출하여 논리 블록 주소를 애플리케이션에서 테이프 디바이스의 실제 블록 주소로 변환합니다. SCSI-2 이상 표준을 준수하는 디바이스는 논리적 블록 주소 지정을 지원하기 때문에 SCSI-2 이상 드라이버에는 TapeClassLogicalBlockToPhysicalBlock이 필요하지 않습니다.
이 루틴에서 반환된 물리적 블록 주소에 테이프를 배치하기 위해 테이프 미니클래스 드라이버는 두 개의 SCSI 명령을 실행합니다. 즉, SEEKBlockAddress에 테이프를 배치하는 LOCATE 명령과 SPACE 명령을 실행하여 테이프 SpaceBlockCount를 진행합니다. 테이프의 pseudological 블록이 실제 블록보다 작은 경우 SpaceBlockCount 값이 필요합니다. 이 경우 논리 블록 경계가 실제 블록 경계와 일치하지 않을 수 있습니다.
테이프 미니클래스 드라이버가 지원되지 않는 테이프 밀도 코드를 사용하여 이 루틴을 호출하는 경우 TapeClassLogicalBlockToPhysicalBlock 은 변환을 수행하지 않습니다. SeekBlockAddress에서 논리 블록 주소를 반환하고 SpaceBlockCount에서 0을 반환합니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 데스크톱 |
머리글 | minitape.h(Minitape.h 포함) |
라이브러리 | Tape.lib |